我有一个 AWS 网络 ELB 正在监听并转发到 TCP 443,并且我需要与此负载均衡器一起使用粘性会话。根据这一页似乎只需将目标组的“粘性”属性设置为“已启用”即可实现这一点,我已经这样做了,但是当使用 curl 测试时,此负载均衡器似乎仍在将来自同一主机的连续请求分发到负载均衡器后面的所有服务器。我还需要做什么才能启用粘性吗?不幸的是,由于组织限制,我无法使用应用程序 ELB。
答案1
我刚刚测试了这一点,可以确认目标群体粘性确实按预期发挥作用。请在您的测试设置中检查以下内容:
您的客户端的公共 IP 是否可能在测试期间发生变化?这是您运行 curl 的系统。粘性与客户端 IP 相关联。如果客户端 IP 发生变化,其请求可能会转到另一台服务器。
测试期间,您的任何后端实例的健康状态是否发生了变化。这可能会重置目标组的粘性。
测试期间是否有任何实例手动或通过自动扩展组加入或离开目标组?这可能会重置目标组的粘性。
侦听器和目标组的协议都是 TCP(不是 TLS)吗?AWS ELB 文档说:
TLS 侦听器和 TLS 目标组不支持粘性会话。
- 再次确认目标组确实启用了粘性。您可以通过在 EC2 控制台中打开目标组来检查这一点:
为了记录,这是我的测试设置:
- 1 个网络 LB 和 2 个
t2.micro
位于 ap-south-1b 中。 - NGINX 在两个实例上运行,重新配置为监听端口 443 上的 HTTP(非 HTTPS)流量。
- 1 个 NLB 监听器监听端口 443 上的 TCP(非 TLS)流量并将其转发到目标组的端口 443。
- 使用目标类型为实例和 IP 的目标组进行测试。只要启用了粘性,客户端流量就会一直流向同一实例。