最近在技改完成之后打算进行大量的微服务化改造,而方便进行微服务化的步骤之一,就是将现有的系统移植进入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 就可以重新启动了。