云主机提供商 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 以外, AWS 、 Google Compute Engine 、 CenturyLink Cloud 、 Rackspace 、 OpenStack 、 VMware 和其它一些厂家也已经支持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 )关注我们,并与我们的编辑和其他读者朋友交流。
评论