我在两台机器上的基于 Go 的 docker 服务前面运行了一个弹性负载均衡器。每次我重新启动 Go 服务时,来自某些客户端的初始连接都会花几分钟时间,然后失败并重试,最终成功。这不是健康检查(总共约 1 分钟),奇怪的是它似乎是按机器或按会话进行的。
此时我的空闲超时设置为 1 秒。
例如,在健康检查良好之后:
- 我会在 Chrome 中强制刷新页面,它会立即加载
- 我将尝试从同一台计算机卷曲页面,但它将挂起(并且我不会在服务器日志中看到访问)
- 我将尝试 curl 单个服务,它会立即起作用
- 我将尝试从移动客户端连接,但超时了
- 我将使用另一台计算机进行 curl,它有效
我是不是漏掉了什么?我没有启用粘性会话,但我觉得每个会话都应该立即生效。ELB 连接是否存在某种基于客户端的限制?
答案1
在这种特殊情况下,问题在于弹性负载均衡器被设置为在多个子网中运行,并且某些子网不可公开访问,因此某些请求被路由到错误的 IP。
造成这种混乱的原因是因为我们误解了 ELB 上的子网设置的含义。
因此请检查您的子网!