Mesos 與 Docker 革新持續(xù)交付技術(shù)
變革這個(gè)詞在當(dāng)今的數(shù)字化時(shí)代司空見慣,IT技術(shù)每過一段時(shí)間就會(huì)有一起革新,從WEB2.0、虛擬化、云計(jì)算、大數(shù)據(jù)、微架構(gòu)、DevOps再到今天的容器Docker與Mesos。
Docker的出現(xiàn)方便了應(yīng)用的測(cè)試、部署、與升級(jí),其將各種應(yīng)用程序和它們所依賴的運(yùn)行環(huán)境打包成標(biāo)準(zhǔn)的Container/Image,進(jìn)而發(fā)布到不同的平臺(tái)上運(yùn)行。Docker的輕量級(jí)、快速部署、遷移方便的特性促進(jìn)了DevOps的落地,借用容器,開發(fā)人員可以很方便的融入到產(chǎn)品的交付流程當(dāng)中。
Mesos是軟件定義數(shù)據(jù)中心的***實(shí)踐,其理念用最通俗的話來講就是,讓運(yùn)維人員操作數(shù)據(jù)中心就算操作一臺(tái)服務(wù)器一樣去操作,將數(shù)據(jù)中心中的CPU、內(nèi)存、存儲(chǔ)等資源統(tǒng)一在一臺(tái)服務(wù)器內(nèi)進(jìn)行調(diào)度與管理。聽起來非常的高大上,如果用技術(shù)化的語言來描述,Mesos是這樣定義的,統(tǒng)一的集群資源管理與調(diào)度平臺(tái),將生產(chǎn)環(huán)境中的各種服務(wù)框架,部署在一個(gè)公共的集群中,共享集群中的資源,由Mesos對(duì)資源進(jìn)行統(tǒng)一調(diào)度,提供給服務(wù)框架使用。Mesos的出現(xiàn)給IaaS、PaaS以及運(yùn)維的管理提供了極大的便利。
在實(shí)踐中,Mesos與Docker是***的伴侶,前者提供了資源的統(tǒng)一管理,后者實(shí)現(xiàn)了資源的隔離使用,有合有分,在不同的層次發(fā)揮著不同的效能。同時(shí),Mesos與Docker又都有自己的技術(shù)生態(tài)圈,兩者的生態(tài)圈又都相互的促進(jìn)和推動(dòng)。
- Marathon保證Mesos上的服務(wù)長(zhǎng)期運(yùn)行的框架,確保運(yùn)行在Mesos上的服務(wù)一直運(yùn)行,某臺(tái)Mesos主機(jī)發(fā)生故障時(shí)自動(dòng)遷移到其他服務(wù)器
- Chronos 服務(wù)循環(huán)運(yùn)行作業(yè)調(diào)度框架,可以設(shè)定反復(fù)在特定的時(shí)間觸發(fā)運(yùn)行Mesos中的服務(wù)
- Mesos-DNS針對(duì)Mesos的基于DNS的服務(wù)發(fā)現(xiàn)機(jī)制,可以方便的發(fā)現(xiàn)容器運(yùn)行位置,并進(jìn)行管理調(diào)度
- Kubernetes集群級(jí)別的容器編排管理系統(tǒng),能方便的管理跨集群運(yùn)行的容器化應(yīng)用,提供容器調(diào)度、部署、服務(wù)發(fā)現(xiàn)、擴(kuò)展機(jī)制等功能
- Swarm用于創(chuàng)建Docker主機(jī)(運(yùn)行Docker守護(hù)進(jìn)程的服務(wù)器)集群的工具,使用Swarm操作集群,會(huì)使用戶感覺就像是在一臺(tái)主機(jī)上進(jìn)行操作
Mesos與Docker這對(duì)***伴侶為應(yīng)用的持續(xù)交付帶來了極大的便利,為應(yīng)用的運(yùn)維管理提供了很大的方便,兩者在持續(xù)交付的解決方案中都起著至關(guān)重要的作用,如下圖展示了Mesos與Docker在應(yīng)用持續(xù)交付中的實(shí)踐。其具體的過程可以描述如下:
- 開發(fā)人員根據(jù)產(chǎn)品的需求進(jìn)行代碼的實(shí)現(xiàn),將實(shí)現(xiàn)的代碼提交到Git/SVN等代碼管理倉庫;
- 測(cè)試人員通過Jenkins/Hudson等持續(xù)集成工具,對(duì)代碼進(jìn)行編譯、打包、集成等,將代碼打包成Docker Image提交到Docker鏡像倉庫;
- 測(cè)試人員通過Mesos資源調(diào)度和Marathon平臺(tái),用新的Docker Image部署測(cè)試環(huán)境,測(cè)試人員在測(cè)試環(huán)境中對(duì)產(chǎn)品需求功能進(jìn)行驗(yàn)證。如果不符合驗(yàn)證反饋給開發(fā)人員,由開發(fā)人員繼續(xù)修正,如果已經(jīng)符合要求會(huì)通知運(yùn)維人員將代碼部署到預(yù)發(fā)布或生產(chǎn)環(huán)境;運(yùn)維人員接到測(cè)試已經(jīng)驗(yàn)證通過的通知后,會(huì)利用新發(fā)布的Docker Image,將其部署到由Mesos調(diào)度管理的生產(chǎn)環(huán)境中;在生產(chǎn)環(huán)境運(yùn)行過程中,運(yùn)維人員可以通過Marathon等平臺(tái)對(duì)環(huán)境進(jìn)行一下業(yè)務(wù)的擴(kuò)容及縮容操作,甚至一些故障的自動(dòng)恢復(fù)等管理。
Mesos與Docker交付中應(yīng)用案例
上述過程描述是基于比較傳統(tǒng)標(biāo)準(zhǔn)的組織架構(gòu)型的公司來描述的,有清晰角色分工的開發(fā)、測(cè)試、運(yùn)維等角色人員;有部分公司已經(jīng)實(shí)踐DevOps的管理方式,開發(fā)運(yùn)維合二為一,組織架構(gòu)中的角色分工更簡(jiǎn)單簡(jiǎn)潔,其利用Mesos、Docker實(shí)現(xiàn)的持續(xù)交付過程會(huì)有一些大同小異,其具體的操作過程還是一樣的,只是操作的人可能不同。
Mesos與Docker的出現(xiàn)應(yīng)用快、持續(xù)、自動(dòng)化的交付的落地消除了很多的屏障,帶來了極大的便利。IT技術(shù)就是日新月異,我們能夠選擇的只有不斷積極的擁抱。明天會(huì)更好,本篇是我們應(yīng)用持續(xù)交付系列文章的導(dǎo)入篇,在后續(xù)會(huì)根據(jù)實(shí)踐不斷更新此系列,一起加速互聯(lián)網(wǎng)敏捷運(yùn)維。
稿件來源:優(yōu)云Mobile產(chǎn)品架構(gòu)師趙建飛。優(yōu)云Mobile是廣通軟件旗下產(chǎn)品,提供用戶體驗(yàn)分析、應(yīng)用性能診斷、運(yùn)營(yíng)決策支持等功能,實(shí)現(xiàn)移動(dòng)應(yīng)用全方位感知,為應(yīng)用開發(fā)、測(cè)試和運(yùn)維協(xié)同奠定基礎(chǔ)。
【本文來源:運(yùn)維幫微信公眾號(hào)】