Как сделать отказоустойчивый LAMP кластер для высоконагруженных WEB-приложений?

Username, как бы ты сделал отказоустойчивый LAMP кластер для высоконагруженных WEB-приложений? Возможно, посоветуешь, что почитать, ткнёшь носом, так сказать.
  • Вопрос задан
  • 1843 просмотра
Пригласить эксперта
Ответы на вопрос 5
leahch
@leahch Куратор тега Linux
3D специалист. Dолго, Dорого, Dерьмово.
Я бы вообще нe использовал AMP, из LAMP! Использовал бы nginzx/redis/python/java/go/mongodb/elasticsearch/go/scala далее везде.
Ну и конечно, все зависит от рук!
Ответ написан
Комментировать
bingo347
@bingo347
Crazy on performance...
В первую очередь сменить Apache на Nginx
Если из php и mysql еще можно выжать какую-то производительность, то из apache это не получится априори
После уже можно задуматься о смене БД на postgresql/mongodb/rethinkdb/elasticsearch (зависит от модели данных)
Ну заодно и исполняющую платформу можно сменить на более шуструю
Производительность 1 такого сервера при прямых руках будет наравне с кластером из 10 LAMP, если и этого не хватит, то вопросов "как сделать кластер" уже по идее возникать не будет
Ответ написан
Комментировать
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
как бы ты сделал отказоустойчивый LAMP кластер для высоконагруженных WEB-приложений?


по поводу производительности

1) пишем нагрузочные тесты
2) прогоняем их и ищим узкие места и думаем что нам с этим делать
3) устраняем узкое место
4) повторяем пункты 2 и 3 до тех пор, пока не получаем приемлимые для нашего приложения цифры (ну то есть что бы удовлетворяло нашим ожиданиям по нагрузкам, это к слову тоже стоит заранее прикинуть с учетом неравномерности распределения пользователей и т.д.).

ПО поводу надежности:

ищим single point of failure. ну то есть если у нас есть база данных - то ее должно быть две на случай если один сервак выйдет из строя. А еще должен быть сверху балансировщик который раскидывает запросы. А что бы невилировать вероятность того, что и балансировщик выйдет из строя - балансировщик на уровне DNS.

ну то есть у вас не должно быть чего-то, что будет критическим местом в системе. Все должно дублироваться на случай падения.
Ответ написан
Комментировать
@azazelpw
Linux SA
Начальный уровень. DynDNS + парочка Frontend серверов + парочка Backend серверов.
В случае отказа основного Front сервера весь трафик перенаправляем на второй. В случае отказа одного Backend весь трафик перенаправляем...
Ну и тут нужно понимать что это должны быть разные физические сервера и связка frontend+backend не должны стоять в одном и том же помещение, с другой связкой. Во избежание риска затопления чтоли :)

Есть похожий вариант, но с виртуализацией. Во время аварии на основной связке, автоматически запускается контейнер с резервной копией.

Как вы понимаете все должно быть автоматизировано, даже переключение ip адресов в DynDNS в таком случае вам не придется срываться в 4 часа утра и разбираться в причине аварии.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы