Yelp是如何利用Mesos和Docker建立混合云的
還是在2013年底,Yelp 運營總監Sam Eaton 意識到公司存在一個基礎架構問題。運維人員和開發人員在自己的數據中心和AWS云上做站擴展已經變得復雜和資源密集。
“問題是我們如何能夠讓開發人員在沒有過多復雜的工作情況下在數據中心和AWS上統一管理部署服務。”Eaton 解釋到。
太多的選擇
Yelp經歷了太多的方案,并且考慮了每種可能的優缺點。建一個新的虛擬機鏡像,所謂的“黃金鏡像”,對于AWS而言需要花 1個小時,盡管建立的鏡像啟動會非常快。在裸機上啟服務獲得權限更多但是擴展很麻煩。Yelp的開發者試著部署部分服務在本地部分在云上需要很長一段時間考慮AWS實例和Yelp硬件之間的區別。
“他們不得不用一種方式去配置裸機上的服務,并使用另一種完全不同的機制去配置AWS。這對于開發者來說太糟了“,Eaton說。
服務除了部署負責,Yelp還有個測試的問題。Eaton說開發者一天要發布多個版本的新代碼,但是總被測試的速度拖后腿,因為,跑完所有要求的測試要花上90分鐘。均衡測試的運行是有問題的,Eaton的團隊發現,至少在不浪費資源的情況下,去統計所有的依賴關系然后再找出一個***方法去規劃所有的測試是并不容易的。
他說:”這是一個“裝箱”問題,用更多的VMs和更多硬件來跑也不能很好地解決這個問題“。
Docker來了
Eaton和他的團隊考慮大量的用于解決云和本地日益增長的池的這個難題的方案。他們考慮過部署OpenStack。他們也考慮過用Eucalptus的軟件--這是一家初創企業,因為惠普的需求,專注于AWS的兼容--旨在建立一個跨應急服務器與云的混合環境。
但是,Yelp的技術團隊最終決定未來將圍繞Docker容器,而不是虛擬機。Docker可以解決Yelp的一些部署問題因為它提供開發者可以管理他們自己的容器的能力,并且可以不用等”黃金鏡像“生成就可以迅速決定打包和依賴的問題。
運行百萬個容器意味著Mesosphere和Mesos
Eaton和他的團隊研究并決定用Mesosphere的進化的Apache Mesos 作為***的運行容器的方案來滿足Yelp要求的規模。Eaton,對Mesos如何將Yelp的機器集群--虛擬和物理的--變成聚合資源池,并沒有關掉周邊的服務器組成,留下了深刻的印象。開發者可以隨意啟動容器,不考慮任何服務器的配置。
不僅僅堅持基礎版的Apache Mesos,Eaton選擇測試Mesosphere的打包版本*,包含了諸如Marathon的工具。Eaton喜歡Mesosphere在 Marathon 的PAAS框架中提供原生的hooks, Yelp使用這些hooks計劃和安排計算任務。此外,Mesosphere對數據中心操作系統(DCOS)的進化概念,也與Yelp的目標--建立一個單一開發環境,工具鏈,和跨本地和云端服務的開發運維過程組,所一致。
(Mesophere 依舊提供開源下載,但下載還提供它的數據中心操作系統(DCOS)作為商業軟件產品。DCOS預先打包許多重要組件,包括附加功能,極大地簡化了部署和管理分布式服務的經驗。)
Yelp可以在三個月內構建一個功能化Mesosphere集群,并使其達到預準備工作。
#p#
服務 PaaSTA
在Mesosphere之上,Eaton的團隊構建了一個基于Docker的微服務架構,被稱為PaaSTA,來允許容器級作業跑在任意的計算平臺上。
Eaton解釋到:
我們docker在整個堆棧給開發者一個相同的環境。Marathon,及在PaaSTA和工具,給了他們一個更好的方法來安排適當數量的容器來運行他們的服務,并從開發人員隱藏了底層基礎設施。他們不需要擔心他們的服務是否運行在數據中心,在AWS,或其他云提供商。如果他們根據PaaSTA平臺合同寫服務,和配置他們的docker容器以正確的方式,PaaSTA負責其他工作的服務部署,通過提供資源發現和啟動容器。
整個Yelp工程團隊感受到PaaSTA和Mesos的好處。服務基礎設施技術主管約翰•比林斯解釋到:
我們花大量的時間手工分配各個機器上的服務。推出新服務時導致一個瓶頸。如果有一臺機器故障,我們不得不單獨聯系所有受影響服務的所有者,并要求他們將他們的服務移動到新的硬件。我們還得在通訊量增加的同時必須保持機器之間的服務。我們增長了數以萬計的生產服務,這是成為一個不可能的情況。
“PaaSTA通過允許自動配置和遷移服務在內部和AWS硬件讓我們從這些耗時的任務中解脫。開發人員和操作完全愛上了這項技術。”
與海鷗(Seagull)飛行
除了提供的核心PaaSTA--平臺即服務系統,Yelp也使用Mesosphere擴充其測試基礎設施,開發一個新的測試平臺叫做Seagull(海鷗)。
通過使用Mesos可和一個自定義的調度器,Yelp能夠建立一個更高效的并行系統和加速單元測試。公司現在每天運行著大約1700萬獨立測試, 一些計劃直接在機器上,一些在容器里--全通過Mesos管理。伊頓說,Yelp每天已經啟動100萬個docker容器,當公司將更多的測試移到容器里,這個數字也隨之增加。
Mesosphere也給了Yelp一個意想不到的好處:提高資源利用率意味著伊頓的團隊可以通過更靈活地部署AWS的spot市場容量來省錢。
“隨著測試數量的增加,我們出價購買用于測試的AWS實例將超過我們預定的量,”他解釋說。“如果我們固定購買實例的量, 那些實例可能會在測試中途消失。Mesos允許我們存活這類動態購買,重新安排測試到新的實例上并且不停止測試。“
Mesosphere和Marathon給我們的開發人員更彈性計算能力,讓他們從根本上加快部署,”伊頓說。“他們花更少的時間處理不同的平臺,更多時間花在他們的代碼。Mesosphere對于開發人員來說很好, 這對Yelp來說很好。