У меня есть два сервера под управлением Keepalived 1.2.7 с именами хостов left
и right
. Вот конфиги:
# keepalived.conf on left
vrrp_instance VI_1 {
state MASTER
interface eth1
virtual_router_id 51
priority 160
advert_int 1
virtual_ipaddress {
10.10.10.200
}
}
# keepalived.conf on right
vrrp_instance VI_1 {
state MASTER
interface eth1
virtual_router_id 51
priority 100
advert_int 1
virtual_ipaddress {
10.10.10.200
}
}
Теперь я цикл питания left
. Вот как выглядят системные журналы с чередованием и аннотациями:
>> started servers <<
Aug 15 19:07:32 left Keepalived[4041]: Starting VRRP child process, pid=4043
Aug 15 19:07:32 right Keepalived[4041]: Starting VRRP child process, pid=4043
Aug 15 19:07:33 left Keepalived_vrrp[4043]: VRRP_Instance(VI_1) Transition to MASTER STATE
Aug 15 19:07:33 right Keepalived_vrrp[4043]: VRRP_Instance(VI_1) Transition to MASTER STATE
Aug 15 19:07:33 right Keepalived_vrrp[4043]: VRRP_Instance(VI_1) Received higher prio advert
Aug 15 19:07:33 right Keepalived_vrrp[4043]: VRRP_Instance(VI_1) Entering BACKUP STATE
Aug 15 19:07:34 left Keepalived_vrrp[4043]: VRRP_Instance(VI_1) Entering MASTER STATE
>> left has 10.10.10.200 <<
>> powered off left <<
Aug 15 19:08:25 right Keepalived_vrrp[4043]: VRRP_Instance(VI_1) Transition to MASTER STATE
Aug 15 19:08:26 right Keepalived_vrrp[4043]: VRRP_Instance(VI_1) Entering MASTER STATE
>> right has 10.10.10.200 <<
>> powered on left <<
Aug 15 19:08:58 left Keepalived[1027]: Starting VRRP child process, pid=1029
Aug 15 19:08:59 left Keepalived_vrrp[1029]: VRRP_Instance(VI_1) Transition to MASTER STATE
Aug 15 19:09:00 left Keepalived_vrrp[1029]: VRRP_Instance(VI_1) Entering MASTER STATE
Aug 15 19:09:00 right Keepalived_vrrp[4043]: VRRP_Instance(VI_1) Received higher prio advert
Aug 15 19:09:00 right Keepalived_vrrp[4043]: VRRP_Instance(VI_1) Entering BACKUP STATE
>> neither has 10.10.10.200 <<
я ожидал left
забрать 10.10.10.200 когда вернулось. Почему нет? Как я могу изменить свой keepalived.conf
s так что это делает?
Вы хотите, чтобы конфигурация "справа" выглядела так:
vrrp_instance VI_1 {
state BACKUP
interface eth1
virtual_router_id 51
priority 100
advert_int 1
virtual_ipaddress {
10.10.10.200
}
В РЕЗЕРВНОЕ КОПИРОВАНИЕ ключевое слово сообщает keepalived, что нужно вернуться к МАСТЕР по мере доступности.
Следующая конфигурация работает, хотя мне все еще любопытно, почему тот, что в моем вопросе, не.
# keepalived.conf on left
vrrp_instance VI_1 {
state BACKUP
interface eth1
virtual_router_id 51
priority 160
advert_int 1
preempt_delay 15
virtual_ipaddress {
10.10.10.200
}
}
# keepalived.conf on right
vrrp_instance VI_1 {
state BACKUP
interface eth1
virtual_router_id 51
priority 100
advert_int 1
preempt_delay 15
virtual_ipaddress {
10.10.10.200
}
}
В этой конфигурации указано, что необходимо повторно выбрать новый мастер через 15 секунд после того, как машина с более высоким приоритетом подключится к сети. Есть объяснение preempt_delay
вариант в списке рассылки.
Одна проблема с этой конфигурацией: если обе машины выйдут из строя, ни одна из них не потребует 10.10.10.200, когда они вернутся. (Это произошло из-за автоконфигурации сети, которую делает Vagrant.)