Я использую keepalived для обеспечения доступности между двумя серверами Alma 8 Nginx (размещенными на VMWare, если это имеет какое-либо значение). Когда firewalld включен, несмотря на то, что для VRRP установлено расширенное правило, когда я включаю firewalld, оба хоста начинают отвечать по виртуальному IP:
root@dca-nfs01:~# арпинг 172.31.5.233
60 байт с 00:50:56:84:ac:d0 (172.31.5.233): индекс=39 время=1,960 мкс
60 байт от 00:50:56:84:ac:d0 (172.31.5.233): индекс=40 время=20,660 мкс
60 байт от 00:50:56:84:52:ed (172.31.5.233): индекс=41 время=24,930 мкс
60 байт от 00:50:56:84:ac:d0 (172.31.5.233): индекс=42 время=534,616 мс
60 байт от 00:50:56:84:52:ed (172.31.5.233): индекс=43 время=534,646 мс
Моя конфигурация keepalived взята из стандартного шаблона туториала и выглядит следующим образом:
[root@dca-ngx01-al ~]# cat /etc/keepalived/keepalived.conf
global_defs {
# идентификатор поддерживаемого процесса
router_id nginx
}
# Скрипт для проверки, запущен Nginx или нет
vrrp_script check_nginx {
скрипт "/sbin/pidof nginx"
интервал 2
вес 50
}
# Виртуальный интерфейс. Приоритет определяет порядок, в котором назначенный интерфейс должен взять на себя управление при аварийном переключении.
vrrp_instance VI_01 {
состояние МАСТЕР
интерфейс ens192
виртуальный_маршрутизатор_id 151
приоритет 110
# Виртуальный IP-адрес, общий для двух веб-серверов NGINX, который будет плавающим
виртуальный_ipaddress {
172.31.5.233
}
track_script {
check_nginx
}
аутентификация {
auth_type AH
секрет auth_pass
}
}
Оба устройства имеют простой однозонный брандмауэр, и я добавил расширенное правило, разрешающее связь VRRP между двумя хостами:
[root@dca-ngx01-al ~]# firewall-cmd --list-all
публичный (активный)
цель: по умолчанию
icmp-инверсия блока: нет
интерфейсы: ens192
источники:
сервисы: dhcpv6-клиент http https ssh
порты: 10050/TCP
протоколы:
вперед: нет
маскарад: нет
форвард-порты:
исходные порты:
icmp-блоки:
богатые правила:
значение протокола правил = "vrrp" принять
Я также установил net.ipv4.ip_forward = 1
в /etc/sysctl.conf
.
Когда firewalld остановлен на обоих серверах, keepalived ведет себя правильно, но когда он включен, обе стороны теряют связь друг с другом и просто отправляют повторяющиеся необоснованные пакеты ARP:
â keepalived.service — монитор высокой доступности LVS и VRRP
Загружено: загружено (/usr/lib/systemd/system/keepalived.service; включено; предустановка поставщика: отключена)
Активно: активно (работает) с пт 25 марта 2022 г., 12:48:25 по Гринвичу; 2ч 35мин назад
Процесс: 7140 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
Процесс: 12966 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (код=выход, статус=0/УСПЕХ)
Основной PID: 12967 (сохранение активности)
Заданий: 2 (лимит: 11406)
Память: 1,8 м
CGroup: /system.slice/keepalived.service
ââ12967 /usr/sbin/keepalived -D
ââ12968 /usr/sbin/keepalived -D
25 марта, 15:08:15 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Отправка необоснованного ARP на ens192 для 172.31.5.233
25 марта, 15:08:15 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Отправка необоснованного ARP на ens192 для 172.31.5.233
25 марта, 15:08:15 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Отправка необоснованного ARP на ens192 для 172.31.5.233
25 марта, 15:08:15 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Отправка необоснованного ARP на ens192 для 172.31.5.233
25 марта, 15:08:18 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: (VI_01) Отправка/постановка в очередь необоснованных ARP на ens192 для 1>
25 марта, 15:08:18 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Отправка необоснованного ARP на ens192 для 172.31.5.233
25 марта, 15:08:18 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Отправка необоснованного ARP на ens192 для 172.31.5.233
25 марта, 15:08:18 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Отправка необоснованного ARP на ens192 для 172.31.5.233
25 марта, 15:08:18 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Отправка необоснованного ARP на ens192 для 172.31.5.233
25 марта, 15:08:18 dca-ngx01-al.REDACTED.local Keepalived_vrrp[12968]: Отправка необоснованного ARP на ens192 для 172.31.5.233
Однако из использования TCPDump я вижу, что обычные пакеты VRRP с другого хоста, по крайней мере, попадают в сетевой интерфейс, когда firewalld активен:
tcpdump: подробный вывод подавлен, используйте -v или -vv для полного декодирования протокола
прослушивание по ens192, тип канала EN10MB (Ethernet), размер захвата 262144 байт
15:25:21.532300 IP dca-ngx02-al.REDACTED.local > vrrp.mcast.net: AH(spi=0xac1f05e5,seq=0x3160): VRRPv2, реклама, vrid 151, приоритет 150, тип авторизации ah, интервал 1 с, длина 20
15:25:22.532419 IP dca-ngx02-al.REDACTED.local > vrrp.mcast.net: AH(spi=0xac1f05e5,seq=0x3161): VRRPv2, реклама, vrid 151, приоритет 150, тип авторизации ah, интервал 1 с, длина 20
15:25:23.532476 IP dca-ngx02-al.REDACTED.local > vrrp.mcast.net: AH(spi=0xac1f05e5,seq=0x3162): VRRPv2, реклама, vrid 151, приоритет 150, тип аутентификации ah, интервал 1 с, длина 20
15:25:24.532544 IP-адрес dca-ngx02-al.REDACTED.local > vrrp.mcast.net: AH(spi=0xac1f05e5,seq=0x3163): VRRPv2, реклама, vrid 151, приоритет 150, тип аутентификации ah, интервал 1 с, длина 20
Есть ли у кого-нибудь идеи относительно того, как я могу устранить эту проблему?
Заранее спасибо.