Coreos 的安装与配置:面向云的轻量级操作系统
创始人
2025-01-09 15:20:18
0

编者的话】Coreos是一款面向云的轻量级OS,以Linux系统为基础,为了建设数据中心的需要,从Linux底层进行了内核裁减。Coreos设计之初就旨在通过轻量的系统架构和灵活的应用程序部署能力简化数据中心的维护成本和复杂度。本篇博文基于笔者对CoreOS的研究和应用的经验,详细介绍了基于Vagrant下Coreos 的安装与配置。

目前国内使用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。下面我们分别介绍这三款工具。

ETCD

etcd是一个开源的分布式键值对存储工具。在每个CoreOS节点上面运行的etcd,共同组建了CoreOS集群的共享数据总线。etcd可以保证CoreOS集群的稳定,可靠。当集群网络出现动荡,或者当前master节点出现异常时,etcd可以优雅的进行master节点的选举工作,同时恢复集群中损失的数据。

分布在各个CoreOS节点中的app,都可以自由的访问到etcd中的数据。最常见的场景就是etcd存储cluster的metadata,cache setting, cluster logging, feature flags等。

etcd有如下的功能:

  • 简单可靠,API丰富(支持http,jason)
  • 支持客户端通过SSL认证,保证安全性
  • 每个实例可以支持每秒1000次写操作
  • 基于RAFT协议完成分布式操作
  • 通过http轮询,监听网络变化

 FLEET

Fleet是管理CoreOS和部署app的工具。

有了fleet,你就可以把整个CoreOS集群当做一台节点来处理。Fleet鼓励用户将应用都封装成轻量级的服务,这些服务很容易在集群中进行管理和部署。

devops team通过fleet,就可以集中精力来关注app应用,而不用关心基础环境如何,哪个container应该部署在哪台节点上。如果你的app需要5个container同时运行,fleet将保证这5个container在集群中同时运行。如果某台节点出现异常,或者需要重启更新,fleet也会将此台节点上面的container转移到其他节点上。

而这些都是automatic的! 运行和管理container就是这样so easy!

Fleet的功能如下:

  • 在当前CoreOS集群中随机部署docker container
  • 在集群中跨主机进行服务分发
  • 负责维护集群中的服务实例,当服务实例异常时,重新进行任务调度来恢复服务
  • 发现集群中的各个节点
  • 自动SSH到其它节点来执行job

Fleet再进行任务调度时,就会读取etcd存储的数据。下图就是Fleet的任务调度流程图:

Docker

Docker是一个轻量级的虚拟化工具。使用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。

  1. git clone https://github.com/CoreOS/CoreOS-vagrant.git 
  2. cd CoreOS-vagrant 

2、修改config.rb和user-data。

config.rb文件:

  1. # Size of the CoreOS cluster created by Vagrant 
  2. $num_instances=3 
  3. # Official CoreOS channel from which updates should be downloaded 
  4. $update_channel='stable' 

user-data文件:

首先我们需要获取一个新的token:执行 curl http://discovery.etcd.io/new,会得到一个类似https://discovery.etcd.io/5480377e1e51f25e11dd78f525ba1122的地址。把这个地址替换

  1. user-data文件: 
  2. discovery: https://discovery.etcd.io/ 
  3. 替换为: 
  4. discovery: https://discovery.etcd.io/5480377e1e51f25e11dd78f525ba1122

 替换后的user-data文件应该是类似于:

  1. coreos: 
  2.   etcd: 
  3.       # generate a new token for each unique cluster from https://discovery.etcd.io/new 
  4.       # WARNING: replace each time you 'vagrant destroy' 
  5.       discovery: https://discovery.etcd.io/5480377e1e51f25e11dd78f525ba1122 
  6.       addr: $public_ipv4:4001 
  7.       peer-addr: $public_ipv4:7001 
  8.   fleet: 
  9.       public-ip: $public_ipv4 
  10.   units: 
  11.     - name: etcd.service 
  12.       command: start 
  13.     - name: fleet.service 
  14.       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.

博文出处:http://www.cnblogs.com/vikings-blog/p/4230448.html

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...
P2P的自白|我不生产内容,我... 现在一提起P2P,人们就会联想到正在被有关部门“围剿”的互联网理财服务。×租宝事件使得劳...