【编者按】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 (编译/魏伟 审校/仲浩)