Я понимаю, что целью балансировщиков нагрузки является балансировка нагрузки между вашими серверами и отслеживание работоспособности экземпляров и т. Д. Но что, если сам балансировщик нагрузки выходит из строя? Как настроить резервные балансировщики нагрузки? (балансировка нагрузки балансировки нагрузки?)
Я мог понять, как проверки работоспособности DNS могут быть полезны, но есть очевидные проблемы с задержкой, не так ли?
Это предполагает, что вы не используете сторонние сервисы, такие как AWS ELB или что-то подобное. Что делать, если вы просто используете, скажем, Nginx?
Ответы:
Существует несколько способов достижения высокой доступности (высокой доступности) балансировщика нагрузки - или в отношении любой услуги. Предположим, у вас есть две машины с IP-адресами:
Пользователи подключаются к IP-адресу, поэтому вы хотите отделить IP-адрес от определенного поля - например, создать виртуальный IP-адрес. Этот IP будет 192.168.100.100.
Теперь вы можете выбрать сервис HA, который позаботится об автоматическом восстановлении после сбоя / восстановлении IP-адреса. Некоторые из самых простых сервисов для Unix: (u) carp и keepalived, некоторые из более сложных - например, RedHat Cluster Suite или Pacemaker.
Давайте возьмем keepalived в качестве примера - две службы keepalived, каждая из которых работает на своей собственной машине, и они взаимодействуют друг с другом. Это общение часто называют биением сердца.
Если один keepalived перестает отвечать (либо служба отключается по какой-либо причине, либо ящик отскакивает, либо выключается) - keepalived на другом блоке заметит пропущенные тактовые импульсы и предположит, что другой узел не работает, и предпримет действия по восстановлению после сбоя. Это действие в нашем случае будет поднимать плавающий IP.
Наихудший случай, который может произойти в этом случае, - потеря сеансов для клиентов, но они смогут восстановить соединение. Если вы хотите избежать этого, два балансировщика нагрузки должны иметь возможность синхронизировать данные сеанса между ними, и если они могут это сделать, пользователи не заметят ничего, кроме, возможно, сломанной короткой задержки.
Еще одна ловушка этой настройки - разделение мозгов - когда оба блока подключены к сети, но связь разорвана, и оба блока вызывают один и тот же IP-адрес. Это часто решается с помощью какого-то механизма ограничения (резервирование SCSI, перезапуск IPMI, интеллектуальное отключение питания PDU, ...) или нечетного числа узлов, требующих, чтобы большинство членов кластера были активны для запуска службы.
Более сложное программное обеспечение для управления кластерами (например, Pacemaker) может перемещать весь сервис (например, останавливать его на одном узле и запускать на другом) - и таким образом достигается HA для таких сервисов, как базы данных.
Другой возможный способ - если вы управляете маршрутизаторами рядом с вашими балансировщиками нагрузки, - это использовать ECMP. Этот подход также позволяет горизонтально масштабировать балансировщики нагрузки. Это работает, когда каждая из ваших двух коробок говорит BGP с вашим маршрутизатором (ами). Каждое поле должно объявлять виртуальный IP (192.168.100.100), и маршрутизатор будет загружать трафик баланса через ECMP. Если машина умирает, она прекращает рекламировать VIP, что, в свою очередь, не дает маршрутизаторам отправлять трафик на нее. Единственное, о чем вы должны позаботиться в этой настройке, - остановить рекламу IP, если сам балансировщик нагрузки умирает.
источник
Использование Nginx в качестве балансировщика нагрузки должно позволить вам выполнить перенаправление, подробно описанное в этом посте, изменив конфигурацию для определения времени ожидания отсутствия ответа:
Автоматическое распределение нагрузки при отказе nginx
Теоретически, если у вас есть среда высокой доступности, кластеризация с несколькими балансировщиками нагрузки должна позволять поддерживать обслуживание в случае сбоя.
Надеюсь это поможет.
источник
Аппаратные балансировщики нагрузки поддерживают установки «активный / пассивный» или «активный / активный» в течение многих лет, в обоих случаях они затем устанавливаются параллельно с точки зрения уровня 1/2 ... активный / пассивный использует механизмы мониторинга / поддержки активности, как описано , активный / активный может быть реализован различными способами. Чтобы отображаться как один IP-адрес во внешнем интерфейсе, два или более балансировщика могут, если они все / оба подключены к сети, выполнять следующие действия:
А затем измените их режим на прием всего или большего трафика, когда связь с устройством-партнером потеряна.
на внутренней стороне:
источник