導讀 | 讓我們繼續幾週前在 CentOS 7.2 中開始的工作。在本指南中,我們學習如何初始化以及啟動 Docker 1.12 中內建的原生的叢集以及編排功能。但是我們只有管理者manager節點還沒有其它工作者worker節點。今天我們會展開講述這件事。 |
我將向你展示如何將不對稱節點加入到 Sawrm 中,例如一個與 CentOS 相鄰的 Fedora 24,它們都會加入到叢集中,還有相關很棒的負載平衡等等。當然這並不是輕而易舉的,我們會遇到一些障礙,所以它應該是非常有趣的。
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&"
加入工作者 要新增新的節點,你需要使用 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
Error response from daemon: This node is already part of a swarm. Use "docker swarm leave" to leave this swarm and join another one.
[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.
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
#Service ls
#Services ls, more
#在新的工作者節點上完整建立新的服務。
過了一段時間,兩個容器之間的現有服務有一些重新分配,但這需要一些時間。新服務工作正常。這只是一個前期觀察,所以我現在不能說更多。現在是開始探索和調整的新起點。
總結
Docker 是一隻靈巧的小野獸,它仍在繼續長大,變得更複雜、更強大,當然也更優雅。它被一個大企業吃掉只是一個時間問題。當它帶來了原生的編排功能時,Swarm 模式運作得很好,但是它不只是幾個容器而已,而是充分利用了其演算法和可擴展性。
我的教學展示如何將 Fedora 節點加入到由 CentOS 運行的群集中,並且兩者能並行工作。關於負載平衡還有一些問題,但這是我將在以後的文章中探討的。總而言之,我希望這是一個值得記住的一課。我們已經解決了在嘗試設定 Swarm 時可能遇到的一些先決條件和常見問題,同時我們啟動了一堆容器,我們甚至簡要介紹瞭如何縮放和分發服務。要記住,這只是一個開始。
乾杯。
作者簡介:
我是 Igor Ljubuncic。現在大約 38 歲,已婚但還沒有孩子。我現在在一個大膽創新的雲端科技公司當首席工程師。直到大約 2015 年初時,我還在一個全世界最大的 IT 公司之一中做系統架構工程師,和一個工程計算團隊開發新的基於 Linux 的解決方案,優化核心以及攻克 Linux 的問題。在那之前,我是一個為高效能運算環境設計創新解決方案的團隊的技術領導。還有一些其他花哨的頭銜,包括系統專家、系統程式設計師等等。所有這些都曾是我的愛好,但從 2008 年開始成為了我的付費工作。還有什麼比這更令人滿意的呢?
從 2004 年到 2008 年間,我曾經透過擔任醫學影像產業的物理學家來糊口。我的工作專長集中在解決問題和演算法開發。為此,我廣泛地使用了 Matlab,主要用於訊號和影像處理。另外,我得到了幾個主要的工程方法學的認證,包括 MEDIC 六西格瑪綠帶、試驗設計以及統計工程學。
我也開始寫書,包括奇幻類別和 Linux 上的技術工作。彼此交融。
要查看我開源專案、出版物和專利的完整列表,請捲動到下面。
有關我的獎項,提名和 IT 相關認證的完整列表,請稍等一下。
以上是為 Docker 引擎的 Swarm 新增工作節點!的詳細內容。更多資訊請關注PHP中文網其他相關文章!