一、swarm是什么?node
Swarm是Docker公司自研发的容器集群管理系统,Swarm在早期是做为一个独立服务存在,在Docker Engine v1.12中集成了Swarm的集群管理和编排功能。能够经过初始化Swarm或加入现有Swarm来启用Docker引擎的Swarm模式。
Docker Engine CLI和API包括了管理Swarm节点命令,好比添加、删除节点,以及在Swarm中部署和编排服务。
也增长了服务栈(Stack)、服务(Service)、任务(Task)概念。docker
二、swarm 角色安全
Manager:接收客户端服务定义,将任务发送到worker节点;维护集群指望状态和集群管理功能及Leader选举。默认状况下manager节点也会运行任务,也能够配置只作管理任务。
Worker:接收并执行从管理节点分配的任务,并报告任务当前状态,以便管理节点维护每一个服务指望状态。服务器
三、swarm特色网络
1. Docker Engine集成集群管理
使用Docker Engine CLI 建立一个Docker Engine的Swarm模式,在集群中部署应用程序服务。
2. 去中心化设计
Swarm角色分为Manager和Worker节点,Manager节点故障不影响应用使用。
3. 扩容缩容
能够声明每一个服务运行的容器数量,经过添加或删除容器数自动调整指望的状态。
4. 指望状态协调
Swarm Manager节点不断监视集群状态,并调整当前状态与指望状态之间的差别。
5. 多主机网络
能够为服务指定overlay网络。当初始化或更新应用程序时,Swarm manager会自动为overlay网络上的容器分配IP地址。
6. 服务发现
Swarm manager节点为集群中的每一个服务分配惟一的DNS记录和负载均衡VIP。能够经过Swarm内置的DNS服务器查询集群中每一个运行的容器。
7. 负载均衡
实现服务副本负载均衡,提供入口访问。
8. 安全传输
Swarm中的每一个节点使用TLS相互验证和加密,确保安全的其余节点通讯。
9. 滚动更新
升级时,逐步将应用服务更新到节点,若是出现问题,能够将任务回滚到先前版本。负载均衡
四、使用Swarm前提:
Docker版本1.12+
集群节点之间保证TCP 2377(集群管理)、TCP/UDP 7946(容器网络发现)和UDP 4789(Overlay网络)端口通讯
节点规划:
操做系统:CentOS7.4_x64this
manager 192.168.10.220加密
node1 192.168.10.221spa
node2 192.168.10.222操作系统
五、swarm集群构建
iptables -I INPUT -s 192.168.10.0/24 -j ACCEPT
管理节点初始化swarm
[root@manager ~]# docker swarm init --advertise-addr 192.168.10.220 Swarm initialized: current node (mim9eowsnjlr7e236aiycuxv4) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-3oq7tuvm8rlgqdat1fdqw0i8o56s9h7k3bfcti0tpzocd6hjn1-236s34wk8nyr1sv6pkriwds0p 192.168.10.220:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
工做节点加入 swarm集群
[root@node1 ~]# docker swarm join --token SWMTKN-1-3oq7tuvm8rlgqdat1fdqw0i8o56s9h7k3bfcti0tpzocd6hjn1-236s34wk8nyr1sv6pkriwds0p 192.168.10.220:2377
This node joined a swarm as a worker.
六、查看集群状态
至此swarm集群构建完成