2017-09-25 113 views
1

我有三個節點組成的羣:泊塢羣縮放行爲

$ sudo docker node ls 
ID       HOSTNAME   STATUS    AVAILABILITY  MANAGER STATUS 
i12s3zxsn4vu1c98bv3i5idr8  node03   Ready    Active 
i2ckxvsju4tmommxim3dbfq7l  node02   Ready    Active 
wak4isl46dn7pbo39drrhphju * node01   Ready    Active    Leader 

然後,我對羣運行1個副本Nginx的和他的端口映射到8080:

$ sudo docker service create --replicas 1 --publish 8080:80 --name nginx nginx 
$ sudo docker service ls 
ID     NAME    MODE    REPLICAS   IMAGE    PORTS 
neahnb9mvi1i  nginx    replicated   1/1     nginx:latest  *:8080->80/tcp 

從那裏,我可以達到上http://node01:8080

接下來nginx的,我nginx的規模實例6:

$ sudo docker service scale nginx=6 
$ sudo docker service ls 
ID     NAME    MODE    REPLICAS   IMAGE    PORTS 
neahnb9mvi1i  nginx    replicated   6/6     nginx:latest  *:8080->80/tcp 

從那裏,我仍然能夠達到http://node01:8080 nginx。但是,如果docker swarm將多個節點公開爲唯一主機,那麼在如此縮放操作期間如何管理端口,因爲我所有的nginx服務都映射到同一個8080端口上?在內部由swarm完成的所有服務實例之間是否存在循環負載均衡並在8080上返回答案?

回答

0

您可以通過使用羣集中的任何計算機的IP和該端口來訪問任何暴露其端口的服務(使用堆棧進行部署)。然後Docker swarm將把這個請求轉發給其中一個副本。 哪個副本由健康狀態決定(忽略不健康的服務)以及默認爲循環法配置的負載平衡選項。