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