使用HAProxy粘性表实现不同后端的持久性吗?

时间:2019-05-05 15:31:08

标签: haproxy sticky-session

在尝试使用棍子表进行持久化时,我遇到了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不同,并且取决于请求中的路径。

在这种情况下如何使用棍子表?

0 个答案:

没有答案