У меня есть два балансировщика нагрузки с Debian 8 и три сервера Graylog с Debian 9.
Каждый сервер в моей сети отправляет журналы через rsyslog на виртуальный сервер, настроенный на LB. Соединение - UDP.
Проблема в том, что пакеты не сбалансированы . (все соединения идут на первый реальный сервер в списке)
В случае аварийного переключения пакеты правильно отправляются на другие реальные серверы.
Единственный способ, который я нашел для повторной балансировки соединения, - это удалить весь реальный сервер из LB и перезапустить службу keepalived.
Я уже установил:
ipvsadm --set 0 0 1
Timeout (tcp tcpfin udp): 900 120 1
Я уже установил эти две переменные:
echo 1 > /proc/sys/net/ipv4/vs/expire_nodest_conn
echo 1 > /proc/sys/net/ipv4/vs/expire_quiescent_template
IPVS настроен следующим образом:
vrrp_instance logserver {
state MASTER
interface eth0
virtual_router_id 195
priority 200
advert_int 1
authentication {
auth_type keepalived
auth_pass xxxxxx
}
virtual_ipaddress {
10.20.20.195/22
}
}
virtual_server 10.20.20.195 0 {
delay_loop 60
protocol UDP
lb_algo wrr
lb_kind DR
persistence_timeout 30
real_server 10.20.20.196 0 {
weight 100
MISC_CHECK {
connect_timeout 3
misc_path "/etc/keepalived/checkgraylog 10.20.20.196"
}
}
real_server 10.20.20.197 0 {
weight 100
MISC_CHECK {
connect_timeout 3
misc_path "/etc/keepalived/checkgraylog 10.20.20.197"
}
}
real_server 10.20.20.198 0 {
weight 100
MISC_CHECK {
connect_timeout 3
misc_path "/etc/keepalived/checkgraylog 10.20.20.198"
} } }
Есть ли способ эффективно сбалансировать UDP-соединение с прямой маршрутизацией? Спасибо
virtual_server 10.20.20.195 12333 {
delay_loop 60
protocol UDP
lb_algo wrr
lb_kind DR
ops # <<< - Try this. Works for me (Ubuntu 18.04, Keepalived v1.3.9, ipvsadm v1.28)
real_server 10.20.20.196 12333 {
Опция ops
для меня работает, только если:
fwmark
используется вместе с в определении виртуального_сервера. Не работает для формы virtual_server_IP 0
— в этом случае ipvsadm -Ln
показывает, что также используется опция persistent
.