中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

深入淺出Docker Swarm

2019-02-26    來源:多智時(shí)代

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用

1.Swarm簡介

Docker自誕生以來,其容器特性以及鏡像特性給DevOps愛好者帶來了諸多方便。然而在很長的一段時(shí)間內(nèi),Docker只能在單host上運(yùn)行,其跨host的部署、運(yùn)行與管理能力頗受外界詬病?鏷ost能力的薄弱,直接導(dǎo)致Docker容器與host的緊耦合,這種情況下,Docker容器的靈活性很難令人滿意,容器的遷移、分組等都成為很難實(shí)現(xiàn)的功能點(diǎn)。

Swarm是Docker公司在2014年12月初新發(fā)布的容器管理工具。和Swarm一起發(fā)布的Docker管理工具還有Machine以及Compose。

Swarm是一套較為簡單的工具,用以管理Docker集群,使得Docker集群暴露給用戶時(shí)相當(dāng)于一個(gè)虛擬的整體。Swarm使用標(biāo)準(zhǔn)的Docker API接口作為其前端訪問入口,換言之,各種形式的Docker Client(dockerclient in go, docker_py, docker等)均可以直接與Swarm通信。Swarm幾乎全部用Go語言來完成開發(fā),并且還處于Alpha版本,目前在github上發(fā)布的版本僅有v0.1.0-rc1。然而Swarm的發(fā)展十分快速,功能和特性的變更迭代還非常頻繁。因此,可以說Swarm還不推薦被用于生產(chǎn)環(huán)境中,但可以肯定的是Swarm是一項(xiàng)很有前途的技術(shù)。

Swarm的設(shè)計(jì)和其他Docker項(xiàng)目一樣,遵循“batteries included but removable”原則。筆者對該原則的理解是:batteries included代表設(shè)計(jì)Swarm時(shí),為了完全體現(xiàn)分布式容器集群部署、運(yùn)行與管理功能的完整性,Swarm和Docker協(xié)同工作,以達(dá)到效果;“but removable”意味著Swarm與Docker并非緊耦合,這套管理引擎并未侵入Docker的使用,同時(shí)這套機(jī)制也可以用以其他容器技術(shù)的集群部署、運(yùn)行與管理。

本文將從以下兩點(diǎn)分析Swarm:

Swarm架構(gòu)

Swarm命令

2.Swarm架構(gòu)

Swarm作為一個(gè)管理Docker集群的工具,首先需要將其部署起來,可以單獨(dú)將Swarm部署于一個(gè)節(jié)點(diǎn)。另外,自然需要一個(gè)Docker集群,集群上每一個(gè)節(jié)點(diǎn)均安裝有Docker。具體的Swarm架構(gòu)圖可以參照下圖:

深入淺出Docker Swarm

Swarm架構(gòu)圖

Swarm架構(gòu)中最主要的處理部分自然是Swarm節(jié)點(diǎn),Swarm管理的對象自然是Docker Cluster,Docker Cluster由多個(gè)Docker Node組成,而負(fù)責(zé)給Swarm發(fā)送請求的是Docker Client。

3.Swarm命令

Swarm架構(gòu)圖可以讓大家對Swarm有一個(gè)初步的認(rèn)識,比如Swarm的具體工作流程:Docker Client發(fā)送請求給Swarm;Swarm處理請求并發(fā)送至相應(yīng)的Docker Node;Docker Node執(zhí)行相應(yīng)的操作并返回響應(yīng)。除此之外,Swarm的工作原理依然還不夠明了。

深入理解Swarm的工作原理,可以先從Swarm提供的命令入手。Swarm支持的命令主要有4個(gè):swarm create、swarm manage、swarm join、swarm list。當(dāng)然還有一個(gè)swarm help命令,該命令用于指導(dǎo)大家如何正確使用swarm命令,本文不再贅述。

3.1 swarm create

Swarm中swarm create命令用于創(chuàng)建一個(gè)集群標(biāo)志,用于Swarm管理Docker集群時(shí),Docker Node的節(jié)點(diǎn)發(fā)現(xiàn)功能。

發(fā)起該命令之后,Swarm會(huì)前往Docker Hub上內(nèi)建的發(fā)現(xiàn)服務(wù)中獲取一個(gè)全球唯一的token,用以唯一的標(biāo)識Swarm管理的Docker集群。

注:Swarm的運(yùn)行需要使用服務(wù)發(fā)現(xiàn),目前該服務(wù)內(nèi)建與Docker Hub,該服務(wù)發(fā)現(xiàn)機(jī)制目前還在alpha版本,站點(diǎn)為:http://discovery-stage.hub/docker.com 。

3.2 swarm manage

Swarm中swarm manage是最為重要的管理命令。一旦swarm manage命令在Swarm節(jié)點(diǎn)上被觸發(fā),則說明用戶需要swarm開始管理Docker集群。從運(yùn)行流程的角度來講,swarm經(jīng)歷的階段主要有兩點(diǎn):啟動(dòng)swarm、接收并處理Docker集群管理請求。

Swarm啟動(dòng)的過程包含三個(gè)步驟:

發(fā)現(xiàn)Docker集群中的各個(gè)節(jié)點(diǎn),收集節(jié)點(diǎn)狀態(tài)、角色信息,并監(jiān)視節(jié)點(diǎn)狀態(tài)的變化;

初始化內(nèi)部調(diào)度(scheduler)模塊;

創(chuàng)建并啟動(dòng)API監(jiān)聽服務(wù)模塊;

第一個(gè)步驟,Swarm發(fā)現(xiàn)Docker集群中的節(jié)點(diǎn)。發(fā)現(xiàn)(discovery)是Swarm中用于維護(hù)Docker集群狀態(tài)的機(jī)制。既然涉及到發(fā)現(xiàn)(discovery),那在這之前必須先有注冊(register)。Swarm中有專門負(fù)責(zé)發(fā)現(xiàn)(discovery)的模塊,而關(guān)于注冊(register)部分,不同的discovery模式下,注冊(register)也會(huì)有不同的形式。

目前,Swarm中提供了5種不同的發(fā)現(xiàn)(discovery)機(jī)制:Node Discovery、File Discovery、Consul Discovery、EtcD Discovery和Zookeeper Discovery。

第二個(gè)步驟,Swarm內(nèi)部的調(diào)度(scheduler)模塊被初始化。swarm通過發(fā)現(xiàn)機(jī)制發(fā)現(xiàn)所有注冊的Docker Node,并收集到所有Docker Node的狀態(tài)以及具體信息。此后,一旦Swarm接收到具體的Docker管理請求,Swarm需要對請求進(jìn)行處理,并通過所有Docker Node的狀態(tài)以及具體信息,來篩選(filter)決策到底哪些Docker Node滿足要求,并通過一定的策略(strategy)將請求轉(zhuǎn)發(fā)至具體的一個(gè)Docker Node。

第三個(gè)步驟,Swarm創(chuàng)建并初始化API監(jiān)聽服務(wù)模塊。從功能的角度來講,可以將該模塊抽象為Swarm Server。需要說明的是:雖然Swarm Server完全兼容Docker的API,但是有不少Docker的命令目前是不支持的,畢竟管理Docker集群與管理單獨(dú)的Docker會(huì)有一些區(qū)別。當(dāng)Swarm Server被初始化并完成監(jiān)聽之后,用戶即可以通過Docker Client向Swarm發(fā)送Docker集群的管理請求。

Swarm的swarm manage接收并處理Docker集群的管理請求,即是Swarm內(nèi)部多個(gè)模塊協(xié)同合作的結(jié)果。請求入口為Swarm Server,處理引擎為Scheduler,節(jié)點(diǎn)信息依靠Disocovery。

3.3 swarm join

Swarm的swarm join命令用于將Docker Node添加至Swarm管理的Docker集群中。從這點(diǎn)也可以看出swarm join命令的執(zhí)行位于Docker Node,因此在Docker Node上運(yùn)行該命令,首先需要在Docker Node上安裝Swarm,由于該Swarm只會(huì)執(zhí)行swarm join命令,故可以將其當(dāng)成Docker Node上用于注冊的agent模塊。

功能而言,swarm join可以認(rèn)為是完成Docker Node在Swarm節(jié)點(diǎn)處的注冊(register)工作,以便Swarm在執(zhí)行swarm manage時(shí)可以發(fā)現(xiàn)該Docker Node。然而,上文提及的5種discovery模式中,并非每種模式都支持swarm join命令。不支持的discovery的模式有Node Discovery與File Discovery。

Docker Node上swarm join執(zhí)行之后,標(biāo)志著Docker Node向Swarm注冊,請求加入Swarm管理的Docker集群中。Swarm通過注冊信息,發(fā)現(xiàn)Docker Node,并獲取Docker Node的狀態(tài)以及具體信息,以便處理Docker請求時(shí)作為調(diào)度依據(jù)。

3.4 swarm list

Swarm中的swarm list命令用以列舉Docker集群中的Docker Node。

Docker Node的信息均來源于Swarm節(jié)點(diǎn)上注冊的Docker Node。而一個(gè)Docker Node在Swarm節(jié)點(diǎn)上注冊,僅僅是注冊了Docker Node的IP地址以及Docker監(jiān)聽的端口號。

使用swarm list命令時(shí),需要指定discovery的類型,類型包括:token、etcd、file、zk以及。而swarm list并未羅列Docker集群的動(dòng)態(tài)信息,比如Docker Node真實(shí)的運(yùn)行狀態(tài),或者Docker Node在Docker集群中扮演的角色信息。

4.總結(jié)

Swarm的架構(gòu)以及命令并沒有很復(fù)雜,同時(shí)也為希望管理Docker集群的Docker愛好者降低了學(xué)習(xí)和使用門檻。

俗話說得好,沒有一種一勞永逸的工具,有效的管理Docker集群同樣也是如此。缺乏場景來談?wù)揝warm的價(jià)值,意義并不會(huì)很大。相反,探索和挖掘Swarm的特點(diǎn)與功能,并為Docker集群的管理提供一種可選的方案,是Docker愛好者更應(yīng)該參與的事。

本文初步介紹Swarm,并涉及架構(gòu)與命令,下期將帶來Swarm的具體使用,以及Swarm的架構(gòu)剖析。

5.作者介紹

孫宏亮,DaoCloud初創(chuàng)團(tuán)隊(duì)成員,軟件工程師,浙江大學(xué)VLIS實(shí)驗(yàn)室應(yīng)屆研究生。讀研期間活躍在PaaS和Docker開源社區(qū),對Cloud Foundry有深入研究和豐富實(shí)踐,擅長底層平臺代碼分析,對分布式平臺的架構(gòu)有一定經(jīng)驗(yàn),撰寫了大量有深度的技術(shù)博客。2014年末以合伙人身份加入DaoCloud團(tuán)隊(duì),致力于傳播以Docker為主的容器的技術(shù),推動(dòng)互聯(lián)網(wǎng)應(yīng)用的容器化步伐。郵箱:allen.sun@daocloud.io

6.參考文獻(xiàn)

Swarm: a Docker-native clustering system

Intro to Docker Swarm: Part 1 - Overview

Intro to Docker Swarm: Part 2 - Configuration Options and Requirements

在不久的將來,云計(jì)算一定會(huì)徹底走入我們的生活,有興趣入行未來前沿產(chǎn)業(yè)的朋友,可以收藏云計(jì)算,及時(shí)獲取人工智能、大數(shù)據(jù)、云計(jì)算和物聯(lián)網(wǎng)的前沿資訊和基礎(chǔ)知識,讓我們一起攜手,引領(lǐng)人工智能的未來!

標(biāo)簽: 大數(shù)據(jù) 代碼 互聯(lián)網(wǎng) 通信 云計(jì)算

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:云分布式系統(tǒng)Docker輕松化解“云鎖定”

下一篇:選擇Docker還是Rocket做容器?為何不選擇兩個(gè)?