![HA 代理应继续备份,直到主服务器启动时所有会话都处于活动状态](https://linux22.com/image/664697/HA%20%E4%BB%A3%E7%90%86%E5%BA%94%E7%BB%A7%E7%BB%AD%E5%A4%87%E4%BB%BD%EF%BC%8C%E7%9B%B4%E5%88%B0%E4%B8%BB%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%90%AF%E5%8A%A8%E6%97%B6%E6%89%80%E6%9C%89%E4%BC%9A%E8%AF%9D%E9%83%BD%E5%A4%84%E4%BA%8E%E6%B4%BB%E5%8A%A8%E7%8A%B6%E6%80%81.png)
我有两台服务器,分别是 MainServer 和 BackupServer。其中 MainServer 是主服务器,BackupServer 是备份服务器,我已为其配置了 HA 代理。以下是我的 HA 配置
server sso01 MainServer.net check
server sso01 BackupServer.net check backup
意味着我的所有请求都由 处理,MainServer
直到它启动并运行。MainServer
关闭时,我所有登录的用户都已注销,下一个请求由 处理BackupServer
。现在意味着启动时MainServer
,我希望只有新用户得到 处理MainServer
,而由 处理的用户BackupServer
仍继续处理,BackupServer
直到他们登录。为了识别会话,我在 HA 代理配置的后端添加了以下行
appsession APP_SESION_ID len 40 timeout 3h request-learn
我们在 cookie 中添加了这个 ID。因此,我的请求只会发送到之前为其提供服务的服务器。但在这种情况下,HA 代理roundrobin
一旦启动就会像算法一样工作MainServer
。希望我能让您理解我的情况。
答案1
你需要类似这样的东西......
balance roundrobin
cookie SESSIONID prefix indirect nocache
server sso01 MainServer.net check cookie sso01
server sso02 BackupServer.net check cookie sso02 backup
(更改 SESSIONID 以匹配您的会话 cookie 的名称)
在您的示例中,您的两个服务器具有相同的名称。