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