首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用HAProxy分组网络会话

用HAProxy分组网络会话
EN

Server Fault用户
提问于 2013-02-26 21:39:36
回答 1查看 383关注 0票数 4

我想用HAProxy加载平衡web请求。问题是,我希望特定用户组总是访问同一台服务器。(这是一个多人系统,同一组中的用户需要在同一台服务器上)。只要具有相同组id的用户在同一台服务器上,用户就可以访问任何服务器。服务器甚至可以更改(例如,如果服务器崩溃),但是该组的所有用户都必须切换到新服务器。应用服务器将用cookie标识用户的分组。

作为一个具体的例子,假设我的应用程序有一个编号为1..10000的cookie GROUP_ID。GROUP_ID=1可能有3个不同的用户,GROUP_ID=2有不同的3个用户,让我们假设我在服务器上设置了负载平衡: app1、app2、app3。

我想看到的是类似这样的东西:

  • 所有GROUP_ID=1用户都会使用app1
  • 所有GROUP_ID=2用户都会使用app2
  • 所有GROUP_ID=3用户都会使用app3
  • 所有GROUP_ID=4用户都会使用app1
  • 所有GROUP_ID=5用户都会使用app2

等。

如果服务器app1变成无响应,那么我希望看到app1用户在app2和app3之间重新分布。(如果所有的团体都被重组,那就没问题了)。来自特定组的所有用户仍应位于公共服务器上。

显然,对站点的初始请求不会有cookie,但是一旦用户进行身份验证,就会分配cookie。

HAProxy是否支持这种自定义负载平衡?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2013-03-04 23:57:49

1)设置一个HAPROXY前端,包括:

  • 您的认证专用后端(登录到游戏)。验证时,设置一个名为“GROUPID”的cookie。( GROUPID=GID3)用于那个http连接。(注意:你也可以把那个“不高兴”作为参数传递给一个URL和/或设置到期时间,等等)
  • 用于游戏服务器的专用后端,具有以下指令: cookie GROUPID插入间接nocache

2)将服务器(在后端)设置为(注意:可以删除check部分):

代码语言:javascript
复制
server APP01 10.0.0.5:80 cookie GID3 check inter 5000 rise 2 fall 3 maxconn 2048

server APP02 10.0.0.6:80 cookie GID4 check inter 5000 rise 2 fall 3 maxconn 2048

(...)

作为进一步的参考,HAPROXY的文档是相当明确的(http://haproxy.1wt.eu/download/1.4/doc/configuration.txt)

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/482781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档