CoreOS 折腾笔记(一)集群部署

最近在技改完成之后打算进行大量的微服务化改造,而方便进行微服务化的步骤之一,就是将现有的系统移植进入 Docker 环境之中。在标准容器系统的选择上,我把目光放在了 CoreOS 上。实际上,我在 CoreOS 版本还是 2 开头的时候就有简单研究过,但是当时主要作为研究 Docker 的途径,现在则是作为集群化部署的基准系统。从本文开始的一系列折腾则是我在研究 CoreOS 集群化使用的一些纪录,而本文就是介绍一个本地实现容器化机群的步骤。

安装 Vagrant

略,因为太简单了。另外还需要

1
2
3
4
5
6
7
8

## 配置 CoreOS-vagrant

执行以下命令:

```bash
git clone https://github.com/coreos/coreos-vagrant.git
cd coreos-vagrant

下载 CoreOS 的 vagrant 配置。值得在进入正式配置之前一提的是,CoreOS 本身是没有默认密码或者安装密码机制的,也就是说,现有的所有认证登录需要通过 SSH 进行。如果是通过 vagrant 安装,会自动生成登录需要的 SSH 密钥,这个是需要额外注意的内容。

首先,将仓库中提供的两个模版配置文件复制成正式,接下来需要修改对应的文件:

1
2
cp config.rb.sample config.rb
cp user-data.sample user-data

首先修改

文件。这里重点是两个参数,一个是启动的实例数量,另外一个是升级的版本,我修改成了
1
2
3
4

```ruby
$num_instances=4
$update_channel='stable'

启动 4 个实例,升级选择的版本则是月度升级版。另外一个

暂时不作修改。
1
2
3
4
5

接下来执行:

```bash
vagrant up

在一堆输出之后,生成的 4 个实例就已经在运行了。也可以通过命令

status``` 查看运行状态。
1
2


➜ coreos-vagrant git:(master) vagrant status
Current machine states:

core-01 running (virtualbox)
core-02 running (virtualbox)
core-03 running (virtualbox)
core-04 running (virtualbox)

This environment represents multiple VMs. The VMs are all listed
above with their current state. For more information about a specific
VM, run vagrant status NAME.

1
2

接下来需要把 SSH 密钥添加到 SSH 可以识别的路径中,当然,也可以使用 ```ssh -i``` 每次指定 key。

➜ coreos-vagrant git:(master) ssh-add ~/.vagrant.d/insecure_private_key
Identity added: /Users/user/.vagrant.d/insecure_private_key (/Users/user/.vagrant.d/insecure_private_key)
➜ coreos-vagrant git:(master) vagrant ssh core-01 – -A
CoreOS stable (1010.5.0)
core@core-01 ~ $

1
2
3
4

这里的 ```-- -A``` 前两的个横杆表示 ssh 参数的起始。之后的 ```-A``` 是标准的 SSH 命令参数,表示将主机的 SSH 秘钥传递到虚拟机里面,这样做是为了之后的涉及 SSH 操作更加方便,否则会在某些命令时报错。

进入 CoreOS 之后,就可以查看现在集群中的机器,可以通过如下命令:

core@core-01 ~ $ fleetctl list-machines
MACHINE IP METADATA
6e1b9fae… 172.17.8.104 -
91060182… 172.17.8.103 -
af1494a6… 172.17.8.102 -
c99fef8a… 172.17.8.101 -

1
2

查看设备是否正常加入。当然,也可以很方便的登录其它系统:

core@core-01 ~ $ fleetctl ssh -machine af1494a6
The authenticity of host ‘172.17.8.102’ can’t be established.
ECDSA key fingerprint is 24:34:be:4e:b7:43:be:94:34:33:b2:81:e0:0c:08:9d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘172.17.8.102’ (ECDSA) to the list of known hosts.
CoreOS stable (1010.5.0)
core@core-02 ~ $ exit
logout
`

这样我们的第一步,使用 CoreOS 部署本地集群就已经实现了。

最后,如果需要关闭这些 CoreOS 实例,可以通过 vagrant halt 停止所有,下次可以通过 vagrant up 就可以重新启动了。