天天看點

Swarm 叢集管理

Docker Swarm 是 Docker 的叢集管理工具。它将 Docker 主機池轉變為單個虛拟 Docker 主機。 Docker Swarm 提供了标準的 Docker API,所有任何已經與 Docker 守護程式通信的工具都可以使用 Swarm 輕松地擴充到多個主機。

支援的工具包括但不限于以下各項:

Dokku

Docker Compose

Docker Machine

Jenkins

如下圖所示,swarm 叢集由管理節點(manager)和工作節點(work node)構成。

swarm mananger:負責整個叢集的管理工作包括叢集配置、服務管理等所有跟叢集有關的工作。

work node:即圖中的 available node,主要負責運作相應的服務來執行任務(task)。

Swarm 叢集管理

以下示例,均以 Docker Machine 和 virtualbox 進行介紹,確定你的主機已安裝 virtualbox。

建立 docker 機器:

Swarm 叢集管理

初始化 swarm 叢集,進行初始化的這台機器,就是叢集的管理節點。

Swarm 叢集管理

以上輸出,證明已經初始化成功。需要把以下這行複制出來,在增加工作節點時會用到:

這裡直接建立好倆台機器,swarm-worker1 和 swarm-worker2 。

Swarm 叢集管理

分别進入兩個機器裡,指定添加至上一步中建立的叢集,這裡會用到上一步複制的内容。

Swarm 叢集管理

以上資料輸出說明已經添加成功。

上圖中,由于上一步複制的内容比較長,會被自動截斷,實際上在圖運作的指令如下:

進入管理節點,執行:docker info 可以檢視目前叢集的資訊。

Swarm 叢集管理

通過畫紅圈的地方,可以知道目前運作的叢集中,有三個節點,其中有一個是管理節點。

注意:跟叢集管理有關的任何操作,都是在管理節點上操作的。

以下例子,在一個工作節點上建立一個名為 helloworld 的服務,這裡是随機指派給一個工作節點:

Swarm 叢集管理

檢視 helloworld 服務運作在哪個節點上,可以看到目前是在 swarm-worker1 節點:

Swarm 叢集管理

檢視 helloworld 部署的具體資訊:

Swarm 叢集管理

我們将上述的 helloworld 服務擴充到倆個節點。

Swarm 叢集管理

可以看到已經從一個節點,擴充到兩個節點。

Swarm 叢集管理
Swarm 叢集管理

檢視是否已删除:

Swarm 叢集管理

以下執行個體,我們将介紹 redis 版本如何滾動更新至更高版本。

建立一個 3.0.6 版本的 redis。

Swarm 叢集管理

滾動更新 redis 。

Swarm 叢集管理

看圖可以知道 redis 的版本已經從 3.0.6 更新到了 3.0.7,說明服務已經更新成功。

檢視所有的節點:

Swarm 叢集管理

可以看到目前所有的節點都是 Active, 可以接收新的任務配置設定。

停止節點 swarm-worker1:

Swarm 叢集管理

注意:swarm-worker1 狀态變為 Drain。不會影響到叢集的服務,隻是 swarm-worker1 節點不再接收新的任務,叢集的負載能力有所下降。

可以通過以下指令重新激活節點:

Swarm 叢集管理