您好,登錄后才能下訂單哦!
這篇文章給大家介紹docker中Swarm mode是什么,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
一般情況下,我們都在一臺機器下部署容器,但實際情況下,應用如果只在一臺機器上無法滿足我們的需求,包含的容器比較多。因此在生產環境下部署我們的應用就會涉及到非常多的容器,這樣就會給我們帶來一系列的問題:
怎么去管理這么多的容器?
怎么能方便的橫向擴展?
如果容器down了,怎么能自動恢復?
如何去更新容器而不影響業務?
如何去監控追蹤這些容器?
怎么去調度容器的創建?
保護隱私數據?
這樣我們就需要容器編排技術,Swarm Mode應運而生。
Swarm 并不是唯一一個可以做容器編排的工具,只不過Swarm是內置于docker的一個工具。因此我們使用Swarm時不需要安裝任何東西,Swarm已經內置到我們系統里面了,只不過我們沒有運行在Swarm 模式下,我們一般運行在單機模式下。因此swarm就是初學者接觸容器編排的第一個工具。
Swarm是一種集群架構,既然是集群,那么一定有節點,有節點那么就有角色。在Swarm中節點node一共有兩種角色,第一種角色叫Manager,第二種角色叫worker。
Manager節點好比集群的大腦,在生產環境中,為了避免單點故障,“大腦”至少要有兩個,因此會有狀態同步,即在一個Manager產生的數據如何同步到另外的Manager節點上,這里就涉及到一個內置的分布式存儲數據庫,數據通過raft協議去做同步。raft協議能夠確保Manager節點的信息是對稱的,同步的,可以避免腦裂的情況。
Worker節點就是真正干活的節點,真正的容器部署在cluster中都會運行在Work節點中,當然Manager節點也可以運行,但是一般都運行在Worker節點中,因為Worker節點比較多。Worker節點之間也有數據需要同步,是通過Gossip網絡來做信息同步。
Swarm中一個非常重要的概念是Service和Replicas。
Service在上一節中介紹docker compose的時候有介紹過,在Swarm中的service與docker compose下的service的意思基本一樣。一個service就代表了一個容器。
在Replicas模式下,即我們想做橫向擴展,再部署的過程中,一個replicas就是一個容器。
如上圖所示,我們想部署一個Nginx的service,想要給他做3個擴展,實際上部署的過程中會產生三個容器,這三個容器會通過調度系統調度到不同的node上面去。也就是說我們通過Swarm Manager節點去部署一個service,其實是不知道這個service最終會運行在哪個節點上,這回根據Swarm的schedule根據一定的調度算法去算的,例如算法會根據節點的負載來選擇。
上面這張圖就是swarm算法調度的一個過程。在swarm manager上做一些決策,來決定把哪個service部署在哪臺node上,然后在去執行實際的一個操作就可以了。
關于docker中Swarm mode是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。