当使用 haproxy 对 ldap 服务器进行负载平衡时,是否可以实现会话粘性?
示例:我有一个 lb,它负载平衡到两个后端 ldap 服务器。这对于读取来说工作得很好,但是如果您使用目录工作室浏览树,或者实施 pam,它会导致 pam 出错,并且它会在目录工作室中进行身份验证时返回。
我希望当用户访问负载均衡器的 IP 时,lb 将用户绑定到一个后端服务。
答案1
我建议为此在 HAProxy 中使用 stick 表。
一个很好的参考资料https://cbonte.github.io/haproxy-dconv/1.7/configuration.html#stick在
实际上你可以做这样的事情:
backend ldap
mode tcp
balance roundrobin
stick-table type ip size 200k expire 30m
stick on src
server s1 192.168.1.1:389
server s2 192.168.1.2:389
答案2
您可以根据源 IP 进行路由,因此如果您的管理员(使用目录工作室)使用静态 IP 或位于“管理员”网络段上,您只需制定一条规则,始终将它们发送到其中一台服务器,这也将使记录他们的会话变得更容易。
除了来源之外,我还没有看到基于任何其他因素的 TCP 会话持久性好的解决方案。分析 TCP 数据包,如果您在数据包中找到有助于识别会话的内容,HA 代理很可能能够根据该内容进行路由。
前端 ft-public-mysql-in 绑定 192.168.3.1:53 模式 tcp 选项 tcplog acl 路由1源 192.168.2.0 acl 路由2 源 192.168.1.0 use_backend bkserver_pool if route1 use_backend bkserver_1 if route2