2017-09-25 61 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将把这个请求转发给其中一个副本。 哪个副本由健康状态决定(忽略不健康的服务)以及默认为循环法配置的负载平衡选项。