HAProxy+;Netty:tcp检查使Netty抛出;“对等端重置连接”;例外

HAProxy+;Netty:tcp检查使Netty抛出;“对等端重置连接”;例外,tcp,netty,thrift,haproxy,Tcp,Netty,Thrift,Haproxy,我正在使用Facebook运行一个基于TCP的节俭应用程序。我想对请求进行负载平衡,因此我尝试将HAProxy设置为负载平衡器。负载平衡部分工作得很好。服务器检查部分实际上工作得很好。如果我关闭一台服务器,HAProxy会看到它并将流量引导到另一台 不起作用的是tcp检查选项。它发出的每个请求都会迫使Netty抛出java.io.IOException:Connection reset by peer异常 所以,HAProxy正在关闭连接,Netty还在聊天。但奇怪的是,tcp检查expect

我正在使用Facebook运行一个基于TCP的节俭应用程序。我想对请求进行负载平衡,因此我尝试将HAProxy设置为负载平衡器。负载平衡部分工作得很好。
服务器检查部分实际上工作得很好。如果我关闭一台服务器,HAProxy会看到它并将流量引导到另一台

不起作用的是
tcp检查
选项。它发出的每个请求都会迫使Netty抛出
java.io.IOException:Connection reset by peer
异常

所以,HAProxy正在关闭连接,Netty还在聊天。但奇怪的是,
tcp检查expect binary 5550\UP
正在工作

以下是我的配置文件供参考:

defaults
    mode tcp
    timeout connect 5000ms
    timeout client 50000ms

listen thrift
    bind *:9090
    mode tcp
    balance roundrobin
    option tcpka
    retries 3
    option tcp-check
    tcp-check send-binary 80010001000000135379734f7073536572766963653a636865636b0000000000
    # tcp-check expect string UP
    tcp-check expect binary 5550 # UP
    server thrift01 127.0.0.1:4444 check inter 10s
    server thrift02 127.0.0.1:5555 check inter 10s
    timeout connect 20s
    timeout server 30s
同样,连接也起作用。负载平衡工作。常规SYN/ACK检查工作正常。但是,当我打开
tcp检查时,服务器上会出现错误

[2016-10-06 17:47:17,586] [nifty-server-worker-5]  ERROR c.f.nifty.core.NiftyExceptionLogger - Exception triggered on channel connected to /127.0.0.1:39010
java.io.IOException: Connection reset by peer
    at sun.nio.ch.FileDispatcherImpl.read0(Native Method)
    at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39)
    at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223)
    at sun.nio.ch.IOUtil.read(IOUtil.java:192)
    at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380)
    at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:64)
    at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:108)
    at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:337)
    at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)
    at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
    at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)
    at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
谢谢