在后端使用 acl/缩小我的配置

Max*_*Max 5 load-balancing haproxy

在我的场景中,我必须根据包含的 url 字符串&mode=edit&mode=create在我的服务器之间切换服务器以平衡负载。我的配置是通过脚本从大约 100 个不同的 urls/ip 创建的。我目前使用一个前端和 2 个后端的方式很长,大量的健康检查对我的服务器不利......

我怎样才能把这些东西放在一起listen而不是frontend?我无法弄清楚如何在侦听中使用 ACL 来确定要使用的服务器。

frontend myFrontend

    bind 127.0.0.1:80
    bind 127.0.0.1:443 ssl crt /etc/haproxy/ssl/myFrontend/myFrontend.pem
    redirect scheme https if !{ ssl_fc }
    use_backend myBackend-edit if { url_sub &mode=edit } or { url_sub &mode=create }
    default_backend myBackend

backend myBackend

    server srv1 1.1.1.1:10201 cookie srv1 ssl check
    server srv2 2.2.2.2:10201 cookie srv1 ssl check backup
    server srv3 3.3.3.3:10201 cookie srv1 ssl check backup

backend myBackend-edit

    server srv1 1.1.1.1:10201 cookie srv1 ssl check backup
    server srv2 2.2.2.2:10201 cookie srv1 ssl check backup
    server srv3 3.3.3.3:10201 cookie srv1 ssl check
Run Code Online (Sandbox Code Playgroud)

Max*_*Max 7

正确的关键字是use-server(请注意,这是一个破折号,而不是像 那样的下划线use_backend。现在我的负载减少了,配置更小了。我只搜索了像use_server 之类的东西......

所以这是我的工作示例:

listen myFrontend

    bind 127.0.1.1:80
    bind 127.0.1.1:443 ssl crt /etc/haproxy/ssl/myFrontend/myFrontend.pem
    redirect scheme https if !{ ssl_fc }
    use-server srv2 if { url_sub &mode=edit } or { url_sub &mode=create }
    server srv1 1.1.1.1:10201 cookie srv1 ssl check
    server srv2 2.2.2.2:10201 cookie srv1 ssl check backup
    server srv3 3.3.3.3:10201 cookie srv1 ssl check backup
Run Code Online (Sandbox Code Playgroud)

如果您愿意,您也可以在那里使用负载平衡并坚持使用 cookie。

来源:haproxy 联机帮助页| 或使用漂亮的:)