Назад | Перейти на главную страницу

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

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

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

Я ценю любой совет, так как я новичок в разработке / настройке сервера.

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

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

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

Другие вещи:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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