У меня есть два балансировщика нагрузки с 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-соединение с прямой маршрутизацией? Спасибо