HAProxy - 客户端请求持续切换服务器

HAProxy - 客户端请求持续切换服务器

我已经使用 HAProxy 配置了软件负载均衡器。

  • 以下是详细信息:
    1. 负载均衡器 1(主) - 10.0.0.2
    2. 负载均衡器 2(从属) - 10.0.0.3
    3. 负载均衡器共享的虚拟 IP 是 - 10.0.0.1
    4. 带有 Apache 的 Web 服务器 1:10.0.0.4
    5. 带有 Apache 的 Web 服务器 2:10.0.0.5
    6. 带有 Apache 的 Web 服务器 3:10.0.0.6

我能够通过配置的虚拟 IP(即 10.0.0.1)访问所有 Web 服务器上托管的网站

但是,当我刷新浏览器时,服务器会从一个切换到另一个。此外,还出现错误“503服务不可用“,当刷新时,也会转到另一台服务器。

以下是HAProxy.conf文件内容[主负载均衡器]:

global
        log 127.0.0.1 local0  err
        ulimit-n 50000
        maxconn 24000
        nbproc 1
        stats socket /tmp/haproxysock
        user haproxy
        group haproxy
        daemon

defaults
        log global
        mode    http
        option  httplog
        maxconn 5000
        contimeout 5000
        clitimeout 50000
        srvtimeout 50000

frontend UNBoxFrontEnd
        bind 10.0.0.1:80
        option http-server-close
        default_backend UNBoxBackEnd

backend UNBoxBackEnd
        option httpchk HEAD / HTTP/1.1\r\nHost:localhost
        hash-type consistent
        cookie JSESSIONID prefix
        server WebServer1 10.0.0.4:80 cookie Web1 check
        server WebServer2 10.0.0.5:80 cookie Web2 check
        server WebServer3 10.0.0.6:80 cookie Web3 check

listen web-cluster         10.0.0.1:80
        bind *:1936
        balance roundrobin
        stats enable
        stats scope UNBoxFrontEnd
        stats scope UNBoxBackEnd
        stats scope wordpress-backend
        stats uri /haproxy?stats
        stats realm Haproxy\ Statistics
        stats auth test:test
        stats admin if TRUE
        errorfile    400    /etc/haproxy/errors/400.http
        errorfile    403    /etc/haproxy/errors/403.http
        errorfile    408    /etc/haproxy/errors/408.http
        errorfile    500    /etc/haproxy/errors/500.http
        errorfile    502    /etc/haproxy/errors/502.http
        errorfile    503    /etc/haproxy/errors/503.http
        errorfile    504    /etc/haproxy/errors/504.http

您能否帮助我使客户端始终重定向到单个 Web 服务器,除非该服务器出现故障。

提前致谢!

答案1

您的问题出balance roundrobin在 HAProxy.cfg 中的行。这告诉 HAProxy 在所有可用节点之间进行循环。将其更改为其他内容(详见haproxy 文档),你应该得到你想要的行为。

对于后人而言,(在我看来)“平衡”指令最受欢迎的选项是:

  • roundrobin- 经典的循环平衡。
  • static-rr- 通过禁用某些功能可以允许使用更多服务器的变体。
  • leastconn- 首先平衡到具有最少连接数的服务器。
  • source- 对源 IP 地址进行哈希处理并据此进行平衡。
  • uri- 对部分或全部 URI 进行哈希处理,并据此进行平衡。

相关内容