1. 介绍

Rancher 是一个容器管理的完整解决方案,并且即将成为一个完整的容器管理平台。了解rancher的功能可以看下官方的提供的介绍视频Rancher Overview。注意看该视频需要科学上网。

详细的rancher使用建议查看rancher官方文档

2. 安装

2.1 下载镜像

# server
docker pull rancher/server

2.2 部署mysql

因为rancher需要使用mysql,所以需要启动mysql容器

docker pull mysql
docker run -d  --name mysqldb -e MYSQL_ROOT_PASSWORD=wkm  mysql:latest --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci 

首先进入mysql bash

docker run -it --link mysqldb:mysql --rm mysql sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'

进入mysql创建用户给rancher用

> CREATE DATABASE IF NOT EXISTS cattle COLLATE = 'utf8_general_ci' CHARACTER SET = 'utf8';
> GRANT ALL ON cattle.* TO 'cattle'@'%' IDENTIFIED BY 'cattle';
> GRANT ALL ON cattle.* TO 'cattle'@'localhost' IDENTIFIED BY 'cattle';

2.2 部署 server

使用以下方式执行容器

# Launch on each node in your HA cluster
$ docker run -d --restart=unless-stopped -p 8080:8080  rancher/server \
     --db-host myhost.example.com --db-port 3306 --db-user username --db-pass password --db-name cattle \
     --advertise-address <IP_of_the_Node>

我这里实验时,将server部署到了10.45.10.32和10.45.10.33这两台上了,例如10.45.10.32这台上执行的命令如下:

# 注意这里的db host使用容器本身的IP,通过docker inspect xxx来获取
docker run -d --name rancher-server --restart=unless-stopped -p 8080:8080  rancher/server \
     --db-host 172.17.0.2  --db-port 3306 --db-user cattle --db-pass cattle --db-name cattle \
     --advertise-address 10.45.10.32

启动rancher server容器后,用docker logs rancher-server来查看是否正常启动。正常启动后效果如下:

然后就可以通过IP来访问rancher的WEB管理中心了。

右下角可以换成中文

3. 集成管理swarm

rancher功能十分强大,能集成各种第三方,当然也包括swarm。虽然该功能还处于experimental,不过swarm这么流行,相信很快就能发布正式版。这里作为测试使用,我们直接用该特性。

PS: 经过我试验发现,使用swarm最好有个5台及以上的机器,要不然似乎几个swarm相关的容器会频繁重启

3.1 创建swarm环境

然后再点击下方的add environment

创建一个swarm环境

切换到该环境,我创建的swarm环境名字为rancher_swarm

3.2 添加主机

PS: 注意每个环境有自己对应的主机集群。默认是default环境。上面切换到我们创建的SWARM集群,所以在新环境添加主机。注意SWARM集群至少需要3台主机。

点击基础架构里面主机来添加主机:

点击下方的添加主机

设定需要加入的HOST IP,根据图形界面提供的提示操作即可。主要操作就是在各个node上启动rancher/agent容器,按照图形界面上的提示启动

3.3 将主机加入swarm集群

虽然前面创建了主机,不过将node加入集群的操作,仍然需要命令解决。首先在swarm manager所在节点上查看JOIN集群的命令,然后在需要被加入的节点上执行命令。

PS : 在rancher上使用swarm的时候注意有一个坑。就是有时候会发现 swarm-swarmkit-mon-1这些容器一直无法启动。这个可能是这些node加入了错误的swarm manager。这时候在有问题的节点上执行docker swarm leave -f可以进行恢复。

4. 更多功能

rancher功能非常多,可以轻松部署企业级应用。各种图形展示也十分友好。例如可以展示容器之间的拓扑这点就非常好。更多功能读者可以自己参考官方文档了。