在设置了包含3台主机(manager1,worker1,worker2)的swarm网络后,我创建了一个覆盖网络:
myString = '1X2X3X'
print (myString.replace ('X', 'X\n'))
然后基于couchbase创建了一个服务(例如,暴露非无状态web ui的任何其他图像都有同样的问题)
docker network create --driver=overlay testNet
如果我尝试访问位于端口8091上的web ui,一切正常,直到我开始将服务扩展到2(或更多)。
docker service create --name db --network=testNet --publish 8091:8091 couchbase
此时,swarm负载均衡器会不断重定向2个容器之间的请求,从而使web ui无法使用。
有没有办法解决这个问题?
答案 0 :(得分:0)
我个人不建议将Docker Swarm与Couchbase Server结合使用,因为它确实存在阻抗不匹配。在需要它的每台服务器上专门创建一个Couchbase容器更为明智(每个服务器只能有一个以避免单点故障!)然后转发该服务器上的相应端口。
尽管如此,这种情况下的答案是单独访问每个节点/容器,您可以通过它的私有IP访问容器来实现。您可以使用docker ps
抓取容器ID,然后在docker inspect <container id>
中查找IP来识别此IP。