Docker Swarm 介紹 or 工作原理

2022-05-17 20:15:40 字數 2259 閱讀 6043

docker swarm 介紹

swarm 簡介

swarm是docker公司自研發的容器集群管理系統,swarm在早期是作為乙個獨立服務存在,在docker engine v1.12中整合了swarm的集群管理和編排功能。可以通過初始化swarm或加入現有swarm來啟用docker引擎的swarm模式。

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節點不斷監視集群狀態,並調整當前狀態與期望狀態之間的差異。例如,設定乙個服務執行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:-- 1、docker service create:我們通過docker service create這個命令去建立乙個服務。

swarm manager:-- 1、api:這個請求直接由swarm manager的api進行接收,接收命令並建立服務物件。

-- 2、orchestrator:為服務建立乙個任務。

-- 4、dispatcher:將任務分配到指定的節點。

-- 5、scheduler:再該節點中下發指定命令。

worker node:接收manager任務後去執行這個任務。

-- 1、container:建立相應的容器。

-- 2、worker:連線到排程程式以檢查分配的任務

-- 3、executor:執行分配給工作節點的任務

service:為乙個副本,可以理解為是乙個任務,乙個任務是乙個容器。

swarm manager:它將這個副本下發到三個可用的work節點。

container:實際的docker容器去執行應用。

task:work任務的名稱為service名稱後面跟.1根據個數以此類推。

Docker Swarm排程策略

swarm在用命令swarm manager啟動swarm manager時,可用 strategy指定排程策略。swarm提供了三種排程策略計算節點的排名,在排程 例如選擇哪乙個節點執行容器時 時,取排名最前的節點。這三種排程策略是 spread binpack random random策略 隨...

docker swarm核心概念

翻譯自docker官方文件,原文 本節介紹了docker1.12中集群管理和編排特性的特有概念。節點是swarm中的乙個docker引擎例項。你也可以把它想成是乙個docker節點。你可以在乙個物理機或雲伺服器上執行多個節點,但生產環境中的swarm部署通常包括分布在多個物理機和雲平台上的docke...

docker swarm 管理服務

docker swarm中服務的概念是 乙個服務包含swarm集群中多個節點,每個節點都可以部署服務,每個服務也包含多個相關的容器。docker service help commands create create a new service inspect display detailed in...