![对 ipvsadm 服务器的请求挂起在 SYN_RECV 状态,将请求直接发送到真实服务器 OK](https://linux22.com/image/742927/%E5%AF%B9%20ipvsadm%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E8%AF%B7%E6%B1%82%E6%8C%82%E8%B5%B7%E5%9C%A8%20SYN_RECV%20%E7%8A%B6%E6%80%81%EF%BC%8C%E5%B0%86%E8%AF%B7%E6%B1%82%E7%9B%B4%E6%8E%A5%E5%8F%91%E9%80%81%E5%88%B0%E7%9C%9F%E5%AE%9E%E6%9C%8D%E5%8A%A1%E5%99%A8%20OK.png)
我将 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>
这似乎不是真实服务器的配置问题,因为它是所有模式(路由、伪装、隧道)和测试的问题,httpbin.org
而不是我自己的问题。
当底层的“真实服务器”响应正常时,什么原因会导致对 IPVS 的请求挂起或失败,如何调试?