负载平衡:我的问题与此相关,但提供的信息很少:如何根据登录用户名重定向到不同的服务器? 我在同一个数据中心有三 (3) 台云服务器。这三台服务器提供类似的内容,但只有一台服务器拥有为其他服务器提供服务的数据库。有没有办法根据用户的 IP 地址或用户名在 Apache 或 nginx 上将传入请求定向或重定向到特定服务器?云服务提供商提供的负载平衡服务可能有用,但财务成本让我考虑其他替代方案。文档位于https://www.nginx.com/resources/glossary/load-balancing/陈述了目标“IP 哈希 – 客户端的 IP 地址用于确定哪个服务器接收请求。” - 这是目标,但我想在数据库上确认它们在正确的服务器上。如果有任何 PHP 脚本也可以做到这一点,请帮忙
答案1
您链接的 mod_proxy 上的 Server Fault 实现了这一点。stickysession
配置中设置的 cookie 名称是route
列表中要查找的节点 ID。第一个请求可以发送到任何服务器。然后该后端将它们登录并设置会话。
您提到了源 IP,但我找不到 mod_proxy 的模块。其他负载均衡器也有此算法。
如果您的 3 个应用服务器相同,那么哪个用户登录到哪里就无关紧要了。如果您希望强制执行此操作,则需要在您的应用中添加一个检查,以确保会话信息与此节点匹配。决定在这种错误情况下该怎么做。