存档

‘CoreOS操作系统’ 分类的存档

CoreOS Linux终结升级周期

2016年5月17日 评论已被关闭

CoreOS Linux终结升级周期

http://digi.163.com/14/0808/17/A353O9N500162OUT.html

摘要:CoreOS发布了他的Linux发行版的商用支持版,并且宣称将废除手动更新。国际数据集团新闻社消息——CoreOS发布了商用Linux发行版,以期能简化系统管理员的生活。这个Linux发行版可持续进行自动更新,不需要进行重大升级。

CoreOS提供其同名的Linux发行版做为商业服务,开始为一个月100美元。

“商家现在可以开始考虑将CoreOS作为他们系统团队的延伸,对于企业Linux客户,这将是他们会需要的最后一次迁移。”CoreOS的创始人和CEO在一份声明中这样说。

商业Linux订阅并不是什么新鲜事:Red Hat和Suse都在为他们各自的发行版提供商业订阅。

因为这些以Linux为基础的公司使用的应用程序和库都是开源和免费提供的,所以订阅的费用不包括软件本身,而收费来自更新、漏洞修复、集成以及发生问题时的技术支持。

CoreOS公司声称,CoreOS将会和这些发行版不同,它将不会有重大更新,而在那些发行版中这些更新通常需要一次更新所有的包。在CoreOS中,它的更新和新特征将会在就绪后自动安装入操作系统中。

服务中提供了一个叫做CoreUpdate的仪表盘,如果管理员不想自动更新所有包,它可用于标明选取哪些软件包获取更新。

CoreUpdate可以同时管理多个机器,而且提供了回滚功能——在更新引起问题可使用。

163930o16iiijk7z1hi6dj.png

CoreOS于去年十二月发布,它的设计旨在关注开源操作系统内核的新兴使用——用于大量基于云计算的虚拟服务器。

CoreOS的设计使其平均消耗要少于其他Linux发行版通常消耗的一半。系统中所有的程序运行在Docker虚拟化容器中,所以它们几乎可以在瞬间就开始运行。

由于CoreOS分为两部分的新用法使其更新更为容易。一部分放置当前版本的系统,而另一部分系统来进行升级,平滑地进行升级包或者整个系统。

CoreOS服务可以运行在本地,或者在Amazon,Google和Rackspace云服务上。

CoreOS周一还宣布他们收到了来自Kleiner Perkins Caulfield and Byers风险投资公司的800万美元的支持。他们此前还收到了红杉资本和斐然资本的投资。

作者Joab Jackson负责IDG新闻服务机构中企业软件和通用技术的新闻。Twitter上关注Joab@Joab_Jackson。Joab的电子邮箱地址是Joab_Jackson@idg.com

via: http://www.computerworld.com/s/article/9249460/CoreOS_Linux_ending_the_upgrade_cycle?taxonomyId=122

译者:linuhap 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

分类: CoreOS操作系统 标签:

从头到尾在CoreOS上构建你的第一个应用

2016年5月17日 评论已被关闭

从头到尾在CoreOS上构建你的第一个应用

http://dockone.io/article/66

【编者的话】作者以自己的Mac笔记本为例,介绍了如何在CoreOS上安装WordPress应用,没有过多的理论解释,全部是实战类教程,推荐想快速了解CoreOS的同学阅读。

我相信你一定听说过CoreOS,但是你是否真正在它上面部署过一个应用了?可能很多人都没有部署过。在CoreOS上构建一个应用是非常困难且令人沮丧的(译者注:frustrating,用了这个词,看来确实难)。因为文档比较散乱,并且你不得不在开始之前学习所有相关的技术,包括etcd、systemd、Docker。如果你和我一样比较懒惰,只是想试试CoreOS而不想小题大做,那么让我来帮你吧。接下来我们将会在CoreOS上创建一个简单的WordPress应用以及MySQL数据库。

Screen-Shot-2014-03-25-at-2.13_.49-PM_.png

 

如果你使用的是Mac,可以通过安装命令行工具来控制CoreOS

fleetctletcdctl 是原生的控制CoreOS集群的工具,安装步骤如下:

$ brew install go etcdctl $ git clone https://github.com/coreos/fleet.git
$ cd fleet
$ ./build
$ mv bin/fleetctl /usr/local/bin/

安装一个本地的CoreOS集群,并运行

Vagrant是非常简单的。
$ git clone https://github.com/CenturyLinkLabs/coreos-vagrant $ cd coreos-vagrant/cluster
$ vagrant up --provision

现在你的笔记本上有一个由最小的3个CoreOS系统组成的集群。简单极了,现在让我们使用fleetctl来检查下。
$ fleetctl list-machines MACHINE IP METADATA
09fd0a88... 10.0.2.15 -
77763947... 10.0.2.15 -
f31c383c... 10.0.2.15 -

太棒了,跑起来了。

使用fleet在CoreOS集群上部署应用

现在你有一个CoreOS集群了。接下来fleetctl命令可以让你在CoreOS集群节点上部署应用,但要用fleet写服务文件。当然,不需要你自己来写。你可以用简单的YAML格式来生成服务(service)文件。

$ sudo gem install bundler fig2coreos

$ cat fig.yml
web:
image: ctlc/wordpress
ports:
- 80:80
environment:
DB_USER: root
DB_PASSWORD: qa1N76pWAri9
links:
- db
db:
image: ctlc/mysql
ports:
- 3306:3306
environment:
MYSQL_DATABASE: wordpress
MYSQL_ROOT_PASSWORD: qa1N76pWAri9

$ fig2coreos myapp fig.yml coreos-files

$ cd coreos-files

$ ls
db-discovery.1.service
db.1.service
web-discovery.1.service
web.1.service 

fleetctl客户端工具使用etcd的键值存储来确定它要访问的服务器以及访问集群中有etcd服务端运行的服务器。下面是如何在CoreOS集群中部署你的应用。

$ fleetctl start db.1.service

$ fleetctl list-units
UNIT        LOAD    ACTIVE  SUB DESC        MACHINE
db.1.service    loaded  active  running Run db_1    9c008961.../10.0.2.15

$ fleetctl start web.1.service

$ fleetctl list-units
UNIT        LOAD    ACTIVE  SUB DESC        MACHINE
db.1.service    loaded  active  running Run db_1    9c008961.../10.0.2.15
web.1.service   loaded  active  running Run web_1   9c008961.../10.0.2.15 

现在你的程序运行起来了,但是服务还没有注册到etcd。幸运的是,fig2coreos已经为我们自动生成服务文件。

$ fleetctl start db-discovery.1.service
$ fleetctl start web-discovery.1.service

$ fleetctl list-units
UNIT            LOAD    ACTIVE  SUB DESC        MACHINE
db-discovery.1.service  loaded  active  running Announce db_1   9c008961.../10.0.2.15
db.1.service        loaded  active  running Run db_1    9c008961.../10.0.2.15
web-discovery.1.service loaded  active  running Announce web_1  9c008961.../10.0.2.15
web.1.service       loaded  active  running Run web_1   9c008961.../10.0.2.15

$ etcdctl ls --recursive
/services
/services/web
/services/web/web_1
/services/db
/services/db/db_1

$ etcdctl get /services/web/web_1
{ "host": "core-03", "port": 80, "version": "52c7248a14" }

$ etcdctl get /services/db/db_1
{ "host": "core-03", "port": 3306, "version": "52c7248a14" }

 

部署完成

就这样,搞定了。在Vagrant 1.5使用Vagrant Cloud账号,你可以访问你的WordPress应用。如下图:

$ cd ~/coreos-vagrant/cluster/

find out which box is hosting your port 80

$ etcdctl get /services/web/web_1
{ "host": "core-03", "port": 80, "version": "52c7248a14" }

$ vagrant share core-03 --http 80
==> core-03: Detecting network information for machine...
core-03: Local machine address: 192.168.65.2
core-03: Local HTTP port: 80
core-03: Local HTTPS port: disabled
==> core-03: Checking authentication and authorization...
==> core-03: Creating Vagrant Share session...
core-03: Share will be at: quick-iguana-4689
==> core-03: Your Vagrant Share is running! Name: quick-iguana-4689
==> core-03: URL: http://quick-iguana-4689.vagrantshare.com

 

Screen-Shot-2014-03-25-at-1.58_.16-PM_.png

 

结论

现在你可以用CoreOS做很多事情,但至少现在你已经做完基本的工作了,如果你打算在生产环境使用多主机的Coreos集群。需要你在系统中增加ambassador容器。事实上,你可以通过ambassador容器连接etc服务器,我们将会在下周发表另外一篇博文。

原文地址:http://newlabs.wpengine.com/bu … reos/

分类: CoreOS操作系统 标签:

CoreOS:最小化定制版linux系统

2016年5月17日 评论已被关闭

CoreOS:最小化定制版linux系统

http://www.egouz.com/topics/7845.html

CoreOS:最小化定制版linux系统是一套轻量级,用于大规模部署的操作系统。它借鉴了Google的Chrome OS,特别是其对数千服务器的分布式管理。,CoreOS项目是Google ChromeOS代码的一个fork版本,目前已成为一个超级精简的服务器操作系统,进化速度堪比ChromeOS。

CoreOS:最小化定制版linux系统

CoreOS可以让消费者部署服务器集群,而Ubuntu、红帽和Debian等都是数年前为更小规模部署而开发的。在当时,消费者们只是部署几台服务器,并不需要现在的规模。如今的复杂度意味着要部署数千台服务器会很麻烦。有了CoreOS,基础架构会自动升级,就像无需用户操心的Chrome浏览器升级一样。

CoreOS使用了Linux容器Docker。Docker在开发者将应用部署到云基础架构上时变得日益流行。Docker允许应用数据与运行在云上的操作系统同步,这意味着开发者可以直接在桌面环境中操作,用Docker来自动同步更新。

“CoreOS很小很轻量,管理员操心的事情会少很多。它允许快速修复。占据的空间也很小,你只部署需要的东西”,鲍尔维说道。他还补充道,CoreOS为只读状态,因此在一大群服务器中能保持一致。

CoreOS有两个root分区,我们暂且称其为root A和root B。CoreOS会与更新服务进行交互,查找更新并自动下载可用的更新,如果初始状态下,系统在root A下启动,更新就会被安装到root B,重新在root B下启动系统就可以完成更新。这个个过程中,被更新的机器不需要从负载集群中移除。同时,为了保证其它应用程序不被打断,CoreOS会通过Linux cgroups限制更新过程中的硬盘和网络I/O。

CoreOS为现代网络的服务器量身定做,Polvi团队对这个服务器操作系统做了最大的精简,所有附加的功能都被剔除了,并将操作系统和应用程序做了完全的分离。CoreOS核心思想是降低操作系统和应用程序的耦合度,使运行这些服务器的公司可以更快速、更廉价地更新自己的线上业务。

在CoreOS中,所有应用程序都被装在一个个“集装箱(Container)”中,这些集装箱就像一个个软件代码的小气泡,通过最简单的接口运行在操作系统之上。这意味着你可以很轻松得将应用程序在操作系统和计算机之间转移,就像是在轮船和火车上搬运箱子一样,同时也意味着可以在不中断应用程序的情况下更新操作系统。

分类: CoreOS操作系统 标签:

CoreOS 实战:CoreOS 及管理工具介绍

2016年5月17日 评论已被关闭

CoreOS 实战:CoreOS 及管理工具介绍

http://www.infoq.com/cn/articles/what-is-coreos/

【编者按】CoreOS是一个基于Docker的轻量级容器化Linux发行版,专为大型数据中心而设计,旨在通过轻量的系统架构和灵活的应用程序部署能力简化数据中心的维护成本和复杂度。CoreOS作为Docker生态圈中的重要一员,日益得到各大云服务商的重视,目前已经完成了A轮融资,发展风头正劲。InfoQ希望《CoreOS实战》系列文章能够帮助读者了解CoreOS以及相关的使用方法。如果说Docker是下一代的虚拟机,那CoreOS就应该是下一代的服务器Linux,InfoQ愿和您一起探索这个新生事物。另外,欢迎加入InfoQ Docker技术交流群,QQ群号:365601355。

1. 概述

随着 Docker 的走红,CoreOS 作为一个基于 Docker 的轻量级容器化 Linux 发行版日益得到大家的重视,目前所有的主流云服务商都提供了对 CoreOS 的支持。CoreOS 是新时代下的Linux 发行版,它有哪些独特的魅力了?本篇作为《CoreOS实战》的第一部分,将向大家简要介绍 CoreOS 以及CoreOS 相关的管理工具,试图向您揭开CoreOS背后神秘的面纱。

2. CoreOS之禅

云计算新星 Docker 正在以火箭般的速度发展,与它相关的生态圈也渐入佳境,CoreOS 就是其中之一。CoreOS 是一个全新的、面向数据中心设计的 Linux 操作系统,在2014年7月发布了首个稳定版本,目前已经完成了800万美元的A轮融资。 CoreOS 专门针对大型数据中心而设计,旨在以轻量的系统架构和灵活的应用程序部署能力简化数据中心的维护成本和复杂度。现在CoreOS 已经推出了付费产品。通过付费,用户可以使用可视化工具管理自己的 CoreOS 集群。

与其他历史悠久、使用广泛的 Linux 操作系统相比,CoreOS 拥有下面几个优点。

首先,CoreOS 没有提供包管理工具,而是通过容器化 (containerized) 的运算环境向应用程序提供运算资源。应用程序之间共享系统内核和资源,但是彼此之间又互不可见。这样就意味着应用程序将不会再被直接安装到操作系统中,而是通过 Docker 运行在容器中。这种方式使得操作系统、应用程序及运行环境之间的耦合度大大降低。相对于传统的部署方式而言,在 CoreOS 集群中部署应用程序更加灵活便捷,应用程序运行环境之间的干扰更少,而且操作系统自身的维护也更加容易。

其次, CoreOS 采用双系统分区 (dual root partition) 设计。两个分区分别被设置成主动模式和被动模式并在系统运行期间各司其职。主动分区负责系统运行,被动分区负责系统升级。一旦新版本的操作系统被发布,一个完整的系统文件将被下载至被动分区,并在系统下一次重启时从新版本分区启动,原来的被动分区将切换为主动分区,而之前的主动分区则被切换为被动分区,两个分区扮演的角色将相互对调。同时在系统运行期间系统分区被设置成只读状态,这样也确保了 CoreOS 的安全性。CoreOS 的升级过程在默认条件下将自动完成,并且通过 cgroup 对升级过程中使用到的网络和磁盘资源进行限制,将系统升级所带来的影响降至最低。

另外,CoreOS 使用 Systemd 取代 SysV 作为系统和服务的管理工具。与 SysV 相比,Systemd 不但可以更好的追踪系统进程,而且也具备优秀的并行化处理能力,加之按需启动等特点,并结合 Docker 的快速启动能力,在 CoreOS 集群中大规模部署 Docker Containers 与使用其他操作系统相比在性能上的优势将更加明显。Systemd 的另一个特点是引入了 “target” 的概念,每个 target 应用于一个特定的服务,并且可以通过继承一个已有的 target 扩展额外的功能,这样使得操作系统对系统上运行的服务拥有更好的控制力。

通过对系统结构的重新设计,CoreOS 剔除了任何不必要的软件和服务。在一定程度上减轻了维护一个服务器集群的复杂度,帮助用户从繁琐的系统及软件维护工作中解脱出来。虽然CoreOS 最初源自于Google ChromeOS,但是从一开始就决定了 CoreOS 更加适合应用于一个集群环境而不是一个传统的服务器操作系统。

3. CoreOS相关工具

除了操作系统之外,CoreOS 团队和其他团队还提供了若干工具帮助用户管理 CoreOS 集群以及部署 Docker containers。

3.1. etcd

在CoreOS 集群中处于骨架地位的是 etcd。 etcd 是一个分布式 key/value 存储服务,CoreOS 集群中的程序和服务可以通过 etcd 共享信息或做服务发现 。etcd 基于非常著名的 raft 一致性算法:通过选举形式在服务器之中选举 Lead 来同步数据,并以此确保集群之内信息始终一致和可用。etcd 以默认的形式安装于每个 CoreOS 系统之中。在默认的配置下,etcd 使用系统中的两个端口:4001和7001,其中4001提供给外部应用程序以HTTP+Json的形式读写数据,而7001则用作在每个 etcd 之间进行数据同步。用户更可以通过配置 CA Cert让 etcd 以 HTTPS 的方式读写及同步数据,进一步确保数据信息的安全性。

3.2. fleet

fleet 是一个通过 Systemd对CoreOS 集群中进行控制和管理的工具。fleet 与 Systemd 之间通过 D-Bus API 进行交互,每个 fleet agent 之间通过 etcd 服务来注册和同步数据。fleet 提供的功能非常丰富,包括查看集群中服务器的状态、启动或终止 Docker container、读取日志内容等。更为重要的是 fleet 可以确保集群中的服务一直处于可用状态。当出现某个通过 fleet 创建的服务在集群中不可用时,如由于某台主机因为硬件或网络故障从集群中脱离时,原本运行在这台服务器中的一系列服务将通过fleet 被重新分配到其他可用服务器中。虽然当前 fleet 还处于非常早期的状态,但是其管理 CoreOS 集群的能力是非常有效的,并且仍然有很大的扩展空间,目前已提供简单的 API 接口供用户集成。

3.3. Kubernetes

Kuberenetes 是由 Google 开源的一个适用于集群的 Docker containers 管理工具。用户可以将一组 containers 以 “POD” 形式通过 Kubernetes 部署到集群之中。与 fleet 更加侧重 CoreOS 集群的管理不同,Kubernetes 生来就是一个 Containers 的管理工具。Kubernetes 以 “POD” 为单位管理一系列彼此联系的 Containers,这些 Containers 被部署在同一台物理主机中、拥有同样地网络地址并共享存储配额。

3.4. flannel (rudder)

flannel (rudder) 是 CoreOS 团队针对 Kubernetes 设计的一个覆盖网络 (overlay network) 工具,其目的在于帮助每一个使用 Kuberentes 的 CoreOS 主机拥有一个完整的子网。Kubernetes 会为每一个 POD 分配一个独立的 IP 地址,这样便于同一个 POD 中的 Containers 彼此连接,而之前的 CoreOS 并不具备这种能力。为了解决这一问题,flannel 通过在集群中创建一个覆盖网格网络 (overlay mesh network) 为主机设定一个子网。

4. 下篇介绍

在下一篇中,笔者将为大家展示如何建立一个 CoreOS 集群并通过 Kubernetes 管理其中的 Docker Containers。

分类: CoreOS操作系统 标签:

CoreOS logo服务器操作系统 CoreOS

2016年5月17日 评论已被关闭

CoreOS logo服务器操作系统 CoreOS

http://www.oschina.net/p/coreos

传统的服务器操作系统,包括大多数Linux发行版,每隔几年都会更换。在这期间,开发者会不断用安全补丁和更新完善这个系统,但是不会进行特别大的改动,最终这个操作系统以及其上的软件会慢慢僵化。但是CoreOS的思想是成为一个随时可被替换的操作系统,甚至在这个替换的过程中,应用程序的运行不会被打断。

CoreOS有两个root分区,我们暂且称其为root A和root B。CoreOS会与更新服务进行交互,查找更新并自动下载可用的更新,如果初始状态下,系统在root A下启动,更新就会被安装到root B,重新在root B下启动系统就可以完成更新。这个个过程中,被更新的机器不需要从负载集群中移除。同时,为了保证其它应用程序不被打断,CoreOS会通过Linux cgroups限制更新过程中的硬盘和网络I/O。

CoreOS为现代网络的服务器量身定做,Polvi团队对这个服务器操作系统做了最大的精简,所有附加的功能都被剔除了,并将操作系统和应用程序做了完全的分离。CoreOS核心思想是降低操作系统和应用程序的耦合度,使运行这些服务器的公司可以更快速、更廉价地更新自己的线上业务。

在CoreOS中,所有应用程序都被装在一个个“集装箱(Container)”中,这些集装箱就像一个个软件代码的小气泡,通过最简单的接口运行在操作系统之上。这意味着你可以很轻松得将应用程序在操作系统和计算机之间转移,就像是在轮船和火车上搬运箱子一样,同时也意味着可以在不中断应用程序的情况下更新操作系统。Polvi说:“我们之所以能够持续、快速地更新操作系统就在于我们能够保证应用程序的持续运行。”

开发一个这样的系统比想象中要复杂的多,但是Google已经在ChromeOS上做了很多基础性的工作,并且一个现有的“集装箱”项目Docker也解决了很多软件构建的问题。CoreOS和ChromeOS一样,都基于Linux内核,运行container的方式也类似于其它Linux操作系统。

分类: CoreOS操作系统 标签:

漫步云端:CoreOS实践指南(一)

2016年5月17日 评论已被关闭

漫步云端:CoreOS实践指南(一)

http://www.csdn.net/article/2014-12-29/2823356

摘要:CoreOS是一个采用了高度精简的系统内核及外围定制的操作系统。ThoughtWorks的软件工程师林帆将带来“漫步云端:CoreOS实践指南”系列文章,介绍CoreOS的精华和推荐的实践方法。本文为基础第一篇:CoreOS俯瞰。

【编者按】Docker和CoreOS都是硅谷创业孵化器的优秀“毕业生”,据说两家老板的私交很好,Docker做容器引擎,CoreOS做容器管理,合作得非常愉快,只是随着Rocket的发布逐步“分道扬镳”。虽然Docker和CoreOS都在求“简”,但是Docker的“简”是力求用户能达到最简便地使用,CoreOS的“简”是追求极致的轻量化,究竟哪个将是Container技术的未来,其实也很难说。今天开始,来自ThoughtWorks的软件工程师林帆将带来“漫步云端:CoreOS实践指南”系列文章,带大家了解CoreOS的精华和推荐的实践方法。本文为基础第一篇:CoreOS俯瞰。


作者简介:

林帆,生在80后尾巴的IT攻城狮,ThoughtWorks成都办公室CloudOps小组成员,平时喜欢在业余时间研究DevOps相关的应用,目前在备考AWS认证和推广Docker相关技术。


引言

相信许多人开始了解CoreOS是从2014年7月底的一则新闻:内置Docker容器的操作系统CoerOS发布首个正式稳定版本。在那之后的半年里CoreOS一路高歌猛进。8月中旬CoreOS收购私有Docker仓库服务商Quay.io,9月初DigitalOcean与CoreOS达成战略合作,9月底微软Azure云服务开始支持CoreOS系统镜像,10月中旬英国的知名云服务商BrightBox也加入支持CoreOS系统镜像的阵营,加上此前已经支持CoreOS镜像的全球主流云服务提供商,包括亚马逊的AWS、云计算巨头Rackspace和Google Computer Engine,CoreOS的名字已经无所不在。

作为一个发布仅仅一年有余的操作系统(首个发布版本在2013年3月),CoreOS在云计算相关的开源社区和大规模服务器集群的领域早已崭露头角,直接与主流Linux服务器操作系统同台竞争。至于后来RedHat祭出内建容器管理服务的系统Atomic,以及Canonical刚刚推出的Ubuntu Core,逐步掀起ContainerOps的大潮,一个全新的集群运维时代正在开启。而走在风头浪尖的CoreOS正是这股潮流的先驱者,它的出现远远不只是“又一个Linux发行版”,而是一个时代理念的颠覆。

这篇系列教程将从最基本的概念开始,顺着大规模集群管理和应用容器化这两条主线带大家了解 CoreOS 系统的独到之处,使得没有接触过这个系统的用户也能够快速的理解其中功能的精华和推荐的实践方法。

CoreOS 是什么

简单的说,它是一种基于 Chrome OS 再定制的轻量级 Linux 发行版本。

作为一个操作系统,CoreOS 采用了高度精简的系统内核及外围定制,将许多原本需要复杂人工操作或者第三方软件支持的功能在操作系统级别进行了实现,同时剔除了其他对于服务器系统非核心的软件,比如GUI和包管理器。

特别值得一提的是 CoreOS 对包管理器的态度和 Docker 的原生支持。这是许多习惯了传统 Linux 管理方式的用户在刚接触 CoreOS 时,最不习惯的地方,因为 CoreOS 没有提供现成的包管理工具。一个典型的困惑是:在 CoreOS 安装软件太不方便了。事实上 CoreOS 并不鼓励用户将各种应用软件直接安装在操作系统之上,而是提倡将所有服务运行在单独的应用容器中,由应用容器提供应用所需要的基础功能环境。这种做法将操作系统和应用程序的职责做了更彻底的分离,降低操作系统和应用程序的耦合度,使运行这些服务器的公司可以更快速、更廉价地更新自己的线上业务。

CoreOS 行走在云端

毫不夸张的说,CoreOS 是为云而生的操作系统。

这个“为云而生”包含两层含义:

  1. 首先,CoreOS 的设计立足点充分的考虑了云端生态系统的分布式部署、大规模伸缩扩展(Scaling)需求,我们将会再后面的内容中充分体会到这一点;
  2. 另一方面,CoreOS 对特定的云环境也有相当的依赖,其启动配置服务 cloud-init 是需要高度定制化的,CoreOS 官方提供了基于Vagrant、VMWare、AZure、AWS、RackSpace 等虚拟机或云服务提供商的定制版本,因此本地直接通过 ISO 安装的 CoreOS 则无法获得 cloud-init 相关的功能,比如集群的自发现和fleet的跨主机管理。

CoreOS 的用户体验

CoreOS 的核心思想来自于 Chrome 浏览器的用户体验:快速启动,后台更新,跨版本无缝更新,每个Tab页采用独立沙盒,单个Tab页崩溃能快速修复,整个浏览器也不会因为单个沙盒进程的崩溃而崩溃。引申到服务器上,试想将一个应用托管在应用容器中的服务从一个服务器转移到另一个服务器上,就像用鼠标将 Tab 页从一个浏览器拖拽到另一个浏览器界面上那样简单。而这些,正是 CoreOS 希望带给每一个用户的体验。

  • 更快的启动速度

因为轻,所以快。做为现代网络的服务器的产物,CoreOS 团队对这个服务器操作系统做了最大的精简,结果不仅使得系统与应用高度分离,更获得了极大的启动速度提升。根据官方数据,其系统运行时内存使用量只有114M(作者注:这是官方数据,实测在Vagrant环境下只有大约80M,比宣传的还要低),只有常见 Linux 服务器系统的一半略多 (约60%)。

此外,CoreOS 使用经 Mac 系统 launchd 的启发而开发的 Systemd 作为默认系统启动和服务管理器 (CentOS 7 也使用 Systemd 取代了过去的 SysV 启动服务)。与 SysV 相比,Systemd 不但可以更好的追踪系统进程,而且也具备优秀的并行化处理能力,加之按需启动等特点,并结合 Docker 的快速启动能力,在 CoreOS 集群中大规模部署 Docker Containers 与使用其他操作系统相比在性能上的优势将更加明显。

  • 平滑版本升级

传统的服务器操作系统,包括大多数Linux发行版,每隔几年都会更换。在这期间,开发者会不断用安全补丁和更新完善这个系统,但是不会进行特别大的改动,最终这个操作系统以及其上的软件会慢慢僵化。但是 CoreOS 的思想是成为一个随时可被更新的操作系统,其本身没有跨发布版本升级的概念,而是使用了类似 Arch Linux 的升级通道(Update Channel)和滚动更新的方式,在任何时候系统都能够直接升级成最新的发布版本。甚至在整个更新的过程中,应用程序的运行不会被打断。有了 CoreOS,基础架构会自动升级,就像无需用户操心的 Chrome 浏览器升级一样。

CoreOS 有两个系统分区 (dual root partition 有些地方翻译为双启动分区,这里实际上应该是系统分区,包括 /bin /sbin /lib 等目录,这些目录都是只读的)。两个分区分别被设置成主动模式和被动模式并在系统运行期间各司其职。主动分区负责系统运行,被动分区负责系统升级。一旦新版本的操作系统被发布,一个完整的系统文件将被下载至被动分区,并在系统下一次重启时从新版本分区启动,原来的被动分区将切换为主动分区,而之前的主动分区则被切换为被动分区。这个个过程中,被更新的机器不需要从负载集群中移除。同时,为了保证其它应用程序不被打断,CoreOS 会通过 Linux cgroups 限制更新过程中的硬盘和网络I/O。

这里值得一提的是,与传统 Linux 服务器不同,CoreOS 的系统分区被设计成在系统运行期间保持只读状态,这样确保了 CoreOS 的安全性,也进一步体现了 CoreOS 不希望用户将应用软件直接安装在操作系统上的态度。同时,集群内高度一致的系统内核和外围应用版本,简化了由于版本问题带来的操作复杂性,使得操作系统自身的维护更加容易。

  • 应用容器化

在 CoreOS 中,所有应用程序都被装在一个个 Docker 容器中,这些容器就像一个个软件代码的集装箱,通过最简单的接口运行在操作系统之上。这意味着它们可以被很轻松的在操作系统和计算机之间转移,就像是在轮船和火车上搬运箱子一样,同时也意味着可以在不中断应用程序的情况下更新操作系统。

Docker 在开发者将应用部署到云基础架构上时变得日益流行。通过容器化 (containerized) 的运算环境向应用程序提供运算资源,应用程序之间共享系统内核和资源,却互不干涉运行。单个容器的故障能够快速的重启修复,并且容器内的应用故障不会引起整个系统的崩溃。这个思想和浏览器的沙盒是如出一辙的。

CoreOS 的分布式系统服务

云的问题,最主要是由集中式到分布式思考方式的转变,分布式服务、分布式部署、分布式管理、分布式数据存储… 而这些都是 CoreOS 带给服务器革命的一部分。

为了从系统层面上解决这些分布式思维所面临的问题,CoreOS 团队提供了一些重要的工具帮助用户管理 CoreOS 集群以及部署 Docker 容器。

  • Cloud-init

在系统启动时,CoreOS 会读取一个平台定制的用户配置文件 (称为 cloud-config) 完成系统的初始化配置。通过配置中的信息,新启动 CoreOS 服务器将初始化必要的服务进程,并自动发现并指定集群的其他服务器交互信息,然后加入这个集群中。这种基于集群的“自发现”组织方式使得集群管理变得简单且高效。

通常来说,cloud-config 配置文件至少应当包括服务器所属的集群通信地址,以及启动 etcd 和 fleet 所需服务的参数。用户可以根据需要,在配置中添加更多定制化的服务,使得节点启动后立即成为功能完备的集群成员投入运行。

  • Etcd

在CoreOS 集群中处于骨架地位的是 etcd。 etcd 是一个分布式 key/value 存储服务,CoreOS 集群中的程序和服务可以通过 etcd 共享信息或做服务发现 。etcd 基于非常著名的 raft 一致性算法:通过选举形式在服务器之中选举 Lead 来同步数据,并以此确保集群之内信息始终一致和可用。etcd 以默认的形式安装于每个 CoreOS 系统之中。

在默认的配置下,etcd 使用系统中的两个端口:4001和7001,其中4001提供给外部应用程序以HTTP+Json的形式读写数据,而7001则用作在每个 etcd 之间进行数据同步。用户更可以通过配置 CA Cert让 etcd 以 HTTPS 的方式读写及同步数据,进一步确保数据信息的安全性。

  • Fleet

fleet 是一个通过 Systemd对CoreOS 集群中进行控制和管理的工具。fleet 与 Systemd 之间通过 D-Bus API 进行交互,每个 fleet agent 之间通过 etcd 服务来注册和同步数据。fleet 提供的功能非常丰富,包括查看集群中服务器的状态、启动或终止 Docker 容器、读取日志内容等。更为重要的是 fleet 可以确保集群中的服务一直处于可用状态。当出现某个通过 fleet 创建的服务在集群中不可用时,如由于某台主机因为硬件或网络故障从集群中脱离时,原本运行在这台服务器中的一系列服务将通过fleet 被重新分配到其他可用服务器中。虽然当前 fleet 还处于非常早期的状态,但是其管理 CoreOS 集群的能力是非常有效的,并且仍然有很大的扩展空间,目前已提供简单的 API 接口供用户集成。

尾声

从下一篇开始我们将从构建一个 CoreOS 集群说起,一步一步来熟悉这个系统的方方面面。(作者/林帆 审校/周小璐)

参考文章:

服务器操作系统 CoreOS

CoreOS:最小化定制版linux系统

CoreOS 实战:CoreOS 及管理工具介绍

An Introduction to CoreOS System Components

服务器操作系统CoreOS初体验

2016年5月17日 评论已被关闭

服务器操作系统CoreOS初体验

http://www.blogjava.net/yongboy/archive/2013/08/26/403325.html

CoreOS官网主页使用一句话概括其理念:“A new way to think about servers”,以及紧接着的“CoreOS is Linux for massive server deployments”, 表示这是一个新思维方式思考未来服务器大规模部署的的Linux服务器操作系统。

CoreOS宣称最小化的定制版linux系统,具有:

  • Linux内核,Linux运行所需
  • 存在两个ROOT分区,一个被用作启动分区,一个被用作更新分区
    更新分区在更新完成后,自动重新启动系统,当前机器不需要从负载集群中移除,为了保证其它应用程序不被打断,会通过Linux cgroup限制更新过程中的磁盘、网络等IO使用。
  • systemd,作为默认系统和服务管理器,其优秀特性:
    支持并行化任务;
    同时采用 socket 式与 D-Bus 总线式激活服务;
    按需启动守护进程(daemon);
    利用 Linux 的 cgroups 监视进程;
    支持快照和系统恢复;
    维护挂载点和自动挂载点;
    各服务间基于依赖关系进行精密控制。
    
  • root分区被设计成只读,用以保证数据的一致性和更新可用
  • CPU、IO等资源隔离,自然要祭出容器(Container)来,CoreOS很明智使用Docker作为容器管理器用以构建、发布应用,从这个层面来看,一个应用其实就是一个容器。
  • etcd组件负责服务发现和配置共享,采用Raft分布式一致性协议算法,承担起,组件之间服务通信使用。很自然的,容器(Container)之间应用、服务的伸缩,就显得很简单了。其基因层面支持集群特性,当然,你也可以解读为云环境的支持。

看起来,这个系统是为类似于拥有众多平台的IT公司准备的。服务之间,粒度变得很细。

刚刚发布第一个0.1.0版本,官方总结特性如下:

  1. 接口简单,HTTP+JSON
  2. 安全,可选择的SSL通信协议
  3. 快速,经测试1000s单一实例写入操作
  4. 可靠,分布式层面使用Raft协议
  5. 坚固,集群的失败可以从磁盘恢复

要想体验,目前看来,最简单方式,需要在一个虚拟环境中尝试一把,当然也是这样做的。本次体验,基于Windows 7 64位系统。以下为简单步骤:

  1. 先安装VirtualBox 4.2.16,建议从官网下载。
  2. Vagrant,这次安装最新的1.2.7版本,下载地址
  3. 安装Git for Windows 1.8.3,可以让命令下直接使用git命令
  4. 安装CoreOS环境,打开windows命令行环境:
    git clone https://github.com/coreos/coreos-vagrant/
    cd coreos-vagrant
    vagrant up
    vagrant ssh
    

    执行完毕 vagrant ssh, 会自动生成一些ssh的一些信息:

    Host: 127.0.0.1
    Port: 2222
    Username: core
    Private key: C:/Users/nieyong/.vagrant.d/insecure_private_key
    

    使用熟悉的SSH终端工具登陆即可,这里推荐xshell,不在细述。SSH成功登入,可以看到欢迎信息:

    coreos-ssh

  5. 体验一把Docker作为容器管理器
    这里快速体验一把,敲入一下命令:

    docker run ubuntu /bin/echo hello world
    

    此时,自动下载Ubuntu系统容器镜像文件:

    CoreOS-ubuntu

    更多Docker操作,请参阅其文档

  6. 进程管理systemd的一处使用这里想让系统启动时,执行一些简单任务。终端下输入
    sudo -i
    

    切换到Ubuntu ROOT用户角色下, 执行vi /media/state/units/hello.service,敲入如下内容:

    [Unit]
    Description=My Service
    After=docker.service
    
    [Service]
    Restart=always
    ExecStart=/usr/bin/docker run ubuntu /bin/sh -c "while true; do echo Hello World; sleep 1; done"
    
    [Install]
    WantedBy=local.target
    

    保存之后,我们需要做到模拟重启:

    systemctl restart local-enable.service
    

    现在查看一下日志,可以看到其输出:

    journalctl -u hello.service -f
    

    coreos-log

    更多systemd细节,请参考http://www.freedesktop.org/wiki/Software/systemd/

  7. 本次浅尝辄止,到此结束

总体看,CoreOS最大特色,专门为大规模服务器部署定制的Linux精简系统,尽可能的精简无关紧要的功能,将操作系统和应用程序完全分离,从而降低操作系统和应用程序的耦合度,同时解决了现有Linux服务器在容器资源、权限管理方面的欠缺。目前若说是颠覆性的操作系统,十分牵强,是不是未来,也不好说,但肯定是一种趋势。

因此,十分值得期待。

进阶阅读:

Docker vs CoreOS:容器战争值得发动

2016年5月17日 评论已被关闭

Docker vs CoreOS:容器战争值得发动

http://tech.hexun.com/2015-05-16/175868575.html

第1页:Docker遇到最大挑战

Docker是一个开源的应用容器引擎,采用Docker来构建和部署云容器,那么我们的程序将变得非常便携。Docker红起来的速度非常快速,不仅拿了融资,还得到了Google等巨头的支持。

可以说对于Docker来说,一路发展起来非常顺利,但是在去年12月,Docker的支持者之一CoreOS发布了一个名为Rocket的开源项目。该CoreOS小组称,Docker过于复杂和笨重,也许是过于专注服务于母公司的需求,因为,它偏离了便携的使命。

可以说对于Docker来说,一路发展起来非常顺利,但是在去年12月,Docker的支持者之一CoreOS发布了一个名为Rocket的开源项目。该CoreOS小组称,Docker过于复杂和笨重,也许是过于专注服务于母公司的需求,因为,它偏离了便携的使命。

同时,CoreOS小组还称,Docker在安全性、可组合性方面是有根本上的缺陷的,而Rocket的设计原型就是为了弥补这些缺陷,相比较要更加优秀。

事实上Docker在最近发布的几个版本里都关注于安全性上,但这对于一个旨在适应大规模企业应用的工具来说实在很正常。

相比之下,CoreOS声称Rocket是一个更好的标准货柜,这也是任何一个公司的控制范围之内的,当然,CoreOS也取得了Red Hat、Google、Vmware及Apcera的支持,但他们一定会继续支持这两种标准。

CoreOS打算继续支持Docker项目,但是当Rocket逐渐成熟之后,他们将重新评估是否继续参与贡献。

第2页:CoreOS此举为何?

CoreOS此举可能是想要一个更大的一块容器的市场,而不是无私的原因。

不过,我并不像分析CoreOS此举是否是一个慈善之举,容器空间领域起火,CoreOS将对Docker带来更多的挑战,这种挑战也将持续一段时间。

当然,目前也有一些相似Docker和Rocket的项目。

与其他热门技术不同,容器的竞争是创造竞争的标准,使用技术的人更容易等到战争的技术才结算。

尽管竞争的效果混乱,但是我更喜欢有两个标准的选择,至少暂时是这样的,由于我们实施的试点应用,每个标准是更好的技术奖很快被识别,追中,IT组织奖决定谁胜,或Docker和Rocket可以共存。

此外,看看其他公有云提供商如何接近容器的标准,将是一个有趣的事情,浙江大大有助于行业的发展。