Docker Swarm 介紹node
Swarm 簡介docker
Swarm是Docker公司自研發的容器集羣管理系統,Swarm在早期是做爲一個獨立服務存在,在Docker Engine v1.12中集成了Swarm的集羣管理和編排功能。能夠經過初始化Swarm或加入現有Swarm來啓用Docker引擎的Swarm模式。安全
Swarm 兩種角色服務器
Manager:接收客戶端服務定義,將任務發送到worker節點;維護集羣指望狀態和集羣管理功能及Leader選舉。默認狀況下manager節點也會運行任務,也能夠配置只作管理任務。網絡
Worker:接收並執行從管理節點分配的任務,並報告任務當前狀態,以便管理節點維護每一個服務指望狀態。負載均衡
Swarm特色加密
1. Docker Engine集成集羣管理spa
使用Docker Engine CLI 建立一個Docker Engine的Swarm模式,在集羣中部署應用程序服務。設計
2. 去中心化設計orm
Swarm角色分爲Manager和Worker節點,Manager節點故障不影響應用使用。
3. 擴容縮容
能夠聲明每一個服務運行的容器數量,經過添加或刪除容器數自動調整指望的狀態。
4. 指望狀態協調
Swarm Manager節點不斷監視集羣狀態,並調整當前狀態與指望狀態之間的差別。例如,設置一個服務運行10個副本容器,若是兩個副本的服務器節點崩潰,Manager將建立兩個新的副本替代崩潰的副本。並將新的副本分配到可用的worker節點。
5. 多主機網絡
能夠爲服務指定overlay網絡。當初始化或更新應用程序時,Swarm manager會自動爲overlay網絡上的容器分配IP地址。
6. 服務發現
Swarm manager節點爲集羣中的每一個服務分配惟一的DNS記錄和負載均衡VIP。能夠經過Swarm內置的DNS服務器查詢集羣中每一個運行的容器。
7. 負載均衡
實現服務副本負載均衡,提供入口訪問。也能夠將服務入口暴露給外部負載均衡器再次負載均衡。
8. 安全傳輸
Swarm中的每一個節點使用TLS相互驗證和加密,確保安全的其餘節點通訊。
9. 滾動更新
升級時,逐步將應用服務更新到節點,若是出現問題,能夠將任務回滾到先前版本
Docker Swarm 工做原理
Docker Engine client: -- 一、docker service create:咱們經過docker service create這個命令去建立一個服務。
swarm manager: -- 一、API:這個請求直接由Swarm manager的API進行接收,接收命令並建立服務對象。 -- 二、orchestrator:爲服務建立一個任務。 -- 三、allocater:爲這個任務分配IP地址。 -- 四、dispatcher:將任務分配到指定的節點。 -- 五、scheduler:再該節點中下發指定命令。
worker node:接收manager任務後去運行這個任務。 -- 一、container:建立相應的容器。 -- 二、worker:鏈接到調度程序以檢查分配的任務 -- 三、executor:執行分配給工做節點的任務
Service:爲一個副本,能夠理解爲是一個任務,一個任務是一個容器。
swarm manager:它將這個副本下發到三個可用的work節點。
container:實際的docker容器去運行應用。
task:work任務的名稱爲service名稱後面跟.1根據個數以此類推。