Бесперебойная работа серверов при выходе из строя сервера, на котором находится балансировщик нагрузки
Ситуация: в локальной сети компьютер 1 и компьютер 2, на обоих запущено одинаковое вэб-приложение. Ещё на на компьютере 2 установлен балансировщик нагрузки nginx. Если компьютер 1 выйдет из строя, то балансировщик nginx перенаправит трафик на компьютер 2 - то есть на тот компьютер, на котором он (nginx) и находится. Но если из строя выйдет компьютер 2, то вместе с ним упадёт и nginx - тогда вэб-приложение прекратит работать. Как решить эту проблему, если роутер направляет порт на компьютер 2?
Можно ли как-то перенаправлять трафик на компьютер 1?
Я пытался решить эту задачу разными способами от написания скрипта, который при падении компьютера 1 заходит в админ-панель роутера и меняет порты до написания скрипта, подменяющего IP компьютера 1 на IP компьютера 2 (когда компьютер 2 выходит из строя)
Если что, оба компьютера на Windows, но решения под Linux тоже подойдут так как планирую перейти на него
Ответы (2 шт):
Функциональность, которая обеспечивает автоматическое переключение машин с вышедшего из строя хоста на работающий, называется High Availability (HA) "ВЫсокая доступность", можно рассмотреть на примере Proxmox. Несколько серверов Proxmox объединяются в кластер (минимум 3 для кворума). ВМ и контейнеры хранятся на общем сетевом хранилище (Ceph, NFS, iSCSI, Fibre Channel), доступном всем узлам кластера. Сеть так же общая объединенная мостом. Специальная служба HA на каждом узле постоянно отслеживает состояние всех узлов кластера контейнеров (сервисов). Если узел перестает отвечать (сбой железа, ОС, сети), кластер через кворум определяет его как вышедший из строя и автоматически перезапускаются (обычно за 1-3 минуты) на другом работающем узле кластера.
В описанной конфигурации вполне подойдёт реализация VRRP. Оно изначально для резервирования маршрутизатора, но вполне применяется там где нужно небольшими усилиями обеспечить доступность IP адреса в L2 сегменте сети.
То есть:
- настраиваете на обоих компьютерах VRRP с дополнительным виртуальным IP адресом в локальной сети
- перенастраиваете проброс портов роутера, чтобы входящий трафик отправлялся не на IP одного или другого компьютера, а на этот виртуальный IP
- готово, при отказе того из компьютеров, где в это время был поднят виртуальный IP, спустя небольшое время VRRP анонсирует виртуальный IP на втором компьютере