在 haproxy.cfg 中合并后端块的重复项

在 haproxy.cfg 中合并后端块的重复项

我有这个 HAProxy 配置,正如你所见,我在backends 中有很多重复的内容。有没有办法消除诸如 这样的重复内容stats

global
    log 127.0.0.1 local0
    log 127.0.0.1 local1 notice
    daemon
    maxconn 2000

defaults
    log global
    mode http
    option httplog
    option dontlognull
    retries 3
    option redispatch
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms

frontend http-in
    bind *:80
    acl url_a path_reg ^\/a$|\/a\/
    use_backend webservers_a if url_a
    acl url_b path_reg ^\/b$|\/b\/
    use_backend webservers_b if url_b
    default_backend webservers_main

backend webservers_main
    mode http
    stats enable
    stats auth admin:admin
    stats uri /haproxy?stats
    balance roundrobin
    option httpchk
    option forwardfor
    option http-server-close
    server web1 192.168.50.21:80 maxconn 32 check

backend webservers_a
    mode http
    stats enable
    stats auth admin:admin
    stats uri /haproxy?stats
    balance roundrobin
    option httpchk
    option forwardfor
    option http-server-close
    server web2 192.168.50.22:80 maxconn 32 check

backend webservers_b
    mode http
    stats enable
    stats auth admin:admin
    stats uri /haproxy?stats
    balance roundrobin
    option httpchk
    option forwardfor
    option http-server-close
    server web3 192.168.50.23:80 maxconn 32 check

答案1

您可以在配置中添加类似以下内容:

listen stats
    bind ${PRIVATE_IP}:${PORT}
    stats enable
    stats uri /stats
    stats auth admin:admin
  • 我假设以下几点:

  • 您不想让stats公众知道您的信息。如果不想,只需将您的统计数据移至现有frontend指令中即可。

  • ${PRIVATE_IP}用您机器上可用的私有 IP(或为此设置一个)和未使用的端口替换${PORT},例如8080

  • 警告:如果您使用的端口与80stats 指令中的不同,则必须stats通过在 中指定端口来调用页面url。为了防止和避免这种情况:

    • 将您的 绑定frontend${PUBLIC_IP}:80,并将您的listen stats部分绑定到${PRIVATE_IP}:80

相关内容