Как настроить веб-сайт на нескольких веб-серверах (с балансировщиком нагрузки)?

Я пытаюсь использовать два веб-сервера для запуска своего сайта (в отличие от одного, который я использую сейчас). Я могу легко создать еще один стек LEMP на моем хостинг-провайдере (Digital Ocean) и настроить балансировщик нагрузки для направления трафика на оба сервера по принципу round-robin, но я не знаю, как запустить один и тот же код на обоих веб-серверах.

Например: Я знаю, что могу загрузить те же php-файлы на второй веб-сервер, но если я захочу отредактировать php-файл, мне придется вручную редактировать файл на обоих дроплетах. Есть ли способ настроить второй веб-сервер как своего рода зеркало, чтобы он запускал код на первом веб-сервере?

Буду признателен за любые советы, так как я новичок в разработке/конфигурации серверов.

0
задан 20 November 2018 в 00:00
3 ответа

Для правильной работы балансировщика нагрузки вам потребуется несколько вещей. Похоже, что вас больше всего интересует, как разместить правильный код на каждом сервере. К счастью, это самая простая часть!

Используйте веб-службу контроля версий.

Существует множество вариантов размещения, и вы даже можете разместить свой собственный, если хотите.
Выбор системы контроля версий может быть менее открытым; Настоятельно рекомендуется использовать git, хотя SVN в порядке и немного быстрее изучается.
Использование размещенного контроля версий не означает, что ваш код должен быть публичным, хотя, если вы хотите, чтобы ваш код был приватным, вам нужно выяснить, как ваши серверы будут его читать. Подробнее об этом позже.
В заключение,скажите своим серверам загрузить код из репозитория. Вы можете сделать это один раз, понимая, что каждый раз, когда вы вносите изменения, вам нужно будет снова вводить ssh в поля, чтобы сообщить им об обновлении, или вы можете настроить задание cron, чтобы они постоянно обновлялись.

Другое:

Ваш балансировщик нагрузки должен определить, отключается ли один из серверов. Похоже, у вас под рукой есть управляемый балансировщик нагрузки, поэтому, вероятно, в него встроены инструменты для этой цели.

Вам нужно какое-то общее постоянное хранилище. Во-первых, и только для некоторых систем, ваша БД должна находиться на отдельном сервере. (Создание резервной БД - это отдельная тема.) В зависимости от ваших потребностей этого часто бывает достаточно.

Вам нужна система для обработки секретных данных конфигурации. Например, не рекомендуется хранить учетные данные БД (или учетные данные для управления версиями) в системе управления версиями. Вы можете обновлять их вручную или можете заняться чем-то более сложным.

Я замалчил множество деталей передовой практики, которые имеют значение , как для краткости, так и потому, что то, что подходит вам, зависит от вашей ситуации. Я также пренебрегал множеством очень хороших коммерческих вариантов решения этих проблем, как потому, что я пытаюсь предложить небольшие изменения в вашей текущей настройке, так и потому, что капитализм - это болезнь.

2
ответ дан 4 December 2019 в 13:23

Подумайте, почему вы хотите использовать два веб-сервера в первую очередь .....

Вероятно, основной: более высокая доступность ... даже если один веб-сервер выйдет из строя, другой подхватит резерв.

Если у вас есть весь сайт на одном сервере, это лишает вас цели повышения доступности, которую вы пытаетесь достичь. Таким образом, для безопасности каждый веб-сервер должен иметь копию одного и того же кода для выполнения.

Проблемы, связанные с этой проблемой, заключаются в хранении и извлечении любых данных из базы данных. Если вы не используете общий сервер для этих серверов. Затем оба веб-сервера могут подключаться к внутреннему серверу. Если вы зависите от какого-либо кеширования, это может быть проблемой (например, параметры сеанса или ранее прочитанные данные).

В зависимости от того, какова ваша конечная цель ... решение будет либо довольно простым, либо ошеломляюще сложным.

0
ответ дан 4 December 2019 в 13:23

Вы задали простой вопрос, вот простой ответ.

Я полагаю, что вы не какой-то "гига-мега" сайт, простите меня за это.

Вы можете просто добавить CRON задание для веб-файлов rsync каждую минуту или 5 или любое другое расписание, которое, по вашему мнению, прекрасно, зная, как часто вы будете менять файлы, или файлы будут загружаться через Интернет.

Кроме того, вам следует или нужно запустить другой сервер, который будет действовать в качестве сервера БД, если он у вас есть.

Итак, оба сервера имеют одинаковые данные, вы можете расширить их до конфигурации БД «главный-подчиненный», но я верю, что с вами все будет в порядке.

После того, как у вас будет третий сервер, вы готовы включить раундробин и запустить балансировщик нагрузки.

Я уверен, что балансировщик нагрузки DigitalOcean имеет липкие сеансы, за исключением случаев, когда у вас есть сеансы.

Вы бы сказали, что я понял ваш вопрос?

0
ответ дан 4 December 2019 в 13:23

Теги

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