Я пытаюсь создать балансировщик нагрузки с использованием виртуального IP. Я сослался на эту ссылку Балансировщик нагрузки с использованием виртуального IP. После настройки по ошибке я сначала запустил службу поддержки активности резервного сервера, а затем запустил службу поддержки активности главного сервера. Проблема в том, что поддержка активности резервного сервера работает нормально, но я не могу запустить поддержку активности главного сервера. Я попытался удалить keepalived и установить снова, но это не сработало. Вот файлы конфигурации
Главный Сервер
vrrp_script chk_haproxy {
script "killall -0 haproxy" # verify the pid existance
interval 2 # check every 2 seconds
weight 2 # add 2 points of prio if OK
}
vrrp_instance VI_1 {
interface eth0 # interface to monitor
state MASTER
virtual_router_id 51 # Assign one ID for this route
priority 101 # 101 on master, 100 on backup
virtual_ipaddress {
192.168.0.54 # the virtual IP
}
track_script {
chk_haproxy
}
}
Сервер резервного копирования
vrrp_script chk_haproxy {
script "killall -0 haproxy" # verify the pid existance
interval 2 # check every 2 seconds
weight 2 # add 2 points of prio if OK
}
vrrp_instance VI_1 {
interface eth0 # interface to monitor
state MASTER
virtual_router_id 51 # Assign one ID for this route
priority 100 # 101 on master, 100 on backup
virtual_ipaddress {
192.168.0.54 # the virtual IP
}
track_script {
chk_haproxy
}
}
Вывод главного сервера при запуске службы поддержки активности
$ sudo service keepalived start
* Starting keepalived keepalived [fail]
Вывод резервного сервера при запуске службы поддержки активности
$ sudo service keepalived start
* Starting keepalived keepalived [Ok]
Есть ли у кого-нибудь предложение, что я здесь делаю не так?
Обновление по комментариям: Журнал главного сервера:
cat /var/log/syslog | grep VRRP_Instance
Here it does not prints anything which mean that the keepalived does not start on Master server
Журнал серверов резервного копирования:
cat /var/log/syslog | grep VRRP_Instance
Mar 27 02:39:22 ubuntu keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
Mar 27 02:39:23 ubuntu keepalived_vrrp: VRRP_Instance(VI_1) Entering to MASTER STATE
Mar 27 02:39:38 ubuntu keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
Mar 27 02:39:39 ubuntu keepalived_vrrp: VRRP_Instance(VI_1) Entering to MASTER STATE
Mar 27 02:52:16 ubuntu keepalived_vrrp: VRRP_Instance(VI_1) Received higher prio advert
Mar 27 02:52:16 ubuntu keepalived_vrrp: VRRP_Instance(VI_1) Entering to BACKUP STATE
Еще одна вещь: после обращения к веб-сайту я изменил состояние в файле keepalived.conf сервера резервного копирования на состояние BACKUP.
state MASTER
может быть установлен только один узел. В качестве альтернативы оба установлены на state BACKUP
, Он будет автоматически выбран в МАСТЕР по приоритету.
Вы неправильно сконфигурировали свой экземпляр VRRP. У тебя есть state MASTER
на обоих узлах, но у вас может быть только один мастер. Установите сервер резервного копирования на state BACKUP
и это будет работать. В целом правила довольно простые:
То же самое на обоих серверах:
Разные на обоих серверах:
Было бы полезно, если бы вы могли повторно опубликовать свою текущую конфигурацию. Может, стоит попробовать.
Главный сервер
vrrp_script chk_haproxy {
script "pidof haproxy" # check the pid not kill it
interval 2 # check every 2 seconds
weight 2 # add 2 points of prio if OK
}
vrrp_instance VI_1 {
interface eth0 # interface to monitor
state MASTER
virtual_router_id 51 # Assign one ID for this route
priority 150 # 150 on master, 100 on backup
unicast_peer {
<backup ip address>
}
virtual_ipaddress {
192.168.0.54 # the virtual IP
}
track_script {
chk_haproxy
}
}
Сервер резервного копирования
Все то же самое, что и мастер, но поменять
state BACKUP
priority 100
unicast_peer {
<master ip address>
}
убедитесь, что вы разрешаете протокол VRRP (IP proto 112) между главным и резервным. Проверьте состояние каждого из них в /var/run/keepalived.INSTANCE.VI_1.state. Убедитесь, что haproxy запускается до поддержки активности.