Docker 使用 Chrome 进行 Swarm 负载平衡测试

Docker Swarm load balance testing using Chrome

我试过像 Docker tutorial part 3 那样做简单的单节点群,我发现如果我使用 curl 那么我会在两个副本之间跳转,但是如果我使用 Chrome 然后一旦我打开页面,所有后续请求都将由同一个副本处理。我确定我实际上只按了一次,因为计数器只增加 1。

这是怎么回事?它是 Docker Swarm 负载平衡中的某种功能吗?如果是这样,它将如何工作?没有特定请求 headers 发送到服务器,那么负载均衡器如何识别我?它不能是 IP,因为如果我使用隐身模式,我将由不同的副本处理,只要我处于隐身状态,我就会坚持使用它。

这不是 Swarm 的东西,而是 chrome 的东西。 Curl 的行为与您预期的一样,每个命令都是一个新的 TCP 请求,显示为通过 Swarm VIP 负载平衡器的新连接。

Chrome(和其他浏览器)有很多方法可以为将来的请求(HTTP keep-alives 等)保持 TCP 连接打开。这就是为什么它将保持连接到同一个容器的原因,因为连接通过 LB 到副本是持久的。 LB 只会转移到新连接的 "next in the round-robin pool"。