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