IPVS настроен как:
$ ipvsadm --save
-A -t localhost:<port> -s rr
-a -t localhost:<port> -r <other_hostname>:<port> -m -w 1
Кажется, что он работает:
$ ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP localhost:<port> rr
-> <other_hostname>:<port> Masq 1 1 0
, но 1
ActiveConn зависает бесконечно, в то время как прямой запрос быстро отвечаети как и ожидалось:
$ curl https://<other_hostname>:<port>
<response>
$ curl https://localhost:<port>
[hangs]
Ничто не кажется неправильным в dmesg
:
$ dmesg | grep IPVS
[ 4795.060820] IPVS: Registered protocols (TCP, UDP, SCTP, AH, ESP)
[ 4795.060932] IPVS: Connection hash table configured (size=4096, memory=64Kbytes)
[ 4795.061202] IPVS: ipvs loaded.
[ 4795.067663] IPVS: [rr] scheduler registered.
И ничего в journalctl
из ipvsadm
.
Кажется, он застрял в состоянии SYN_RECV
:
$ ipvsadm -lnc
IPVS connection entries
pro expire state source virtual destination
TCP 00:56 SYN_RECV 127.0.0.1:58322 127.0.0.1:<port> <other_ip>:<port>
Что может привести к зависанию или сбою запроса к IPVS, когда «реальные серверы», лежащие в его основе, отвечают «ОК», икак это можно отладить?