在我的场景中,我必须根据包含的 URL 字符串切换服务器&mode=edit
或&mode=create
在我的服务器之间切换服务器以平衡负载。我的配置是通过大约 100 个不同的 URL/IP 脚本创建的。我目前使用一个前端和两个后端的方式相当冗长,大量的健康检查对我的服务器不利...
我怎样才能把这些东西放在一起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
答案1
正确的关键字是use-server
(请注意,这是一个破折号,而不是像 这样的下划线use_backend
。现在我的负载减少了,配置也更小了。我只搜索了类似使用服务器...
这是我的工作示例:
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
如果愿意的话,您还可以在那里使用负载平衡并坚持使用 cookie。