不,即使在同一节点上运行多个容器,路由网格也确实在所有容器之间分配请求。
您不会在股票
nginx图像中看到它,因为它配置了高保活设置,因此您的客户端在刷新时会不断返回相同的容器。
请尝试使用此自定义Nginx图像:
docker service create --name nginx --replicas 10 -p 80:80 sixeyed/nginx-with-hostname
(sixeyed / nginx-with-hostname是自动构建的,您可以在GitHub上检查源代码。)
指定了一个1秒钟的保持活动状态,以及一个自定义响应标头
X-Host,该标头告诉您服务器的主机名-在这种情况下,它将是容器ID。
我提出了三个连续的请求,这些请求均由不同的容器提供:
> curl -k http://my-swarm.com/ | grep X-HostX-Host: 5920bc3c7659> curl -k http://my-swarm.com/ | grep X-Host X-Host: eb228bb39f58> curl -k http://my-swarm.com/ | grep X-HostX-Host: 891bafd52c90
这些容器都恰好在2节点群集中的管理器节点上运行。其他请求由工作器上的容器满足,因此Docker将它们分配给所有任务。



