容器,云和代碼:Yelp如何使用Mesos和Docker構建混合云?
【編者的話】為了解決Yelp的基礎設施問題,Eaton帶領團隊對容器進行調研并尋求解決方法,最終決定使用Apache Mesos和Mesosphere。基于Mesosphere構建了PaasTA服務,為測試環境開發了Seagull平臺。本文對Yelp公司采取容器 方案前的困境以及采取容器方案后的好處分別進行了說明。
2013年底,Yelp的運營總監Sam Eaton意識到公司基礎設施存在問題。對開發和運維人員來說,在Yelp自己的數據中心和亞馬遜云服務上擴展網站已經變得十分復雜并要消耗大量資源。
Eaton解釋到:“現在的問題是我們如何在自己的數據中心和AWS云上統一管理部署服務,并且不增加開發人員負擔”。
選擇太多
諷刺的是,Yelp的問題與缺乏創新無關。Yelp已經為裸機部署開發了自己的系統,并且使用 開源的Asgard系統用于AWS部署。為了實現持續部署,每天都要對網站進行多次更新。Yelp正飽受各種方案的煎熬而且不得不忍受每個方案的優缺點。為AWS構建新的虛擬機映像(即“黃金映像”)可能需要長達一個小時,即便這些鏡 像可以快速啟動。在裸機上啟動業務,管理方便,不過擴展性是個大問題。Yelp的開發者嘗試在本地部署服務和在云中也部署服務時,處理AWS實例和 Yelp硬件之間的差異對他們來說真是糟透了。
Eaton說:“他們不得不為裸機采取一種配置,為AWS采取完全不同的配置,開發人員的感覺真是糟透了!”。
除了服務部署復雜性,Yelp還存在測試問題。Eaton說開發人員每天都會發布很多版本,不過因為進行一次完整的測試需要90分鐘,整個速度被 大幅耽擱。并行化的測試也存在問題,Eaton的研究小組發現想要不浪費資源,完成所有依賴關系分析并找到測試計劃的最佳方案真是太難了。
他說:“對我們來說,這是一個‘裝箱’問題,而且更多的虛擬機或硬件也無法解決”。
Docker來了
Eaton和他的團隊為了解決云和本地不斷增長的服務池問題考察了很多方案。他們曾經打算部署OpenStack也曾考慮Eucalyptus(一個創業公司,專注與AWS兼容性,后被惠普收購)的方案,就為了建立一個橫跨云和本地的混合環境。不過,Yelp的技術團隊最終決定今后的方向是 Docker容器而不是虛擬機。Docker可以解決一些Yelp的服務部署問題,因為開發人員可以管理自己的容器,不用等到構建最終鏡像就可以迅速處理依賴問題并打包。
Running millions of containers means Mesosphere and Mesos
Eaton和他的團隊經過研究,認定 Apache Mesos的Mesosphere是滿足Yelp業務擴展運行容器的最佳方案。Mesos在不停掉服務器相關組件的情況下就完成了Yelp的機器集群(不管虛擬還是物理)資源池聚合給Eaton留下了深刻印象。開發人員可以任意啟動容器,再也不用擔心服務器配置了。
除了Apache Mesos的基礎功能,Eaton還選擇對Mesosphere的所有功能進行測試,其中包括Marathon工具。Eaton喜歡Mesosphere 在 Marathon這個PAAS框架中提供的原生hooks,Yelp用他們來計劃和編排計算作業。此外,Mesosphere對數據中心操作系統(DCOS)的理念也與Yelp的目標一致,Yelp的愿景就是在本地和云中創建一個單一的開發環境,工具鏈和DevOps過程。
(* Mesophere仍然提供開源源碼下載,但現在還提供作為商業軟件產品的 數據中心操作系統(DCOS)。DCOS產品包括許多重要組件和附加功能,將大大改善部署和管理分布式服務的體驗。)
Yelp能夠在三個月內打造一個Mesosphere集群,并完成生產環境要求。
PaaSTA服務
在Mesosphere上,Eaton的團隊構建了一個以Docker為基礎的微服務架構,它被稱為PaaSTA,使得容器級的作業在任意計算平臺上都可以運行。Eaton解釋道:
我們非常喜歡Docker,在整個過程中帶給開發人員一個一致的環境。Marathon和PaaSTA的工具,讓他們有一個更好 的方式來安排適當的容器運行他們的服務,并向開發人員屏蔽底層基礎設施。他們不必關心自己的業務是運行在自己的數據中心或者AWS還是其他一些云服務提供 商。 如果根據PaaSTA平臺規則編寫服務并正確的配置Docker容器,那么PaaSTA會通過資源發現并啟動容器完成剩下所有服務部署工作。整個Yelp的工程團隊都感受到了PaaSTA和Mesos的好處。基礎架構服務技術主管John Billings是這樣說的:
我們曾經花了大量時間手動分配服務到獨立機器。當推出新服務時就遇到了瓶頸。如果有一臺機器出現故障,那么我們不得不單獨聯系所 有受影響的用戶,并要求他們把服務遷移到新的硬件上。當業務量增加的時候我們必須保證服務正常。當生產服務已經發展到數以萬計時,這已經成為了一個不可能 的任務。“PaaSTA通過允許內部數據庫和AWS上的硬件自動配置和服務遷移,將我們從這些繁瑣耗時的任務中解放出來。開發人員和運維人員完全愛上了這種技術。”
視頻
與Seagull一同起飛
除了提供的核心PaaSTA平臺服務,Yelp也用Mesospher來改進測試基礎設施,開發了全新的測試平臺Seagull。通過使用Mesos和一個自定義調度,Yelp為單元測試建立一個更高效的并行和快速系統。Yelp公司目前每天運行約1700萬獨立測試,有的 直接在機器上進行,有的在容器上,這些全部由Mesos管理。Eaton說,Yelp已經每天啟動100萬個容器,隨著公司繼續將測試轉移到容器中這個數 字還會繼續增加。
Mesosphere也給了Yelp的一個意想不到的好處:提高資源利用率意味著Eaton的團隊可以更積極的應對AWS spot market計算能力來節省資金。
他解釋說:“隨著測試數量增加,我們購買的用于測試的AWS實例已遠超保留的實例數量,如果我們使用動態方式購買實例,這些實例在測試過程中可能就釋放了。Mesos能夠通過重新安排測試到新的實例且無需中斷作業,這樣就能把這類實例保留下來。”
Eaton說:“Mesosphere和Marathon的結合,為我們的開發人員提供了一個更有彈性計算能力并可以快速部署的環境,他們可以將更多精力放在編程上而不用太關注不同平臺的影響。對開發人員來說Mesosphere很好,對Yelp而言這就夠了。”
原文鏈接:CONTAINERS, CLOUDS AND CODE: HOW YELP BUILT A HYBRID CLOUD USING MESOS AND DOCKER (翻譯:朱高校)
來自:http://dockone.io/article/880
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!