BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Docker爱好者欢庆吧!CoreOS被添加到DigitalOcean中

| 作者 Richard Seroter 关注 8 他的粉丝 ,译者 张晓鹏 关注 0 他的粉丝 发布于 2014年9月27日. 估计阅读时间: 7 分钟 | CNUTCon 了解国内外一线大厂50+智能运维最新实践案例。

云主机提供商DigitalOcean最近宣布开始支持CoreOS,CoreOS是一种新的以Docker为中心的Linux发行版本。随着基于容器的开发成为主流,CoreOS也越来越受欢迎,支持这个特殊操作系统的云主机提供商日益增加,DigitalOcean也是其中的一分子。

于此同时,Digital和CoreOS在他们的官方博客上也炫耀了这一新的关系。CoreOS的博客指出已经有超过2000个的开发者在DigitalOcean上申请了CoreOS,并且每个虚拟主机提供者都有权使用alpha、beta或者正式版本。DigitalOcean则宣布在CoreOS的alpha通道上可以部署一种叫做“droplets”的虚拟容器。除了CoreOS,DigitalOcean还支持其它版本的Linux,比如CentOS、Debian、Fedora和Ubuntu。

CoreOS是轻量级的Linux版本,它在谷歌的Chrome OS基础上对集群(clusters)而不是单个服务器的处理做了优化。CoreOS只运行少量的基础服务,也没有包管理器(a package manager),它的理念是几乎所有的应用都应在Docker的容器中运行。集群管理是通过两个核心技术来完成的,DigitalOcean在新的教程中对此进行了描述。集群中的业务发现(service discovery)则是通过叫做etcd的服务来完成的。

Etcd服务是一个高可用性的键-值(key-value)存储,每个节点可以从中获取配置数据,询问运行业务的相关信息,并且发布一些信息告知给相关的其它成员。每个节点都运行自己的etcd客户端,它们被配置成可以和集群中的其它客户端相关通信以共享和发布信息。

如果应用想从这个存储中取回信息,它只需要在本地机器上直接连接etcd客户端接口即可。在每个节点上所有的etcd数据都是可用的,这和数据实际的存储位置无关,而每个要存储的数据都会分布在整个集群中,并进行自动化地复制。首要选择也会自动化地处理,这使得对这个键值存储的管理变得相当简单。

对CoreOS集群和相关Docker容器的编制(orchestration)则是通过叫做“fleet”的服务来完成的。

Fleet的概念非常简单,它就是完成集群范围内的系统初始化的。

在集群环境中的每个节点上都会运行它自己惯用的初始化系统systemd,这个初始化系统用于启动和管理本机上的服务。所以从简化的意义上说,fleet做的就是提供相应的接口来控制集群中每个成员上的systemd系统。

你可以通过fleet来启动或停止相应的服务,或者是获取那些在集群中正在运行进程的状态信息。不仅如此,fleet还有一些重要的特性使得它的可用性更强,比如它支持分布式处理的机制,这样就可以在不太忙的主机上来启动服务。

你也可以为要运行的服务指定一些预置条件。比如,你可以强调一个服务必须运行在特定的主机上,或者不允许运行在特定的主机上,而判断的条件包括主机的位置、主机是否已经运行,等等。因为fleet是利用systemd来启动本地进程,所以每个定义服务的文件也就利用了systemd的单元文件(unit files),这些文件带有一些定制选项。你可以一次性地把这些配置文件传递给fleet,并利用它来管理整个集群。

CoreOS提供了独特的自动更新策略,它在一个双重根分区下实现对操作系统补丁的更新。

首先,你的系统会在A根分区上启动,而CoreOS会和更新服务进行交互,查找是否有新的更新。如果有可用的更新,那这个补丁会被下载并安装到B根分区。为了确保不影响当前的应用,需要使用Linux的控制群组来对更新进程进行控制,即对磁盘和网络I/O的访问进行限制。

使用双重根分区策略,是对现有的使用yum和apt-get包管理工具流程的改进。使用包管理工具来更新,会导致一些已知的问题,如它会强制守护进程使用新的库文件或者移动配置文件到某个位置。而在CoreOS中,系统更新被视为一个原子操作,所以它是可以回退的。

在CoreOS系统中,当前使用的根分区(假设是root A)不会被修改,所以你的服务器永远不会处在不稳定或部分更新的状态。当你要完成更新时,只要启动机器,那么几秒内刚刚更新好的系统就会在另一个根分区(root B)上启动起来了。

云主机提供商们已经在排队支持CoreOS了,除了DigitalOcean以外,AWSGoogle Compute EngineCenturyLink CloudRackspaceOpenStackVMware其它一些厂家也已经支持CoreOS。CenturyLink Labs(可参考 之前InfoQ的新闻报道)在其开源项目Panamax 中把CoreOS 打造成Docker的管理平台,并使用fleet来对Docker进行编制。

目前,DigitalOcean对虚拟容器droplets做了定价,即单CPU、512MB内存和20GB SSD硬盘配置时每月5美金。DigitalOceanh具有全球性的数据中心,分别部署在旧金山、纽约、伦敦、阿姆斯特丹和新加坡。随着对CoreOS支持的发布,DigitalOcean还提供了一套关于创建CoreOS集群和使用Docker容器的教程。就像TechCrunch报道的那样,看样子DigitalOcean的团队正在做很多的事情。

这如同DigitalOcean公司的共同创始人Ben Uretsky经常给我讲的那样,这家公司在过去几年中为满足要求仅仅忙于规模的扩张了,而一些基本的产品开发(比如增加更多的发布版本)却常常中途而废了。现在DigitalOcean有了大量的资金和更大的团队,它可以把注意力投入到提供更多新的特性上了,比如说如今CoreOS的发布。

查看英文原文:Docker Fans Rejoice! CoreOS Added to DigitalOcean


感谢夏雪对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT