我们有一个在 websocket 连接上运行的移动游戏客户端,我们想使用 HAProxy 作为负载均衡器。主要有两个条件:
- 根据 url 参数 ID(32 到 64 个字符之间的可变字符串)设置粘性会话,然后根据最少连接选择服务器
- 如果没有 ID 参数,请选择第一个或默认服务器
以下是处理第一个情况的示例配置:
backend app
balance leastconn
stick-table type string len 64 size 5M expire 30m
stick store-request url_param(ID) table app
stick on url_param(ID) table app
server app1 127.0.0.1:5001 check
server app2 127.0.0.1:5002 check
问题是粘性会话无法按预期工作,无法连接到上次连接的服务器。您能提供一些改进建议,理想情况下可以满足第二个条件吗?
我们正在使用 CentOS SCL 提供的 HAProxy 版本 1.8.17。
提前致谢。