Поддержка активности пересылки трафика UDP на один узел через NAT
У меня проблемы с балансировкой нагрузки UDP Syslog для узлов кластера Graylog. Сначала казалось, что все работает нормально, но кажется, что трафик передается на 99% на один из двух узлов.
У меня есть два сервера Ubuntu (18.04) под управлением Keepalived 1.3.9. Они разделяют виртуальный IP-адрес, который используется через VRRP. Они используют NAT для пересылки трафика на реальные серверы на основе циклического перебора.
global_defs {
notification_email {
redacted@mail
}
notification_email_from severname-redacted
smtp_server mailsever.redacted
smtp_connect_timeout 30
router_id servername
}
vrrp_instance VI_1 {
state MASTER
interface ens160
virtual_router_id 216
priority 200
advert_int 1
preempt_delay 30
virtual_ipaddress {
10.18.242.216
}
notify /usr/local/bin/vrrp_state.sh
}
virtual_server 10.18.242.216 10514 {
delay_loop 2
protocol UDP
lb_algo rr # round robin
lb_kind NAT # NAT
real_server 10.18.242.214 10514 {
weight 1
HTTP_GET {
url {
path "/api/system/lbstatus"
status_code 200
}
connect_timeout 3
connect_port 9000
}
}
real_server 10.18.242.213 10514 {
weight 1
HTTP_GET {
url {
path "/api/system/lbstatus"
status_code 200
}
connect_timeout 3
connect_port 9000
}
}
}
Вторичный балансировщик нагрузки использует ту же конфигурацию, за исключением приоритета 100.
Аварийное переключение между балансировщиками нагрузки работает, как и ожидалось, но они, похоже, перенаправляют трафик только на первый узел Graylog:
oot@redacted-lb1:~# ipvsadm -L -n --rate
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port CPS InPPS OutPPS InBPS OutBPS
-> RemoteAddress:Port
UDP 10.18.242.216:10514 0 57 0 16581 0
-> 10.18.242.213:10514 0 67 0 19666 0
-> 10.18.242.214:10514 0 0 0 0 0
Как видите, на вторичный узел Graylog нет трафика, хотя вес равен и мы используем циклический перебор. Некоторые неполадки, которые не сработали:
- При удалении первого узла из балансировщиков нагрузки вы видите, что трафик все еще поступает на LB, но он не перенаправляется на узел Graylog
- Изменение веса, кажется, не имеет эффекта
- Перезагрузка всех серверов
- Выполнение всех тех же тестов на вторичном LB путем выключения LB1.
Узлы Graylog работают нормально и практически идентичны по конфигурации. Вы можете отправить системный журнал им обоим напрямую, чтобы они не были проблемой.