首頁  >  文章  >  系統教程  >  為 Docker 引擎的 Swarm 新增工作節點!

為 Docker 引擎的 Swarm 新增工作節點!

WBOY
WBOY轉載
2023-12-28 11:05:141116瀏覽
導讀 讓我們繼續幾週前在 CentOS 7.2 中開始的工作。在本指南中,我們學習如何初始化以及啟動 Docker 1.12 中內建的原生的叢集以及編排功能。但是我們只有管理者manager節點還沒有其它工作者worker節點。今天我們會展開講述這件事。

我將向你展示如何將不對稱節點加入到 Sawrm 中,例如一個與 CentOS 相鄰的 Fedora 24,它們都會加入到叢集中,還有相關很棒的負載平衡等等。當然這並不是輕而易舉的,我們會遇到一些障礙,所以它應該是非常有趣的。
Docker 引擎的 Swarm中添加工作者节点!

Teaser

先決條件

在將其它節點成功加入 Swarm 之前,我們需要做幾件事情。理想情況下,所有節點都應該運行相同版本的 Docker,為了支援原生的編排功能,它的版本至少應該為 1.12。像 CentOS 一樣,Fedora 內建的倉庫沒有最新的構建版本,所以你需要手動構建,或者使用 Docker 倉庫手動添加和安裝正確的版本,並修復一些依賴衝突。我已經向你展示瞭如何在 CentOS 中操作,經過是相同的。
此外,所有節點都需要能夠相互通訊。這就需要有正確的路由和防火牆規則,讓管理者manager和工作者worker節點才能互相通訊。否則,你無法將節點加入 Swarm 中。最簡單的解決方法是暫時清除防火牆規則 (iptables -F),但這可能會損害你的安全。請確保你完全了解你正在做什麼,並為你的節點和連接埠創建正確的規則。

Error response from daemon: Timeout was reached before node was joined. The attempt to join the swarm will continue in the background. Use the "docker info" command to see the current swarm status of your node.

#守護程式的錯誤回應:節點加入之前已逾時。嘗試加入 Swarm 的請求將在後台繼續進行。使用 “docker info” 指令查看節點的目前 Swarm 狀態。

你需要在主機上提供相同的 Docker 映像。在上一個教學中我們建立了一個 Apache 映像,你需要在你的工作者worker節點上執行相同操作,或是分發已建立的鏡像。如果你不這樣做,你會遇到錯誤。如果你在設定 Docker 上需要協助,請閱讀我的介紹指南和網路教學。

7vwdxioopmmfp3amlm0ulimcu \_ websky.11 my-apache2:latest
localhost.localdomain Shutdown Rejected 7 minutes ago
"No such image: my-apache2:lat&"
現在開始 現在我們有一台啟動了 CentOS 機器,並成功地創建了容器。你可以使用主機連接埠連接到該服務,這一切都看起來很好。目前,你的 Swarm 只有管理者。


Docker 引擎的 Swarm中添加工作者节点!

Manager

加入工作者 要新增新的節點,你需要使用 join 指令。但你首先必須提供令牌、IP 位址和端口,以便工作者woker節點能正確地對 Swarm 管理器進行身份驗證。接著(在 Fedora 上)執行:

[root@localhost ~]# docker swarm join-token worker
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-0xvojvlza90nrbihu6gfu3qm34ari7lwnza ... \
192.168.2.100:2377
如果你不修復防火牆和路由規則,你會得到逾時錯誤。如果你已經加入了 Swarm,重複 join 指令會收到錯誤:

Error response from daemon: This node is already part of a swarm. Use "docker swarm leave" to leave this swarm and join another one.
如果有疑問,你可以離開 Swarm,然後重試:

[root@localhost ~]# docker swarm leave
Node left the swarm.
docker swarm join --token
SWMTKN-1-0xvojvlza90nrbihu6gfu3qnza4 ... 192.168.2.100:2377
This node joined a swarm as a worker.
在工作者worker節點中,你可以使用 docker info 來檢查狀態:

Swarm: active
NodeID: 2i27v3ce9qs2aq33nofaon20k
Is Manager: false
Node Address: 192.168.2.103
Likewise, on the manager:
Swarm: active
NodeID: cneayene32jsb0t2inwfg5t5q
Is Manager: true
ClusterID: 8degfhtsi7xxucvi6dxvlx1n4
Managers: 1
Nodes: 3
Orchestration:
Task History Retention Limit: 5
Raft:
Snapshot Interval: 10000
Heartbeat Tick: 1
Election Tick: 3
Dispatcher:
Heartbeat Period: 5 seconds
CA Configuration:
Expiry Duration: 3 months
Node Address: 192.168.2.100
建立或縮放服務 現在,我們需要看下 Docker 是否以及如何在節點間分發容器。我的測試展示了一個在非常輕的負載下相當簡單的平衡演算法。試了一兩次之後,即使在我嘗試縮放並更新之後,Docker 也沒有將運行的服務重新分配給新的 worker。同樣,有一次,它在工作者worker節點上創建了一個新的服務。也許這是最好的選擇。


Docker 引擎的 Swarm中添加工作者节点!

Scale service

Docker 引擎的 Swarm中添加工作者节点!

#Service ls

Docker 引擎的 Swarm中添加工作者节点!

#Services ls, more

Docker 引擎的 Swarm中添加工作者节点!

#在新的工作者節點上完整建立新的服務。

過了一段時間,兩個容器之間的現有服務有一些重新分配,但這需要一些時間。新服務工作正常。這只是一個前期觀察,所以我現在不能說更多。現在是開始探索和調整的新起點。


Docker 引擎的 Swarm中添加工作者节点!

負載平衡過了一會兒工作了。

總結

Docker 是一隻靈巧的小野獸,它仍在繼續長大,變得更複雜、更強大,當然也更優雅。它被一個大企業吃掉只是一個時間問題。當它帶來了原生的編排功能時,Swarm 模式運作得很好,但是它不只是幾個容器而已,而是充分利用了其演算法和可擴展性。

我的教學展示如何將 Fedora 節點加入到由 CentOS 運行的群集中,並且兩者能並行工作。關於負載平衡還有一些問題,但這是我將在以後的文章中探討的。總而言之,我希望這是一個值得記住的一課。我們已經解決了在嘗試設定 Swarm 時可能遇到的一些先決條件和常見問題,同時我們啟動了一堆容器,我們甚至簡要介紹瞭如何縮放和分發服務。要記住,這只是一個開始。

乾杯。

作者簡介:

我是 Igor Ljubuncic。現在大約 38 歲,已婚但還沒有孩子。我現在在一個大膽創新的雲端科技公司當首席工程師。直到大約 2015 年初時,我還在一個全世界最大的 IT 公司之一中做系統架構工程師,和一個工程計算團隊開發新的基於 Linux 的解決方案,優化核心以及攻克 Linux 的問題。在那之前,我是一個為高效能運算環境設計創新解決方案的團隊的技術領導。還有一些其他花哨的頭銜,包括系統專家、系統程式設計師等等。所有這些都曾是我的愛好,但從 2008 年開始成為了我的付費工作。還有什麼比這更令人滿意的呢?

從 2004 年到 2008 年間,我曾經透過擔任醫學影像產業的物理學家來糊口。我的工作專長集中在解決問題和演算法開發。為此,我廣泛地使用了 Matlab,主要用於訊號和影像處理。另外,我得到了幾個主要的工程方法學的認證,包括 MEDIC 六西格瑪綠帶、試驗設計以及統計工程學。

我也開始寫書,包括奇幻類別和 Linux 上的技術工作。彼此交融。

要查看我開源專案、出版物和專利的完整列表,請捲動到下面。

有關我的獎項,提名和 IT 相關認證的完整列表,請稍等一下。

以上是為 Docker 引擎的 Swarm 新增工作節點!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:linuxprobe.com。如有侵權,請聯絡admin@php.cn刪除