一、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集羣構建完成