转载:http://www.csdn.net/article/2015-01-04/2823399

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

【编者按】作为一个操作系统,CoreOS 采用了高度精简的系统内核及外围定制,将许多原本需要复杂人工操作或者第三方软件支持的功能在操作系统级别进行了实现,同时剔除了其他对于服务器系统非核心的软件,比如GUI和包管理器。来自ThoughtWorks的软件工程师林帆将带来“漫步云端:CoreOS实践指南”系列文章,带大家了解CoreOS的精华和推荐的实践方法。本文为基础第二篇:架设CoreOS集群。

CoreOS 集群的架设比架设一个传统服务器集群更加容易。一方面因为 CoreOS 使用了 Cloud-init 自动化了集群信息的配置,另一方面则是受益于 etcd 分布式存储实现的消息分发和服务器自发现机制。这些便利性正是 CoreOS 系统设计充分为集群架构考虑带来的效率提升。


作者简介:

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


安装 CoreOS

CoreOS 的安装方法和传统 Linux 系统有很大的不同。鉴于是基础教程,在这一篇中,我们会使用官方的Vagrant镜像一步一步的构建CoreOS的VirtualBox虚拟机集群。本文使用了Linux/Mac作为测试环境,Vagrant从1.6版已经支持Windows,但需要安装Putty作为登录工具,略有不同,具体使用方法见     链接

需要顺带说明一点,比较仔细的使用者可能已经发现官方提供的镜像中有一个是“     ISO镜像文件”,然而这个镜像实际上只是一个 Live CD,也就免安装的试用镜像,直接使用这个ISO启动的系统是不具备服务自发现和分布式消息分发的能力的。通过ISO镜像安装集群的方式我们会放到专题篇的内容里面详述。好,现在进入正题吧。

正如系列的第一篇所提到的,Cloud-init 通常依赖于具体平台的实现定制,将其直接在物理机上使用并不是主流的使用方法。对于这种安装方法,     官方有一篇文档提供了详细的步骤,这里不再进行详细讨论。

首先来看一下 CoreOS 原生支持的平台。截止到目前,最新版本的CoreOS v540已经支持的平台如下图。

可以看到除去安装到本地的 Bare Metal,其余基本是针对主流的云服务平台定制的版本。这里的定制主要是 Cloud-init 等启动服务的配置,那么如何知道     CoreOS 已经支持自动化的集群部署的平台有哪些呢?我们可以从 CoreOS 源代码的     coreos-base 目录里得到答案。

这些 oem 开头的目录就是平台定制的实现。其中每个目录中的 files/cloud-config.yml 文件,就是 Cloud-init     的配置文件。在每一种平台安装 CoreOS 的方式各有不同,可以从官方网站相应的页面找到相应步骤。这里我们选择其中的 Vagrant 作为演示的目标平台。

在 Vagrant 上部署 CoreOS 集群

使用 Vagrant 建立 CoreOS 集群可以说是最简单且经济的方式了,使用本地虚拟机构建,特别适合快速验证 CoreOS 的功能。

预备

需要准备的东西,包括一台连接到互联网的 Mac 或者桌面 Linux 电脑,安装好 Git、VirtualBox 和 Vagrant。

通过 Git 下载官方的 Vagrant 仓库:

git clone     https://github.com/coreos/coreos-vagrant.git

下载完成后,我们接下来配置 CoreOS 集群。

配置

为了使用集群服务器的自发现功能,我们需要一个能用来唯一标识一个集群并提供集群信息的地址。CoreOS 官方提供了这个服务,当然我们也可以使用自己搭建的私有集群标识服务器。鉴于搭建私有标识服务器属于比较进阶的内容,我们会在这个系列的后续文章详述。

通过浏览器或命令行 curl 访问地址     https://discovery.etcd.io/new可以得到一个新的集群标识 URL(如果是在Windows下,可以直接使用浏览器访问这个URL地址),这个     URL 会在配置 user-data 时候使用到。

curl     https://discovery.etcd.io/new

进入 coreos-vagrant 目录,将 user-data.sample 和 config.rb.sample 两个文件各备份一份,并去掉     .sample 后缀。得到 user-data 和 config.rb 文件。

首先修改 user-data 文件,它将作为启动的配置文件提供给 CoreOS 操作系统。值得一提的是,在这个配置中,可以使用两个变量 $private_ipv4     和 $public_ipv4,它们会在实际运行的时候被自动替换为主机的真实外网 IP 和内网 IP 地址。

这里我们需要做的只是将其中 discovery所在行前面的注释符合“#”去掉,然后替换它的值为我们刚刚获得的集群标识 URL 地址。简单来说,所有使用了同一个标识     URL 的主机实例都会在 CoreOS 启动时自动加入到同一个集群中,这就实现了无需人工干预的集群服务器自发现。

#cloud-config coreos:   etcd:     # generate a new token for each unique cluster from     https://discovery.etcd.io/new    # WARNING: replace each time you 'vagrant destroy'     discovery: <集群标识URL地址>     addr: $public_ipv4:4001 peer-addr: $public_ipv4:7001 ... ...

然后修改 config.rb 文件,这里包含了 Vagrant 虚拟机的配置。通过这个文件实际上可以覆写任何 Vagrantfile 里的参数,但是目前我们只需要关注     $num_instances 和 $update_channel 这两个参数的值。

  • $num_instances 表示将启动的 CoreOS 集群中需要包含主机实例的数量;
  • $update_channel 表示启动的 CoreOS 实例使用的升级通道,可以是 ‘stable’,’beta’ 或 ‘alpha’。

$num_instances=3     $update_channel='stable'

CoreOS 没有跨越式的版本发布,而是使用与 Arch Linux 类似的平滑的滚动升级,确保用户任何时候下载到的版本都是最新发布的系统镜像,并且从根本上解决了服务器系统在运行几年后,由于无法平滑升级而被迫重新安装的情况。此外     CoreOS 提供了 Stable、Beta 和 Alpha 三种升级通道,用于满足不同用户对系统新特性和稳定性的平衡。关于升级通道的切换,可参考官方的文档。

启动

启动集群,执行:

vagrant up

查看集群运行状态,所有的集群实例都已经启动。

vagrant up     Current machine states:     core-01                      running (virtualbox)     core-02                      running (virtualbox)     core-03                      running (virtualbox)

此时,在 CoreOS 集群的内部正发生着许多故事,集群的实例之间通过自发现服务,相互认识了对方并建立了联系。它们具备了在集群中任意一个实例节点控制整个集群的能力。是的,一个功能完备的     CoreOS 服务器集群已经完全运行起来了。

探索 CoreOS

在下一部分,我们将会进入启动完成的 CoreOS 实例中,继续探索其中的奥秘。(作者/林帆 审校/周小璐)

参考内容:Running CoreOS on Vagrant

[CoreOS 转载]CoreOS实践指南(二):架设CoreOS集群的更多相关文章

  1. ElasticSearch实践系列(二):探索集群

    前言 为了方便ELK的逐步搭建,我们本篇文章先安装Kibana,然后用Kibana的DevTols执行命令.也可以安装elasticsearch-head运行命令. 安装Kibana 参考Instal ...

  2. App架构师实践指南二之App开发工具

    App架构师实践指南二之App开发工具     1.Android Studio 2.编译调试---条件断点.右键单击断点,在弹出的窗口中输入Condition条件.---日志断点.右键单击断点,在弹 ...

  3. 转载-lvs官方文档-Linux服务器集群系统(二)

    Linux服务器集群系统(二) LVS集群的体系结构 章文嵩 (wensong@linux-vs.org) 2002 年 4 月 本文主要介绍了LVS集群的体系结构.先给出LVS集群的通用体系结构,并 ...

  4. 二、ELKStack集群架构设计

    一.ELKStack介绍与入门实践 二.Elasticsearch 集群架构图 服务器配置:Centos6.6 x86_64 CPU:1核心 MEM:2G (做实验,配置比较低一些) 注:这里配置el ...

  5. MongoDB Sharding(二) -- 搭建分片集群

    在上一篇文章中,我们基本了解了分片的概念,本文将着手实践,进行分片集群的搭建 首先我们再来了解一下分片集群的架构,分片集群由三部分构成: mongos:查询路由,在客户端程序和分片之间提供接口.本次实 ...

  6. hadoop(二)hadoop集群的搭建

    一.集群环境准备工作 1.修改主机名 在root 账户下 vi /etc/sysconfig/network   或者 sudo vi /etc/sysconfig/network 2.设置系统默认启 ...

  7. 【转载】MQTT的学习之Mosquitto集群搭建

    本文出自:http://www.cnblogs.com/yinyi521/p/6087215.html 文章钢要: 1.进行双服务器搭建 2.进行多服务器搭建 一.Mosquitto的分布式集群部署 ...

  8. 【Kubernetes学习之二】Kubernetes集群安装

    环境 centos 7 Kubernetes有三种安装方式:yum.二进制.kubeadm,这里演示kubeadm. 一.准备工作1.软件版本 软件 版本 kubernetes v1.15.3 Cen ...

  9. 【二】Kubernetes 集群部署-kubeadm方式(亲测)

    一.概述 本次部署 Kubernetes 集群是通过 kubeadm 工具来进行部署, kubeadm 是 Kubernetes 官⽅提供的⽤于快速部署 Kubernetes 集群的⼯具,利⽤其来部署 ...

  10. 二,kubernetes集群的安装初始化

    目录 部署 集群架构示意图 部署环境 kubernetes集群部署步骤 基础环境 基础配置 安装基础组件 配置yum源 安装组件 初始化 master 设置docker和kubelet为自启动(nod ...

随机推荐

  1. ArcGIS Desktop 10.1+ArcEngine10.1完全破解安装教程(含下载地址+亲测可用!)

    最近在二次开发中用到了VS2010+ArcGIS的二次开发模式,因为之前的某些原因,对ArcGIS的接触甚少.初次安装也遇到了很多问题,这里做一个总结. 系统环境 win732位操作系统 需要文件 ( ...

  2. Ios中checkBox

    //使用tableview来进行布局checkBox.便于全选,全不选//radiobutton 适合用RadioButton #import <UIKit/UIKit.h> @inter ...

  3. Linux-内核态与用户态

    内核态: CPU可以访问内存所有数据, 包括外围设备, 例如硬盘, 网卡. CPU也可以将自己从一个程序切换到另一个程序 用户态: 只能受限的访问内存, 且不允许访问外围设备. 占用CPU的能力被剥夺 ...

  4. 用UltraEdit判断打开文件的编码类型 用UltraEdit或notepad记事本查看文件编码格式 用UltraEdit查看当前文件编码

    用UltraEdit查看当前文件编码 想判断文件的编码类型? 用强大的UltraEdit-32软件: UltraEdit-32的状态栏可以显示文件的编码类型,详细情况如下: ANSI/ANSCI--- ...

  5. 树莓派SD卡制作,并成功启动

    需要条件: 硬件部分: 1.SD卡一张(树莓派支持的) 2.树莓派3 B + 一个(其他的版本也是可以的,这里默3B+). 1.下载树莓派镜像(NOOBS_v1_9_2.zip) wget http: ...

  6. 解决UEditor将div标签换成p标签的问题

    原文链接 将设计排版好的页面html代码上传到数据库,再读取出来的时候发现所有的div都被替换成了p标签. 解决方法: 首先在ueditor.all.js文件内搜索allowDivTransToP,找 ...

  7. PreparedStatement的用法及优点

    jdbc(java database connectivity,java数据库连接)的api中的主要的四个类之一的java.sql.statement要求开发者付出大量的时间和精力.在使用statem ...

  8. android 一步一步教你集成tinker(热修复)

    这几天闲着没事,就看了下现在比较火的热修复,确实有了热修复就解决了android native的一个很尴尬问题,之前比起h5,android在用户体验上是有优势,但是过于复杂的版本更新,使用户烦不胜烦 ...

  9. Exception的妙用

    实际工作中遇到的一个例子: 一.看这样一个方法: /** 传入以微秒(us)为单位的时间字符串,转换成可读的(年-月-日 时:分:秒)日期格式*/ public String getDateStrin ...

  10. FreeSWITCH增加iLBC编码

    1. 安装ilbc库从第三方库里下载指定版本 git clone https://freeswitch.org/stash/scm/sd/libilbc.git ./bootstrap.sh ./co ...