Coreos 安装及配置

本文由Vikings(http://www.cnblogs.com/vikings-blog/) 原创,转载请标明.谢谢!

  

  目前国内使用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。

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=
# 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:
peer-addr: $public_ipv4:
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.

  

Coreos 安装及配置的更多相关文章

  1. coreos 安装

    一.挂载coreos 镜像 引导live-cd 配置初始化coreos 系统 网卡和密码 进入live版系统后呈现这个状态 #任意编辑一个.network 文件,文件名随意,该文件不存在需自己创建 s ...

  2. kubernetes(K8S)快速安装与配置集群搭建图文教程

    kubernetes(K8S)快速安装与配置集群搭建图文教程 作者: admin 分类: K8S 发布时间: 2018-09-16 12:20 Kubernetes是什么? 首先,它是一个全新的基于容 ...

  3. 【Linux】【Services】【SaaS】Docker+kubernetes(8. 安装和配置Kubernetes)

    1. 概念 1.1. 比较主流的任务编排系统有mesos+marathon,swarm,openshift(红帽内部叫atom服务器)和最著名的kubernetes,居然说yarn也行,不过没见过谁用 ...

  4. 快速安装与配置kubernetes集群搭

    Kubernetes是什么? 首先,它是一个全新的基于容器技术的分布式架构领先方案.这个方案尽然很新,但它是谷歌十几年以来大规模应用容器技术的经验积累和升华的一个重要成果.确切地说,kubernete ...

  5. JDK安装与配置

    JDK安装与配置 一.下载 JDK是ORACLE提供免费下载使用的,官网地址:https://www.oracle.com/index.html 一般选择Java SE版本即可,企业版的选择Java ...

  6. Node.js 教程 01 - 简介、安装及配置

    系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...

  7. 烂泥:redis3.2.3安装与配置

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 前一段时间写过一篇codis集群的文章,写那篇文章主要是因为当时的项目不支持redis自 ...

  8. mysql源码包手动安装、配置以及测试(亲测可行)

    笔记编者:小波/qq463431476博客首页:http://www.cnblogs.com/xiaobo-Linux/ 记下这篇mysql笔记,望日后有用! redhat6采用centos yum源 ...

  9. 环境搭建系列-系统安装之centos 6.5安装与配置

    按照国际惯例,系列目录先奉上: 系列一:系统安装之centos 6.5安装与配置 系列二:准备工作之Java环境安装 系列三:数据为先之MySQL读写集群搭建 系列四:谈分布式之RabbitMQ集群搭 ...

随机推荐

  1. 倍福TwinCAT(贝福Beckhoff)基础教程3.1 TwinCAT如何编写简单的计算器

    把编写简单计算器作为入门的第一个范例程序,主要是因为比较简单,而且综合了HMI,数据类型,数据转换,PRG和FBD等功能块的混合等知识,个人认为还是比较适合用来快速上手的.由于是第一个范例,所以视频教 ...

  2. Import CSV into DB using SSIS

    Step 1: create a table CREATE TABLE [EmployeeImported]( ,) NOT NULL, [ContactID] [int] NOT NULL, [Ma ...

  3. 分组password算法

    代换,S盒.扩散和混淆,这些概念构成了分组password学的基础. 假设明文和密文的分组长度都为n比特,则明文的每个分组都有2n个可能的取值; 代换: 为使加密运算可逆(即解密运算可行),明文的每个 ...

  4. mongoDB DOS窗口显示中文

    http://zhidao.baidu.com/question/157276582 由于mongodb后台的字符编码都是utf-8的,而中文windows cmd窗口使用的字符编码是GBK(属性-& ...

  5. CoreImage的模糊滤镜

    //1.原始图片 UIImage * image = [UIImage imageNamed:@"1.jpg"]; /****************core image***** ...

  6. 工作总结 1 sql写法 insert into select from 2 vs中 obj文件和bin文件 3 npoi 模板copy CopySheet 最好先全部Copy完后 再根据生成sheet写数据 4 sheet.CopyRow(rowsindex, rowsindex + x); 5 npoi 复制模板如果出现单元格显示问题

    我们可以从一个表中复制所有的列插入到另一个已存在的表中: INSERT INTO table2SELECT * FROM table1; 或者我们可以只复制希望的列插入到另一个已存在的表中: INSE ...

  7. iOS开发 - 第05篇 - 项目 - 12 - 图文混排

    1.首页微博文字处理 对于之前微博项目中首页:微博文字中的用户名.话题.链接等文字须要高亮显示.表情字符串须要显示相应表情. 思路: 1>之前微博中的文字使用NSString,要达到不同文字的高 ...

  8. WPF的TextBox抛出InvalidOperationException异常:Cannot close undo unit because no opened unit exists.

    近期遇到一个问题.应用使用过程中突然崩溃,查看dump发现异常信息例如以下: UI dispatcher has encountered a problem: 无法关闭撤消单元.由于不存在已打开的单元 ...

  9. java中已经排序的列表中插入新值

    static List<Integer> insertSortedList(){ List<Integer> nums = new ArrayList<Integer&g ...

  10. centos中git使用

    先用root用户登录, yum install git 进行安装,然后退出用普通用户登录. ssh-keygen -t rsa -C "tuhooo@163.com" 登录GitH ...