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)
正确的关键字是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。