在尝试使用棍子表进行持久化时,我遇到了HAProxy的困难。我在该活动HAProxy节点中设置了两个后端,这些后端提供聊天服务,每个后端只有一个服务器。另一个后端用于另一个与原始HAProxy相似的被动HAProxy节点,并在故障转移情况下工作。如果两个后端之一发生故障,该请求将路由到另一个HAProxy,并由该后端以被动模式提供服务。如果在被动HAProxy为会话提供服务时主动HAProxy节点中的后端又回来了,则该请求自然不会在该HAPRoxy后端上持久存在,而是由主动HAProxy节点的后端来满足。我想要的是通过该被动HAProxy后端继续为会话提供服务,以使聊天保持全状态。 当我阅读粘性表时,在具有相同后端的多个服务器上使用它们是合乎逻辑的,但是我想在多个后端上使用它们,因此我决定哪个后端应根据请求的位置来处理该请求。第一名。 下面是用于我的设置的示例代码:
frontend
bind *:80
acl local_server1_is_down nbsrv(server1) lt 1
acl local_server2_is_down nbsrv(server2) lt 1
acl is_server1 path_beg /server1
acl is_server2 path_beg /server2
use_backend server1 if is_server1 ! local_server1_is_down
use_backend server2 if is_server2 ! local_server2_is_down
default_backend passive_haproxy
#serve requests coming from the other HAProxy
frontend haproxy
mode http
bind *:8080
acl local_server1_is_down nbsrv(server1) lt 1
acl local_server2_is_down nbsrv(server2) lt 1
acl is_server1 path_beg /server1
acl is_server2 path_beg /server2
use_backend server1 if is_server1 ! local_server1_is_down
use_backend server2 if is_server2 ! local_server2_is_down
backend passive_haproxy
mode http
server pass_haproxy passivehaproxy.net:8080
backend server1
mode http
reqrep ^([^\ ]*\ /)server1[/]?(.*) \1\2
server server1 server1.net:3999 check
backend server2
mode http
reqrep ^([^\ ]*\ /)server2[/]?(.*) \1\2
server server2 server2.net:3999 check
注意:server1和server2不同,并且取决于请求中的路径。
在这种情况下如何使用棍子表?