HAProxy 令人困惑的 503 错误

HAProxy 令人困惑的 503 错误

尽管两个后端服务器完全正常,并且对各个服务器的重复检查没有返回任何错误,但几乎 1/4 的对 HAProxy 实例的请求都会因 503 错误而失败。

PHP 5.3 FPM、Nginx、Ubuntu 10.10、HAProxy 1.4.8

以下是我的 haproxy.cfg:

global
    log 127.0.0.1   local0
    log 127.0.0.1   local1 notice
    #log loghost    local0 info
    maxconn 4096
    #chroot /usr/share/haproxy
    user    haproxy
    group   haproxy
    daemon
    #debug
    #quiet

defaults http
    log         global
    mode        http
    option      httplog
    option      dontlognull
    retries     3
    option      redispatch
    maxconn     2000
    contimeout  5000
    clitimeout  50000
    srvtimeout  50000
    errorfile   400 /etc/haproxy/errors/400.htm
    errorfile   403 /etc/haproxy/errors/403.htm
    errorfile   408 /etc/haproxy/errors/408.htm
    errorfile   500 /etc/haproxy/errors/500.htm
    errorfile   502 /etc/haproxy/errors/502.htm
    errorfile   503 /etc/haproxy/errors/503.htm
    errorfile   504 /etc/haproxy/errors/504.htm

listen www 0.0.0.0:80
    mode    http
    balance roundrobin
    option  redispatch
    cookie  JSESSIONID prefix
    stats   enable
    stats   auth user:pass
    option  httpclose
    option  forwardfor
    option  httpchk HEAD /health HTTP/1.0
    server  web1 x.x.x.x:8080 weight 1 cookie web1 check inter 1000
    server  web2 y.y.y.y:8080 weight 2 cookie web2 check inter 1000

答案1

您的服务器的 IP 地址错误,两个都是 0.0.0.0 !这意味着连接将被转发到 haproxy 接收连接的同一 IP,因此我可以推断您的两台服务器中的一台与 haproxy 在同一主机上运行。

请修复该问题并检查您的日志。它可能不会修复您的 503,但它会让您恢复到可能正常工作的合理配置。然后,如果您仍然看到 503,请检查您的日志,以便我们找出 haproxy 遇到问题的原因。大多数情况下,503 是由于无法连接到服务器而导致的。您向他们发送的连接数很可能超出了他们可以接受的范围。在这种情况下,请在您的“服务器”行上使用“maxconn”设置,这将启用流量调节以防止溢出。

相关内容