Назад | Перейти на главную страницу

Конфигурация keepalived некорректно работает с виртуальными машинами vms

моя конфигурация поддержки активности работает некорректно.

У меня есть две виртуальные машины для тестирования (виртуальный бокс), чтобы попробовать кое-что с 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.