CoreOS集群部署快速入门

架设CoreOS集群

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

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

安装 CoreOS

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

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

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

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

 

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

 

这些 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 实例中,继续探索其中的奥秘。

相关文章
相关标签/搜索