變革這個詞在當今的數位化時代司空見慣,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技術就是日新月異,我們能夠選擇的只有不斷積極的擁抱。明天會更好,本篇是我們應用持續交付系列文章的匯入篇,在後續會根據實踐不斷更新此系列,一起加速網際網路敏捷運維。
持續交付的Mesos與Docker匯入篇
變革這個詞在當今的數位化時代司空見慣,it技術每過一段時間就會有一起革新,從web2.0 虛擬化 雲計算 大資料 微架構 devops再到今天的容器docker與mesos。docker的出現方便了應用的測試 部署 與公升級,其將各種應用程式和它們所依賴的執行環境打包成標準的container im...
CICD 持續整合與持續交付
持續整合與持續交付是軟體開發和交付中的實踐。我們專案中一直在踐行持續整合 ci continuous integration 持續交付 cd continuous delivery 未能達到理想狀態,只能實踐一部分。這篇文章用於總結ci cd的實踐。什麼是持續整合?軟體開發中,整合是乙個很可能發生未...
持續交付之構建與部署的指令碼化
一 構建工具 比較常見的有 二 指令碼化的一些原則 1 使用恰當的技術部署應用程式 最好開發 測試 運維團隊使用相同的構建工具 2 使用同樣的指令碼向所有環境部署 不同可以通過配置檔案來體現 3 為部署流水線的每個階段建立指令碼 並把指令碼納入配置管理,同樣可能涉及配置資料 依賴庫 元件庫等 4 使...