моя конфигурация поддержки активности работает некорректно.
У меня есть две виртуальные машины для тестирования (виртуальный бокс), чтобы попробовать кое-что с keepalived / vrrp. Бот может безупречно пинговать друг друга (внутренняя сеть виртуальных ящиков).
ВМ 1 (МАСТЕР):
eth0: Management
eth1: 192.168.2.1/24
eth2: 192.168.2.2/24
keepalived.conf:
vrrp_instance test {
state MASTER
interface eth1
track_interface {
eth2
}
virtual_router_id 1
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.3.1/24 dev eth1
192.168.3.2/24 dev eth2
}
}
tcpdump on eth1:
12:44:54.720119 IP 192.168.2.1 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 1, prio 101, authtype simple, intvl 1s, length 24
12:44:55.049465 IP 192.168.2.3 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 1, prio 100, authtype simple, intvl 1s, length 24
tcpdump on eth2:
12:46:21.082264 IP 192.168.2.1 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 1, prio 101, authtype simple, intvl 1s, length 24
12:46:21.494239 IP 192.168.2.3 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 1, prio 100, authtype simple, intvl 1s, length 24
ВМ 2 (РЕЗЕРВНОЕ КОПИРОВАНИЕ):
eth0: Management
eth1: 192.168.2.3/24
eth2: 192.168.2.4/24
keepalived.conf:
vrrp_instance test {
state BACKUP
interface eth1
track_interface {
eth2
}
virtual_router_id 1
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.3.1/24 dev eth1
192.168.3.2/24 dev eth2
}
}
tcpdump on eth1:
12:53:12.265456 IP 192.168.2.1 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 1, prio 101, authtype simple, intvl 1s, length 24
12:53:12.670635 IP 192.168.2.3 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 1, prio 100, authtype simple, intvl 1s, length 24
tcpdump on eth2:
12:53:34.397374 IP 192.168.2.1 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 1, prio 101, authtype simple, intvl 1s, length 24
12:53:34.787327 IP 192.168.2.3 > vrrp.mcast.net: VRRPv2, Advertisement, vrid 1, prio 100, authtype simple, intvl 1s, length 24
После запуска keepalived на ВМ 2 он мгновенно переходит в состояние мастера, чего не должно быть.
Почему это происходит?
Являются eth1
и eth2
в одной физической (виртуальной-физической) подсети? Если нет, то кажется немного странным, что у вас есть два разных интерфейса на каждом хосте с IP-адресами в одной подсети, и что вы назначаете IP-адреса каждому из интерфейсов, находящихся в одной подсети. Предлагаю попробовать:
VM 1: eth1 - 192.168.101.2/24, eth2 - 192.168.102.2/24
VM 2: eth1 - 192.168.101.3/24, eth2 - 192.168.102.3/24
VRRP: eth1 - 192.168.101.1/24, eth2 - 192.168.103.1/24
Это помещает адреса на каждом из интерфейсов в одни и те же подсети, но в разные подсети из других интерфейсов на том же хосте. Я не уверен, что это вызывает проблемы, но похоже, что может, так как ваши хосты будут иметь два разных маршрута к одной и той же подсети, что может сбивать с толку keepalived
и / или VRRP. Я думаю, что в целом VRRP работает на таких вещах, как маршрутизаторы Cisco, например - вы увидите виртуальный IP-адрес, а затем физические IP-адреса двух устройств, все в одной подсети.
Другая вещь, которая, кажется, рекомендуется в keepalived
Документация заключается в том, чтобы разделить приоритетные точки на 50 пунктов, поэтому установите MASTER на 150 и BACKUP на 100.