一、Swarm介绍
1、Swarm是什么?
Swarm是Docker公司自研发的容器集群管理系统,Swarm在早起是作为一个独立服务存在,在Docker Engine v1.12中集成了Swarm的集群管理和编排功能。可以通过初始化Swarm或加入现有Swarm来启用Docker引擎的Swarm模式。
Docker Engine CLI和API包括了管理Swarm节点的命令,比如添加、删除节点、部署编排服务、服务栈(stack)、服务(Service)、任务(Task)概念。
2、Swarm架构
Swarm分为两个角色,Manager和Worker:
- Manager:接收客户端服务定义,将任务发送到worker节点;维护集群期望状态和集群管理功能及Leader选举。默认情况下manager节点也会运行任务,也可以配置只做管理任务。
- Worker:接收并执行从管理节点分配的任务,并报告任务当前状态,以便管理节点维护每个服务期望状态。
具体任务的实现
3、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):滚动更新
升级时,逐步将应用服务更新到节点,如果出现问题,可以将任务回滚到先前版本
二、集群部署与管理
1、前提
- Docker版本1.12+
- 集群节点之间保证TCP 2377(集群管理)、TCP/UDP 7946(容器网络发现)和UDP 4789(Overlay网络)端口通信
2、环境规划
系统:Centos7.4_x64
3、集群配置
#管理节点初始化Swarm
docker swarm init --advertise-addr 192.168.0.211
#工作节点加入Swarm:
docker swarm join --token SWMTKN-1-XXX 192.168.0.211
三、集群服务管理
1、服务管理
四、集群服务发布
五、服务发现与负载均衡