使用Docker Swarm


如果您正在使用微服務架構,需要在不同的機器上處理不同的專案元件,並建立主從架構(其中主節點控制從節點),那麼透過 Docker Swarm 部署您的專案可能會節省大量的時間、精力和資源。

Docker Swarm 本質上是一個物理或虛擬機器的叢集,稱為節點,它們分別執行 Docker 容器,您可以將所有這些節點配置為加入由主節點(稱為 Swarm 管理器)管理的叢集。它是一個編排工具,允許您管理部署在不同機器上的多個 Docker 容器。這種架構有助於您正確管理資源並高效地工作。它有助於自動負載平衡,同時允許您利用 Docker 容器的強大功能並保證高服務可用性。

通常,任何 Docker Swarm 都提供兩種服務模式。一種是複製服務模式,允許您向管理器指定可複製任務的數量,管理器將這些任務分配給所有可用節點。另一種是全域性服務模式,它根據節點的可用性、能力和需求將一系列任務分配給不同的節點。

在本文中,我們將討論一些最基本和最重要的 Docker Swarm 命令,這些命令將幫助您啟動您的 Swarm 專案。

建立 Docker 機器

使用 hyperv 驅動程式建立 6 臺 Docker 機器,其中一臺作為 Swarm 管理器,另外 5 臺作為工作節點。

sudo docker-machine create −−driver hyperv manager

sudo docker−machine create −−driver hyperv worker1
sudo docker−machine create −−driver hyperv worker2
sudo docker−machine create −−driver hyperv worker3
sudo docker−machine create −−driver hyperv worker4
sudo docker−machine create −−driver hyperv worker5

使用 ls 命令確認是否已建立機器。

sudo docker−machine ls

設定 Swarm 叢集

複製管理器的 IP 地址。

sudo docker−machine ip manager

SSH 登入管理器節點。

sudo docker−machine ssh manager

現在,您已進入管理器提示符。要初始化 Swarm,請執行以下步驟。

docker swarm init −−advertise−addr <manager−ip>

使用以下命令檢查管理器節點中的 Docker Swarm 狀態。

docker node ls

它顯示當前只有一個名為 manager 的領導者節點。

加入作為工作節點或管理器節點

在管理器節點的 SSH 會話中,要找出作為工作節點或管理器節點加入的命令和令牌,您可以使用這些命令。

docker swarm join−token worker
docker swarm join−token manager

上述命令輸出您需要作為工作節點或管理器加入叢集的特定命令。

將工作節點新增到叢集

我們現在將瞭解如何將工作節點新增到管理器下的叢集。

在保持管理器 SSH 會話開啟的同時,啟動另一個終端並使用以下命令啟動 worker1 SSH 會話。

sudo docker−machine ssh worker1

進入 worker1 的 SSH 會話後,複製從管理器終端生成的作為工作節點加入的命令,並將其貼上到 worker1 的 SSH 會話中。成功執行後,您將看到訊息“此節點已作為工作節點加入 Swarm”。對其他 4 個工作節點也執行相同的操作。建立包含 1 個管理器和 5 個工作節點的集群后,您可以透過在管理器的 SSH 會話中鍵入以下命令來確認。

docker node ls

建立並啟動服務

建立 Swarm 集群后,您現在就可以啟動服務了。我們只需要告訴管理器節點我們將要啟動服務(執行容器),管理器會自動分配容器的分配、命令執行和排程。在此示例中,我們將啟動 4 個 nginx 容器的副本,並將其公開到埠 80。

在管理器 SSH 會話中,執行以下命令。

docker service create −−replicas 5 −p 80:80 −−name web nginx

編排層現在正在工作。等待一段時間後,您可以使用以下命令在管理器 SSH 會話中確認。

docker service ps web

要訪問服務,您可以使用任何工作節點或管理器節點的瀏覽器執行工作節點或管理器的 ip,無論其是否執行容器。

擴充套件服務

目前,您的 Swarm 叢集中執行著 5 個 nginx 容器。要擴充套件到 7 個容器,請在管理器 SSH 會話中使用此命令。

docker service scale web=7

使用此命令確認。

docker service ps web

總而言之,在本文中,我們討論瞭如何透過建立不同的虛擬機器並將管理器和工作程式角色分配給節點來建立和部署 Docker Swarm 叢集。我們還討論瞭如何建立和啟動 nginx 服務,如何將其擴充套件以及如何使用任何節點訪問它。如果您是 Docker 開發人員或在微服務專案中使用 Docker,那麼您必須很好地掌握 Swarm 叢集,以便擴充套件您的專案並有效利用資源。建立、啟動、部署和維護 Docker Swarm 叢集節點對於成功維護大型專案和分散式專案至關重要。

更新於:2020年10月27日

819 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始
廣告