一、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架构

 

storm 架构原理 swarm架构_storm 架构原理

Swarm分为两个角色,Manager和Worker:

  • Manager:接收客户端服务定义,将任务发送到worker节点;维护集群期望状态和集群管理功能及Leader选举。默认情况下manager节点也会运行任务,也可以配置只做管理任务。
  • Worker:接收并执行从管理节点分配的任务,并报告任务当前状态,以便管理节点维护每个服务期望状态。

 

 

storm 架构原理 swarm架构_storm 架构原理_02

具体任务的实现

 

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

storm 架构原理 swarm架构_集群管理_03

 

3、集群配置

#管理节点初始化Swarm
docker swarm init --advertise-addr 192.168.0.211  

#工作节点加入Swarm:
docker swarm join --token SWMTKN-1-XXX 192.168.0.211

 

三、集群服务管理

 1、服务管理

四、集群服务发布


五、服务发现与负载均衡