Разделить мозг с помощью Keepalived
У меня есть keepalived, который пытается удерживать VIP в конфигурации главный / подчиненный на 2 серверах.
Главный конфиг:
vrrp_script chk_haproxy {
script "/usr/bin/killall -0 haproxy"
interval 2
weight 2
}
vrrp_instance NAME {
interface ens224
state MASTER
virtual_router_id 70
priority 104
virtual_ipaddress {
SOME_IP
}
track_script {
chk_haproxy
}
}
Конфигурация ведомого:
vrrp_script chk_haproxy {
script "/usr/bin/killall -0 haproxy"
interval 2
weight 2
}
vrrp_instance scc_elastic {
interface ens224
state BACKUP
virtual_router_id 70
priority 103
virtual_ipaddress {
SOME_IP
}
track_script {
chk_haproxy
}
}
Но это вызывает расщепление мозга... то есть каждый из серверов показывает IP-адрес в "ip addr show". Как я могу предотвратить это? Я не знаю, как это диагностировать. У меня нет большого опыта работы с сетями.
Посмотрел таблицы ip:
Цепочка INPUT (policy ACCEPT) target prot opt source destination
Цепочка FORWARD (policy ACCEPT) target prot opt source destination
Цепочка OUTPUT (policy ACCEPT) target prot opt source destination
Правил нет.
1 ответ
Убедитесь, что у вас правильная конфигурация ядра:
sudo sysctl -p
Результат:
net.ipv4.ip_forward = 1
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.vs.conntrack = 1
Вам необходимо убедиться, что трафик vrrp поступает на ведомое устройство от ведущего устройства, например
sudo tcpdump -i ens224 host master_ip_address && proto vrrp
Результат:
14:45:25.207338 IP master_ip_address > vrrp.mcast.net: VRRPv2, Advertisement, vrid 51, prio 101, authtype simple, intvl 10s, length
Убедитесь, что iptables разрешает VRRP и многоадресную рассылку, за исключением случаев, когда вы используете одноадресную рассылку:
sudo iptables -I INPUT -d 224.0.0.0/8 -j ПРИНЯТЬ
sudo iptables -I INPUT -p vrrp -j ACCEPT