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

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

安装 Vagrant

略,因为太简单了。另外还需要 VirtualBox,不要忘记装。

配置 CoreOS-vagrant

执行以下命令:

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

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

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

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

首先修改 config.rb 文件。这里重点是两个参数,一个是启动的实例数量,另外一个是升级的版本,我修改成了

$num_instances=4
$update_channel='stable'

启动 4 个实例,升级选择的版本则是月度升级版。另外一个 user-data 暂时不作修改。

接下来执行:

vagrant up

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

➜  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`.

接下来需要把 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 ~ $

这里的 -- -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	-

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

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 就可以重新启动了。

Built with Hugo
主题 StackJimmy 设计