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

Используйте HAProxy или Nginx для балансировки нагрузки между VPS

Я хочу балансировать нагрузку + резервное копирование при отказе нескольких веб-серверов vps, размещенных на разных провайдерах.

Я слышал, что для HAProxy вам нужно несколько серверов в одной подсети, а также общий (виртуальный) IP-адрес между балансировщиками нагрузки.

Но в моем случае это невозможно, потому что каждый VPS находится на другом узле / сети.

  1. Есть ли способ использовать HAProxy в такой настройке? ( Объясните, пожалуйста, насколько коротко, я не хочу слышать ваш ответ "ДА" )
  2. А как насчет NginX? Можно ли добиться такого же результата с Nginx? (когда серверы расположены в разных сетях)

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

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

Для балансировки нагрузки у вас есть:
DNS -> IP-адрес службы -> Балансировщик нагрузки -> AppSrv1, AppSrv2, ..., AppSrvn -> Один или несколько бэкэндов

Для высокой доступности (HA) у вас есть:

  • Активный пассивный:
    Нормальная рабочая ситуация:
    DNS -> IP-адрес виртуальной службы (назначается на LB1) -> AppSrv1, AppSrv2, ..., AppSrvn -> Один или несколько бэкэндов Если LoadBalancer1 (LB1) ломается:
    Hartbeat назначает VirtualIP для LB2
    DNS -> IP-адрес виртуальной службы (назначается на LB2) -> AppSrv1, AppSrv2, ..., AppSrvn -> Один или несколько бэкэндов
  • Активный / Активный:
    DNS -> VirtIP1 (LB1), VirtIP2 (LB2), VirtIPn (LBn) -> AppSrv1, AppSrv2, ..., AppSrvn -> Один или несколько бэкэндов

По сути, Load Balancer создает хэши на основе IP-адреса клиента и перенаправляет весь трафик с этим хешем в тот же AppSrv (для сохранения сеансов и т. Д.). Вы можете настроить предпочтительный AppSrv, отказоустойчивый AppSrv и т. Д.

Вы можете настроить LB на всех своих VPS, которые перенаправляют трафик на локальный AppSrv (тот же VPS), и, если этот AppSrv недоступен, перенаправить на «резервный» VPS. Но есть проблемы с такой реализацией на очень многих уровнях ...

Вы имеете в виду разные фермы, расположенные в разных районах?

Затем вы должны направить их через DNS в конкретную географическую ферму, где HAProxy может балансировать нагрузку:

webfarm1 -> HAProxy -> appsrv ..

webfarm2 -> HAProxy -> appsrv ..

Вы также можете балансировать нагрузку между vps, распределенными по географическим регионам, но конечный результат не будет таким хорошим: такие серверы установки обычно статический контент, такой как CDN.

Вы перепутали HSRP / VRRP / LVS с HAProxy. Виртуальный IP-адрес полностью отделен от HAProxy.

Если вам нужен единый общий IP-адрес между двумя разными провайдерами VPS, вы не можете. Лучшее, что вы можете сделать, это получить два VPS от одного и того же провайдера, запустить heartbeat + haproxy на обоих, тогда у них могут быть IP-адреса в одной подсети.