【編者按】etcd 是一個高可用的 Key/Value 存儲系統,主要用于分享配置和服務發現。etcd 的靈感來自于 Doozer,etcd通過創建一個hub跟蹤一個集群中每個節點的狀態并管理這些狀態將會讓分布式系統集群管理變得簡單,谷歌的開源容器管理軟件Kubernetes和Pivotal的開源PaaS軟件Cloud Foundry都利用etcd來進行 key/value存儲。本文來自DataCenterKnowledge。
谷歌的開源集群容器管理軟件Kubernetes和Pivotal的開源PaaS軟件Cloud Foundry有什么共同之處?答案是etcd,CoreOS開發并維護的開源分布式鍵值存儲系統,CoreOS是一家舊金山的初創公司,它在本月早些時候宣布獲得了一筆800萬美元的啟動資金。
CoreOS的 etcd項目主管Blake Mizerany在他的一篇博客中解釋道:
分布式系統集群管理是一項復雜的業務,etcd通過創建一個hub跟蹤一個集群中每個節點的狀態并管理這些狀態,將會讓這項工作變得簡單易行。它復制集群中所有節點的狀態數據,防止單個節點故障影響整個組。
CoreOS參加 GopherCon會議全體成員合影
在一次采訪中,CoreOS首席執行官Alex Polvi說etcd是Chubby的實現,Chubby是谷歌設計為管理每一個分布式系統中一致性問題而設計的軟件工具。針對分布式計算的“consensus問題”,Chubby利用一個“consensus算法”Paxos來管理服務器集群consensus。這consensus是彈性分布式系統的關鍵。
谷歌在2006年發表過一篇描述Chubby的論文,這給Mizerany和他的前同事Keith Patrick 啟發,他們在2011年開發的一個高度可用的數據存儲系統Doozer,那時他們兩人都工作在PaaS平臺公司Salesforce收購的Heroku。Doozer又成為etcd的靈感,兩者都是用Go寫的,但是兩者之間最大的不同是Doozer使用Paxos,但是etcd的consensus protocol是Raft,這使其有能力在集群中所有節點上保持相同的狀態改變指令日志。
谷歌今年六月開源的Docker容器管理軟件Kubernetes是其內部系統Omega的一個輕量級的版本,它依賴etcd來進行集群管理。“運行Kubernetes,你必須運行etcd,“Polvi說。CoreOS所有正在構建的應用都是受到谷歌運行數據中心基礎設施的啟發而來的,所以“我們很興奮地看到他們在我們當中的一個工具上構建應用,”他說。
CoreOS公司的主要產品是一個服務器操作系統,這個系統是設計用來讓企業像Google,、Amazon 或者 Facebook那樣運行他們的數據中心,其目標客戶是那些有著谷歌數據中心的規模,但是又不像那些web巨頭,他們自己不在這些數據中心中設計、構建應用,據CoreOS披露,他們目前唯一的客戶是Atlassian software,一家澳大利亞的公司,以創建JIRA聞名于世。
正如Polvi所說,Kubernetes是我們向我們一直夢想的“操作烏托邦”邁進的重要一步。Kubernetes是否會成為事實上的標準管理工具現在預測還為時過早,但它所代表的基礎設施操作的風格正是目前的趨勢。
其他行業要參與Kubernetes
一群IT基礎設施的重量級玩家加入谷歌的開源項目,這意味著Kubernetes某種程度的標準化即將來臨。IBM、Red Hat和微軟都承諾為該項目作出貢獻,初創企業CoreOS、 Docker、 Mesosphere 以及SaltStack也是如此。
微軟將確保Kubernetes能夠在其Azure云中作為基于Linux的虛擬機系統容器并正常運作;紅帽則將其引入了自己的云產品;IBM的計劃是為Kubernetes與Docker貢獻代碼;CoreOS將在其操作系統發行版中為Kubernetes提供支持;SaltStack正努力簡化Kubernetes運行在其它環境下的部署流程;而Mesosphere則打算將這項技術加入到自己的Mesos同名開源項目當中。
Red Hat OpenShift工程主管Matt Hicks說:
軟件公司對Kubernetes很感興趣,因為它們非常希望擁有一個通用的模型來描述應用程序在Linux容器里如何構建和相互聯系。你如何協調以及結合多個容器創建一個有用的應用程序對我們來說是一項非常有用的技術。
從通用的框架到完全自動化
當Google宣布開源Kubernetes社區有新的成員加入之日起,他們的目標是確保它在任何應用程序以及任何環境中都是一個開放的容器管理框架,這意味著社區必須在通用管理框架的屬性上達成共識。
Hicks說,框架目前還有很多問題需要解決,例如因為容器可以在共享資源上運行,面臨的安全問題也不容忽視。
Polvi表示:
實際上,你希望能夠對著系統描述你的目標,讓它找到最好的方法去實現它們。用AWS或基于OpenStack云,你不得不指定哪個服務器或數據庫。但是有了Kubernetes,你可以告訴系統,你的應用程序需要一個數據庫、三個服務器、X量的存儲等等。“去這樣做,保證它是如此”他說。
原文鏈接:etcd: the Not-so-Secret Sauce in Google’s Kubernetes and Pivotal’s Cloud Foundry (編譯/魏偉 審校/仲浩)