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

深入淺出Docker Swarm

2019-02-26    來源:多智時代

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

1.Swarm簡介

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

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

Swarm是一套較為簡單的工具,用以管理Docker集群,使得Docker集群暴露給用戶時相當于一個虛擬的整體。Swarm使用標準的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是一項很有前途的技術。

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

本文將從以下兩點分析Swarm:

Swarm架構

Swarm命令

2.Swarm架構

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

深入淺出Docker Swarm

Swarm架構圖

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

3.Swarm命令

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

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

3.1 swarm create

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

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

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

3.2 swarm manage

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

Swarm啟動的過程包含三個步驟:

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

初始化內部調度(scheduler)模塊;

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

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

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

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

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

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

3.3 swarm join

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

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

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

3.4 swarm list

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

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

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

4.總結

Swarm的架構以及命令并沒有很復雜,同時也為希望管理Docker集群的Docker愛好者降低了學習和使用門檻。

俗話說得好,沒有一種一勞永逸的工具,有效的管理Docker集群同樣也是如此。缺乏場景來談論Swarm的價值,意義并不會很大。相反,探索和挖掘Swarm的特點與功能,并為Docker集群的管理提供一種可選的方案,是Docker愛好者更應該參與的事。

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

5.作者介紹

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

6.參考文獻

Swarm: a Docker-native clustering system

Intro to Docker Swarm: Part 1 - Overview

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

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

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

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

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

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