Docker集群实验环境布署--swarm【5 容器启动组件--node】
10.40.100.143 docker-node0.venic.com
10.40.100.144 docker-node1.venic.com
原用swarm镜像
直接启动
10.40.100.143上
docker run -d --restart=always --name node0 docker-registry.venic.com:5000/swarm:latest join --advertise=10.40.100.143:2375 consul://docker-consul.venic.com:8500
10.40.100.144上
docker run -d --restart=always --name node1 docker-registry.venic.com:5000/swarm:latest join --advertise=10.40.100.144:2375 consul://docker-consul.venic.com:8500
在Manager节点上查看集群状态,多了2个node节点
# docker -H :4000 info
Containers: 2
Running: 2
Paused: 0
Stopped: 0
Images: 6
Server Version: swarm/1.2.5
Role: primary
Strategy: spread --默认的均衡模式
Filters: health, port, containerslots, dependency, affinity, constraint
Nodes: 2
docker-node0.venic.com: 10.40.100.143:2375
└ ID: IP3U:TRP7:ZJTS:L3SX:UU4R:VVB5:B4LE:QNOL:MALC:A4BX:GFC7:WJPV
└ Status: Healthy
└ Containers: 1 (1 Running, 0 Paused, 0 Stopped)
└ Reserved CPUs: 0 / 1
└ Reserved Memory: 0 B / 2.052 GiB
└ Labels: kernelversion=3.10.0-514.2.2.el7.x86_64, operatingsystem=CentOS Linux 7 (Core), storagedriver=devicemapper
└ UpdatedAt: 2016-12-22T11:26:27Z
└ ServerVersion: 1.12.5
docker-node1.venic.com: 10.40.100.144:2375
└ ID: TXYV:2VVM:H32T:DWDN:AD5M:Z22S:RRLJ:KYN2:SKNP:YFLI:4RUI:GRPM
└ Status: Healthy
└ Containers: 1 (1 Running, 0 Paused, 0 Stopped)
└ Reserved CPUs: 0 / 1
└ Reserved Memory: 0 B / 2.052 GiB
└ Labels: kernelversion=3.10.0-514.2.2.el7.x86_64, operatingsystem=CentOS Linux 7 (Core), storagedriver=devicemapper
└ UpdatedAt: 2016-12-22T11:26:35Z
└ ServerVersion: 1.12.5
Plugins:
Volume:
Network:
Swarm:
NodeID:
Is Manager: false
Node Address:
Security Options:
Kernel Version: 3.10.0-514.2.2.el7.x86_64
Operating System: linux
Architecture: amd64
CPUs: 2
Total Memory: 4.103 GiB
Name: 27fbbfe0fae4
Docker Root Dir:
Debug Mode (client): false
Debug Mode (server): false
WARNING: No kernel memory limit support
Swarm调度策略
Swarm在schedule节点运行容器的时候,会根据指定的策略来计算最适合运行容器的节点,目前支持的策略有:spread, binpack, random.
Random顾名思义,就是随机选择一个Node来运行容器,一般用作调试用,spread和binpack策略会根据各个节点的可用的CPU, RAM以及正在运行的容器的数量来计算应该运行容器的节点。
在同等条件下,Spread策略会选择运行容器最少的那台节点来运行新的容器,binpack策略会选择运行容器最集中的那台机器来运行新的节点(The binpack strategy causes Swarm to optimize for the Container which is most packed.)。
使用Spread策略会使得容器会均衡的分布在集群中的各个节点上运行,一旦一个节点挂掉了只会损失少部分的容器。
Binpack策略最大化的避免容器碎片化,就是说binpack策略尽可能的把还未使用的节点留给需要更大空间的容器运行,尽可能的把容器运行在一个节点上面。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,负责保留追究法律责任的权利。