我有一个奇怪的情况,请求我的HAProxy返回一个503. HAProxy日志显示它返回一个NOSRV错误:
Mar 26 19:47:01 localhost haproxy[23910]: 10.0.0.30:34261 [26/Mar/2013:19:46:48.579] fe v2/<NOSRV> 12801/-1/-1/-1/12801 503 212 - - SC-- 0/0/0/0/0 0/0 "GET /path/v2/ HTTP/1.1"
在此期间,后端服务器被确认并正在接收来自内部负载平衡器的stream量。 这件事情自发地发生,没有任何configuration或HAProxy的其他变化。 重新启动HAProxy解决了这个问题。
有谁知道这是一个已知的问题? 感谢您的帮助/见解。
谢谢。
我的configuration如下所示:
global maxconn 1000 # Total Max Connections. This is dependent on ulimit daemon nbproc 1 # Number of processing cores. Dual Dual-core Opteron is 4 cores for example. log 127.0.0.1 local1 defaults mode http clitimeout 60000 timeout server 300000 contimeout 4000 option httpclose # Disable Keepalive backend v2 server v2Elb internal-xxx.us-west-1.elb.amazonaws.com:80 weight 1 maxconn 512 check backend v2e server v2eElb 10.0.1.28:80 weight 1 maxconn 512 check frontend fe bind :80 option httpchk option forwardfor # This sets X-Forwarded-For option httplog log global acl v2e path_beg /path/v2e acl v2 path_beg /path/v2 redirect location https://my.domain.com/path/v2/ if !v2e !v2 use_backend v2e if v2e use_backend v2 if v2
我从给定的configuration中注意到,您正在运行AWS ELB负载均衡器v2
v2e
,我猜测v2e
直接指向应用服务器(否则会在ELB后面)?
如果是这样,这将告诉我,随着503错误,您的HAProxy实例和ELB之间的连接正在达到超时,无论是4秒的contimeout
超时或300秒的server
超时。 更有可能的是4秒钟的contimeout
和错误的零星进一步证实,这可能是HAProxy和ELB之间的networking问题。
我会尝试增加contimeout
值以及监视HAProxy和ELB之间的延迟。