目前国内使用coreos的场景还不多,搜索coreos中文资料基本都大同小异。最近几日再和其它攻城狮讨论问题时,有人提出希望看到一篇介绍coreos和安装方面的文章,正好本人最近也在研究coreos,也就共享一些经验。权当抛砖引玉。 首先咱们明确一下coreos是用来做什么的。coreos也是一款os,但它是一款面向云的轻量级OS。coreos是以linux系统为基础,为了建设数据中心的需要,而从linux底层进行了内核裁减。coreos提供了一系列的机制和工具来保证coreos组建的云环境是安全,可靠和最新的。Coreos设计之初就定位于可以提供一种动态缩放和管理集群的能力,可以方便管理类似google 这种庞大数据中心的集群。 目前支持coreos的云平台有: EC2,DigitalOcean, GCE, Rackspace, Azure, Brightbox 。 支持coreos的虚拟化软件有:vagrant, vmware,QEMU,openstack,Eucalyptus, ISO image. 由此也可以看出国际云平台各厂商一致看好coreos,大有席卷互联网之势。 Coreos有三个最重要的工具,etcd,fleet和docker。下面我们分别介绍这三款工具。 ETCDetcd是一个开源的分布式键值对存储工具。在每个coreos节点上面运行的etcd,共同组建了coreos集群的共享数据总线。etcd可以保证coreos集群的稳定,可靠。当集群网络出现动荡,或者当前master节点出现异常时,etcd可以优雅的进行master节点的选举工作,同时恢复集群中损失的数据。 分布在各个coreos节点中的app,都可以自由的访问到etcd中的数据。最常见的场景就是etcd存储cluster的metadata,cache setting, cluster logging, feature flags等。
etcd有如下的功能:
FLEETFleet是管理coreos和部署app的工具。 有了fleet,你就可以把整个coreos集群当做一台节点来处理。Fleet鼓励用户将应用都封装成轻量级的服务,这些服务很容易在集群中进行管理和部署。 devops team通过fleet,就可以集中精力来关注app应用,而不用关心基础环境如何,哪个container应该部署在哪台节点上。如果你的app需要5个container同时运行,fleet将保证这5个container在集群中同时运行。如果某台节点出现异常,或者需要重启更新,fleet也会将此台节点上面的container转移到其他节点上。 而这些都是automatic的! 运行和管理container就是这样so easy!
Fleet的功能如下:
Fleet再进行任务调度时,就会读取etcd存储的数据。下图就是Fleet的任务调度流程图:
DockerDocker是一个轻量级的虚拟化工具。使用Docker可以进行应用的快速部署。
以上介绍了Coreos的主要工具,下面我们介绍一下如何使用coreos。因为支持coreos的平台很多,这里无法一一列出所有平台的安装方式,我们选取了应用最多的vagrant+coreos方案进行安装介绍,如果需要了解其他平台的安装方式,请参考https://coreos.com/ 在进行安装和配置coreos之前,我们需要准备一台linux实体机,注意一定是实体机,因为使用vmware虚拟出的linux操作系统会和vagrant不兼容,造成失败。(这不难理解,毕竟真正的数据中心不可能在windows平台上面跑虚拟机....) 下面我们开始进行安装: 首先安装vagrant。推荐使用ubuntu 64bit。访问http://www.vagrantup.com/downloads.html下载deb安装文件。 1、安装vagrant后,git vagrantfile。 git clone https://github.com/coreos/coreos-vagrant.git cd coreos-vagrant 2、修改config.rb和user-data。 config.rb文件: # Size of the CoreOS cluster created by Vagrant $num_instances=3 # Official CoreOS channel from which updates should be downloaded $update_channel='stable' user-data文件: 首先我们需要获取一个新的token:执行 curl http://discovery.etcd.io/new,会得到一个类似https://discovery.etcd.io/5480377e1e51f25e11dd78f525ba1122的地址。把这个地址替换
user-data文件: discovery: https://discovery.etcd.io/<token> 替换为: discovery: https://discovery.etcd.io/5480377e1e51f25e11dd78f525ba1122
替换后的user-data文件应该是类似于: coreos: etcd: # generate a new token for each unique cluster from https://discovery.etcd.io/new # WARNING: replace each time you 'vagrant destroy' discovery: https://discovery.etcd.io/5480377e1e51f25e11dd78f525ba1122 addr: $public_ipv4:4001 peer-addr: $public_ipv4:7001 fleet: public-ip: $public_ipv4 units: - name: etcd.service command: start - name: fleet.service command: start 现在执行:vagrant up --provision。 这时,vagrant就开始启动并且开始自动下载coreos最新版本。目前coreos版本迭代非常快,基本一周会有一个新版本。 注意: 在下载完成后,vagrant会自动进行镜像哈希值校验。有的ubuntu没有安装哈希计算工具,这个时候vagrant会报错,提示计算工具找不到,此时单独安装然后再次执行vagrant up --provision即可。
等看到启动完成后,coreos集群就已经启动完毕了。输入vagrant ssh core-01 -- -A 就可以登录到coreos集群了,执行:fleetctl list-machines 就会看到所有三台节点。 至此coreos集群的安装就完成了。下篇文章,我将会介绍如何通过service文件来部署docker image.
(责任编辑:IT) |