我遇到了一种奇怪的情况,对我的 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"
在此期间,后端服务器已确认正常运行,并正在接收来自内部负载均衡器的流量。此情况是自发发生的,无需对 HAProxy 进行任何配置或其他更改。重新启动 HAProxy 即可解决此问题。
有人知道这是否是一个已知问题吗?感谢您的帮助/见解。
谢谢。
我的配置如下:
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
答案1
我从给定的配置中注意到您正在 AWS ELB 负载均衡器前面运行v2
,我猜测它v2e
直接指向应用服务器(否则将位于 ELB 后面)?
如果是这样,那么我认为,除了 503 错误之外,您的 HAProxy 实例与 ELB 之间的连接还遇到了超时,contimeout
超时时间为 4 秒或 300 秒server
。超时时间更有可能是 4 秒contimeout
,而且错误的偶发性进一步证实,这很可能是 HAProxy 与 ELB 之间的网络问题。
我会尝试增加该contimeout
值并监控 HAProxy 和 ELB 之间的延迟。