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

Используйте два хостинга веб-сайтов для большей доступности

У меня есть два VPS сервера от двух разных хостинговых компаний. Я хочу вернуться ко второму VPS, если первый недоступен (желательно автоматически). Я понимаю, что если у меня есть один балансировщик нагрузки с корневым доступом, я могу настроить его для переключения между разными внутренними серверами. Но возможно ли это сделать с VPS от двух разных хостинговых компаний? Спасибо.

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

Небольшой рисунок, чтобы было понятно:

                                  +-----------+
                             +--->| Backend 1 |
        +----------------+   |    +-----------+
WAN --->| Loadbalancer 1 |---+
        +----------------+   |    +-----------+
                |            +--->| Backend 2 |
                | Fallback        +-----------+
                v
        + - - - - - - - -+
        | Loadbalancer 2 |
        + - - - - - - - -+

Объяснение

Балансировщик нагрузки стоит перед всеми внутренними серверами и проксирует все запросы на внутренние серверы. Вторичный балансировщик нагрузки также остается в сети и проверяет, доступен ли основной балансировщик. Если в любом случае первичный балансировщик нагрузки выйдет из строя, вторичный балансировщик нагрузки перейдет на его IP-адрес и начнет обслуживание.

Преимущества (этой конфигурации)

  • Балансировщик нагрузки распределяет трафик без особой нагрузки и, таким образом, может обслуживать больше пользователей, чем внутренние серверы [1]
  • Балансировщик нагрузки может определить, не может ли серверная часть больше обрабатывать трафик, и может прекратить отправку трафика туда [2]
  • Loadbalancer может кэшировать статические файлы для бэкэнда.
  • Балансировщик нагрузки может отключить SSL [3] [4]
  • Если балансировщик нагрузки выходит из строя, он может переключиться на вторичный балансировщик без простоя [5] [6]

Недостатки

  • Это приносит больше денег
  • Это не помогает, если сеть перед балансировщиком выходит из строя.

Сноски

[1] Конечно, балансировщику нагрузки требуется больше пропускной способности, чем сумма максимальной пропускной способности внутренних серверов (это не обязательно максимальная пропускная способность интерфейса в зависимости от приложения)

[2] Это не только хорошо. Если оба серверных модуля находятся на максимальной мощности или близки к своей, и балансировщик нагрузки отключит один, другой сервер получит весь трафик, и все это развалится. Это требует хорошей настройки

[3] Фактически, балансировщик нагрузки должен сделать это, если он не хочет направлять трафик вслепую через соединение.

[4] Возможно, вам придется восстановить новое ssl-соединение после beckend, если вы не доверяете серверной сети

[5] Вы должны убедиться, что когда основной выходит из строя, он остается выключенным до тех пор, пока вы не захотите его снова включить, чтобы предотвратить такие вещи, как переключение и двукратное использование IP-адресов.

[6] Вы должны убедиться, что соединение между балансировщиками нагрузки очень стабильное.

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

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

Примерная конфигурация может быть такой:

  • смонтировать раздел DRBD на оба сервера
  • переместите conf / web / db в раздел drbd
  • изменить настройки DNS, поскольку он выполняет циклический перебор на двух серверах

Я делаю следующие предположения:

  • у вас не так много обновлений (возможно, вы снизите пропускную способность сети)
  • сайт не магазин

В любом случае, в этой конфигурации нет автоматического обнаружения сбоев и ответа.

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

Резервный DNS

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

На рынке довольно много поставщиков, предоставляющих этот тип услуг (Amazon Route 53, DNS Made Easy ...). Кроме того, вы получите более быструю систему DNS (всемирно известные DNS-серверы с произвольным прослушиванием).

Но - это не высокая доступность! В случае сбоя требуется некоторое время, чтобы распознать сбой и настроить DNS. Но, возможно, этого уже достаточно для ваших требований.

Возможно, уже слишком поздно, чтобы это было полезно, потому что у вас уже есть настроенный VPS (хотя я не знаю, с какими провайдерами)

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

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