老徐
Sunday, 8 April 2018nginx
Rancher是一个开源的企业级全栈化容器(Docker)部署及管理平台。
Rancher为容器提供一揽子基础架构服务:CNI兼容的网络服务、存储服务、主机管理、负载均衡、防御墙……github
Rancher让上述服务跨越公有云、私有云、虚拟机、物理机环境运行,真正实现一键式应用部署和管理。web
已有超过8000万次下载,15000+生产环境的应用。
虚拟机搭建 Rancher 环境
环境说明:docker
最终效果:json
请首先下载并安装 Docker Toolbox,Docker Toolbox中包含了VirtualBox,VirtualBox能够也单独安装最新的版本。
可选:更改 VirtualBox 虚拟机的存储位置(省得占用太多主存储器的空间)浏览器
$ export MACHINE_STORAGE_PATH="//Volumes/Cloud/Virtual Machines/docker/"
下载建立虚拟机用的镜像文件~/Downloads/boot2docker.iso
,由于后面会屡次用到安全
https://github.com/boot2docker/boot2docker/releases/download/v17.12.1-ce/boot2docker.iso
这里采用docker-17.12.1-ce,不要用过新的版本,rancher 可能不支持
建立虚拟机 rancher
并登陆bash
$ docker-machine create -d virtualbox --virtualbox-boot2docker-url \ ~/Downloads/boot2docker.iso rancher $ docker-machine ip rancher 192.168.99.88 $ docker-machine ssh rancher
这里的 IP 192.168.99.88 就是 rancher 管理服务器的地址docker-machine ssh rancher 表示登陆到虚拟机服务器
因为众所周知的缘由,Docker 下载镜像须要使用镜像服务器
在虚拟机内运行修改Docker的启动配置,加上registry-mirrors
配置(在虚拟机中执行)
$ sudo vi /etc/docker/daemon.json
{ "registry-mirrors" : ["https://xxxxx.mirror.aliyuncs.com"] }
https://xxxxx.mirror.aliyuncs... 是你本身私有的阿里云镜像地址,请去下列地址得到
重启(在虚拟机中执行)
$ sudo reboot now
从新进入虚拟机
$ docker-machine ssh rancher
启动 Rancher Server(在虚拟机中执行)
$ docker run -d --restart=unless-stopped --name rancher -p 8888:8080 rancher/server
Rancher Server 自己是一个 Docker 容器
启动时间有点长,请耐心等待,能够用日志查看一下进度(在虚拟机中执行)
$ docker logs -f rancher
浏览器访问
http://192.168.99.88:8888
若是不能访问,多是尚未启动完毕,请等待一段时间
首次登陆,尚未配置访问权限,为了安全起见,首先点击上面的 ACCESS CONTROL 来新建一个本地帐号和密码。
Rancher 管理服务器链接和控制 Rancher 节点(Agent Host),要求这些 Host 上安装了 Docker 而且启动了 rancher/agent
容器
这里建立一个节点rancher01
$ docker-machine create \ -d virtualbox --virtualbox-boot2docker-url \ ~/Downloads/boot2docker.iso rancher01 $ docker-machine ssh rancher01
因为众所周知的缘由,Docker 下载镜像须要使用镜像服务器
在虚拟机内运行修改Docker的启动配置,加上registry-mirrors
配置(在虚拟机中执行)
$ sudo vi /etc/docker/daemon.json
{ "registry-mirrors" : ["https://xxxxx.mirror.aliyuncs.com"] }
https://xxxxx.mirror.aliyuncs... 是你本身私有的阿里云镜像地址,请去下列地址得到
重启(在虚拟机中执行)
$ sudo reboot now
从新进入虚拟机
$ docker-machine ssh rancher01
从 Rancher Server Web 界面点击 Infrastructure
-> Hosts
而且复制步骤 5 的命令行代码,相似以下:
sudo docker run --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.10 http://192.168.99.88:8080/v1/scripts/16E1281C7B7053B1CA74:1514678400000:nx3k1p2p2AvJnWR4WHCTBfznFZ8
上述代码即用于
rancher/agent
主机注册到服务器的代码特别注意:
- 步骤 4 的 IP 地址最好指定一下,不然可能出现两个节点自动检测到的 ip 同样,致使后面的 ipsec 不正常
在虚拟机内运行上述代码
$ sudo docker run --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.10 http://192.168.99.88:8080/v1/scripts/16E1281C7B7053B1CA74:1514678400000:nx3k1p2p2AvJnWR4WHCTBfznFZ8
一样的操做建立多个Rancher节点
从 Rancher Server Web 界面点击 Infrastructure
-> Hosts
便可看到新节点已经加入进来!
若是一切正常则:
- 每一个 rancher 节点上 healthycheck、ipsec 等服务都应该运行正常,即全不是绿色的
- 每一个 Host 的 IP 地址惟一
- 能够看到各个节点分配的IP 地址 10.42.x.x
- 进入任意一个节点后能够 ping 通另一个节点的 10.42.x.x 地址
若是healthycheck、ipsec 服务不正常,老在重启
则有多是增长节点的时候没有指定 IP,致使 rancher 自动检测出来的 IP 是错误的!!!请检查头部的 IP 地址是否重复了,是否正确
直接启动一个 nginx 镜像,看是否能正常访问
从 Rancher Server Web 界面点击 Stacks->Add Stack
Rancher 中的应用叫作 Stack,一个 Stack 能够建立多个服务
输入 name = nginx,Select Image = nginx
这里的 Select Image 即 docker 镜像的名称,你能够跑其余 docker 服务
启动完成后,点应用nginx进去,再点击某个服务nginx,点 Ports 这个Tab页,上会显示该服务的IP地址,直接点击这个IP地址便可访问这个服务
Port | Host IP |
---|---|
8080 | 192.168.99.101 |
结果
Welcome to nginx! If you see this page, the nginx web server is successfully installed and working. Further configuration is required. For online documentation and support please refer to nginx.org. Commercial support is available at nginx.com. Thank you for using nginx.
Rancher 的 Load Balancer 其实质是一个 Haproxy
仍是刚才的服务,在 Add Service 那个地方点击 Add Load Balancer添加一个 LB 服务
左边的 Port 是对外的端口,输入 8888,右边的 Port 是原服务的监听端口,输入80
注意:这里不须要原服务暴露端口,只须要原始的监听端口便可
启动完成后,点应用nginx进去,再点击某个服务nginx-lb,点 Ports 这个Tab页,上会显示该服务的IP地址,直接点击这个IP地址便可访问这个服务
Port | Host IP |
---|---|
8888 | 192.168.99.101 |
同时,为了测试LB功能,咱们把刚才的 Nginx 服务去掉端口映射并增长到2个节点