容器管理工具
3 容器管理工具Rancher
3.1 什么是Rancher
Rancher是一个开源的企业级全栈化容器部署及管理平台。Rancher为容器提供一揽 子基础架构服务:CNI兼容的网络服务、存储服务、主机管理、负载均衡、防护墙…… Rancher让上述服务跨越公有云、私有云、虚拟机、物理机环境运行,真正实现一键式应 用部署和管理。
3.2 Rancher安装
(1)下载Rancher 镜像
1 | docker pull rancher/server |
(2)创建Rancher容器
1 | docker run -di --name=rancher -p 9090:8080 rancher/server |
(3)在浏览器输入地址: http://192.168.184.136:9090 即可看到高端大气的欢迎页

点击Got It 进入主界面

(4)切换至中文界面
点击右下角的English 在弹出菜单中选择中

切换后我们就可以看到亲切的中文界面啦~

3.3 Rancher初始化
3.3.1 添加环境
Rancher 支持将资源分组归属到多个环境。 每个环境具有自己独立的基础架构资源及服 务,并由一个或多个用户、团队或组织所管理。
例如,您可以创建独立的“开发”、“测试”及“生产”环境以确保环境之间的安全隔离,将“开 发”环境的访问权限赋予全部人员,但限制“生产”环境的访问权限给一个小的团队。
(1)选择“Default –>环境管理” 菜单

(2)填写名称,点击“创建”按钮

(3)按照上述步骤,添加测试环境和生产环境

(4)你可以通过点击logo右侧的菜单在各种环境下切

3..3.2 添加主机
(1)选择基础架构–>主机 菜单,点击添加主机

(2)拷贝脚本

(3)在服务器(虚拟机)上运行脚本

(4)点击关闭按钮后,会看到界面中显示此主机。我们可以很方便地管理主机的每个容 器的开启和关闭
3.3.3 添加应用
点击应用–>全部(或用户) ,点击“添加应用”按钮

填写名称和描述

点击“创建”按钮,列表中增加了新增的应用


3.4 应用部署
3.4.1 MySQL部署
镜像:mysql:5.7 增加数据库服务



注意:添加环境变量 MYSQL_ROOT_PASSWORD=123456

点击创建按钮,完成创建 上述操作相当于以下docker命令
1 | docker run -di --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7 |

完成后服务列表中存在并且状态为激活 使用SQLyog测试链接,执行建表语句

3.4.2 RabbitMQ部署
镜像:rabbitmq:management
端口映射5671 5672 4369 15671 15672 25672

这个因为我本地没有,所有构建会有点慢

浏览器访问 http://192.168.200.138:15672/

3.4.3 Redis部署
进入应用,点击添加服务,名称redis ,镜像redis ,端口映射6379

创建后使用客户端测试链接
1 | redis‐cli ‐h 192.168.200.138 |
测试成功

3.4.4 微服务部署
项目很简单,就几个接口,项目部署打包成docker镜像之前详细讲解过了(www.lovekhh.xyz/blog/89)

(1)搭建私有仓库
启动私有仓库容器
1 | docker run -di --name=registry -p5000:5000 registry |
打开浏览器 输入地址http://192.168.184.144:5000/v2/_catalog看到 {“repositories”: []} 表示私有仓库搭建成功并且内容为空
修改daemon.json
1 | vi /etc/docker/daemon.json |
(2)修改docker配置,允许远程访问
1 | vi /lib/systemd/system/docker.service |
其中ExecStart=后添加配置 ‐H tcp://0.0.0.0:2375 ‐H unix:///var/run/docker.sock修改后刷新配置,重启服务
1 | systemctl daemon‐reload |
(3)修改微服务工程,添加DockerMaven插件,上传到服务器

(4)连接mysql数据库,执行建库脚本
(5)添加服务zx-map 镜像zzxx/mapzxper-test 端口映射9001

(6)测试微服务 浏览器打开网址 http://192.168.184.144:9001/aaa 看是否可以看到标签


3.6 扩容与缩容
3.6.1 扩容
(1)在Rancher将创建的zx-map(基础信息微服务)删除

(2)重新创建zx-map

(3)在选择菜单API –>WebHooks ,点击“添加接收器”按钮


(4)填写名称等信息,选择要扩容的服务,点击创建按钮

(5)接收器列表中新增了一条记录 ,点击触发地址将地址复制到剪切板

(6)使用postman测试(需要发送POST请求)我直接用命令行窗口了:
1 | curl -X POST "http://192.168.200.138:9090/v1-webhooks/endpoint?key=xxxxxx" |


3.6.2 缩容
刚才我们实现了扩容,那么如何减少容器数量呢?我们来试试如何缩容
(1)添加接收器 ,选择缩容,步长为1表示每次递减1个 ,点击创建按钮

(2)创建成功后,复制触发地址

(3)使用postman测试
1 | curl -X POST "http://192.168.200.138:9090/v1-webhooks/endpoint?key=xxxxxx" |


3.6.3 负载均衡器
(1)上面创建了多个服务没有暴露出来端口,需要添加负载均衡器

(2)添加负载均衡策略


(3) 访问项目 192.168.200.138:9001/aaa(默认是轮询方式 )

弄完这个 鑫哥磁盘直接奔溃 - -不得不说这个Rancher挺占磁盘啊,后面得操作只能换一个虚拟机了。三个云服务器全被Jenkins项目占用了,有点泪目。

4 influxDB
4.1 什么是influxDB
influxDB是一个分布式时间序列数据库。cAdvisor仅仅显示实时信息,但是不存储监视数据。因此,我们需要提供时序数据库用于存储cAdvisor组件所提供的监控信息, 以便显示除实时信息之外的时序数据。
4.2 influxDB安装
(1)下载镜像
1 | docker pull tutum/influxdb |
(2)创建容器
1 | docker run -di \ |
打开浏览器 http://192.168.200.133:8083/

4.3 influxDB常用操作

4.3.1 创建数据库
1 | 点击右侧 create database |
回车创建数据库
1 | 点击右侧 create database |
查看据库

4.3.2 创建用户并授权
创建用户
1 | create user "cadvisor" with paddword 'cadvisor' with all privileges |

查看用户
1 | show users |
用户授权
1 | grant all privileges on cadvisor to cadvisor |
4.3.3 查看采集的数据
1 | show measurements |
现在我们还没有数据,如果想采集系统的数据,我们需要使用Cadvisor软件来实现
5 cAdvisor
5.1 什么是cAdvisor
Google开源的用于监控基础设施应用的工具,它是一个强大的监控工具,不需要任 何配置就可以通过运行在Docker主机上的容器来监控Docker容器,而且可以监控Docker 主机。更多详细操作和配置选项可以查看Github上的cAdvisor项目文档。
5.2 cAdvisor安装
(1)下载镜像
1 | docker pull google/cadvisor |
(2)创建容器
1 | docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --publish=8080:8080 --detach=true --privileged=true --link influxsrv:influxsrv --name=cadvisor google/cadvisor -storage_driver=influxdb -storage_driver_db=cadvisor -storage_driver_host=influxsrv:8086 |
我这直接Docker启动项目然后发现没有启动成功,查看日志如下:

1 | 通过如下命令解决 |

WEB前端访问地址
http://192.168.200.133:8080/containers/

性能指标含义参照如下地址
https://blog.csdn.net/ZHANG_H_A/article/details/53097084
再次查看influxDB,发现已经有很多数据被采集进去了。
会将运营数据插入到InfluxDB中创建时的--link influxsrv:influxsrv就是为了网络连通InfluxDB,-storage_driver_db=cadvisor是将数据存到cadvisor中

查看具体的数据

cAdvisor监控工具主要是将监控出来的数据插入到InfluxDB中,InfluxDB中的数据查看起来不是很方便(上图…),我们更期望看到一些直观一些的数据。比如说是展示一个图标,这个图标把每一个节点的数据串起来,形成一个折线图,曲线图,类似这样的报表看起来更加直观,那么就用到了我们的Grafana这个软件
6 Grafana
6.1 什么是Grafana
Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器。支持Graphite、zabbix、InfluxDB、Prometheus和 OpenTSDB作为数据源。 Grafana主要特性:灵活丰富的图形化选项;可以混合多种风格;支持白天和夜间模式; 多个数据源。
6.2 Grafana安装
(1)下载镜像
1 | docker pull grafana/grafana |
(2)创建容器
1 | docker run -d -p 3001:3000 -e INFLUXDB_HOST=influxsrv -e INFLUXDB_PORT=8086 -e INFLUXDB_NAME=cadvisor -e INFLUXDB_USER=cadvisor -e INFLUXDB_PASS=cadvisor --link influxsrv:influxsrv --name grafana grafana/grafana |

(3)访问
1 | http://192.168.200.131:3001 |
用户名密码均为admin

(4)登录后提示你修改密码
我就直接修改为123456

(5)之后进入主页面

6.3 Grafana的使用
6.3.1 添加数据源
(1)点击设置,DataSource

(2)点击添加data source

(3)为数据源起个名称,指定类型、地址、以及连接的数据库名、用户名和密码

点击保存。数据源建立成功

6.3.2 添加仪表盘
我们通过配置新整一个报表,让图表以可视化,非常直观的展示运维数据
(1)选择Dashboards –Manager

(2)点击“添加”按钮
(3)点击Graph 图标
(4)出现下面图表的界面 ,点击Panel Title 选择Edit (编辑)
(5)定义标题等基础信息
(6)设置查询的信息为内存,指定容器名称
(7)指定y轴的单位 为M
(8)保存
填写名称
6.3.3 预警通知设置
(1)选择菜单 alerting–> Notification channels

(2)点击Add channel 按钮

(3)填写名称,选择类型为webhook ,填写钩子地址
这个钩子地址是之前对base微服务扩容的地址
(4)点击SendTest 测试 观察基础微服务是否增加容器
(5)点击save保存
(6)按照同样的方法添加缩容地址
6.3.4 仪表盘预警设置
(1)再次打开刚刚编辑的仪表盘
**(2)点击 Create Alert **
设置预警线
(3)选择通知
保存更改





