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 即可看到高端大气的欢迎页

image-20220917204412542

点击Got It 进入主界面

image-20200916213414357

(4)切换至中文界面

点击右下角的English 在弹出菜单中选择中

image-20200916213446524

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

image-20200916213504645

3.3 Rancher初始化

3.3.1 添加环境

Rancher 支持将资源分组归属到多个环境。 每个环境具有自己独立的基础架构资源及服 务,并由一个或多个用户、团队或组织所管理。

例如,您可以创建独立的“开发”、“测试”及“生产”环境以确保环境之间的安全隔离,将“开 发”环境的访问权限赋予全部人员,但限制“生产”环境的访问权限给一个小的团队。

(1)选择“Default –>环境管理” 菜单

image-20200916213753244

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

image-20200916213711425

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

image-20200916213904881

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

image-20200916213929766

3..3.2 添加主机

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

image-20200916214051640

(2)拷贝脚本

image-20200916214232650

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

image-20200916235713590

(4)点击关闭按钮后,会看到界面中显示此主机。我们可以很方便地管理主机的每个容 器的开启和关闭
image-20200917135752995

3.3.3 添加应用

点击应用–>全部(或用户) ,点击“添加应用”按钮

image-20200917000036335

填写名称和描述

image-20200917092451933

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

image-20200917092134734

image-20200917092214223

3.4 应用部署

3.4.1 MySQL部署

镜像:mysql:5.7 增加数据库服务

image-20200917093211214

image-20200917092411528

image-20200917093855524

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

image-20200917094344805

点击创建按钮,完成创建 上述操作相当于以下docker命令

1
docker run -di --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

image-20200917094455598

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

image-20200917094709697

3.4.2 RabbitMQ部署

镜像:rabbitmq:management

端口映射5671 5672 4369 15671 15672 25672

image-20200917095346121

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

image-20200917095429622

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

image-20200917095804562

3.4.3 Redis部署

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

image-20200917095914736

创建后使用客户端测试链接

1
redis‐cli ‐h 192.168.200.138

测试成功

image-20200917100134394

3.4.4 微服务部署

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

image-20200917104751926

(1)搭建私有仓库

启动私有仓库容器

1
docker run -di --name=registry -p5000:5000 registry

打开浏览器 输入地址http://192.168.184.144:5000/v2/_catalog看到 {“repositories”: []} 表示私有仓库搭建成功并且内容为空

修改daemon.json

1
2
3
4
vi /etc/docker/daemon.json

添加以下内容,保存退出
{"insecure-registries":["192.168.200.138:5000"]}

(2)修改docker配置,允许远程访问

1
vi /lib/systemd/system/docker.service

其中ExecStart=后添加配置 ‐H tcp://0.0.0.0:2375 ‐H unix:///var/run/docker.sock修改后刷新配置,重启服务

1
2
3
systemctl daemon‐reload
systemctl restart docker
docker start registr

(3)修改微服务工程,添加DockerMaven插件,上传到服务器

(www.lovekhh.xyz/blog/89)

image-20200917112259029

(4)连接mysql数据库,执行建库脚本

(5)添加服务zx-map 镜像zzxx/mapzxper-test 端口映射9001

image-20200917113122437

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

image-20200917132305128

image-20200917132414664

3.6 扩容与缩容

3.6.1 扩容

(1)在Rancher将创建的zx-map(基础信息微服务)删除

image-20200917133457448

(2)重新创建zx-map

image-20200917134428942

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

image-20200917134547185

image-20200917134610795

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

image-20200917134814566

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

image-20200917134929911

(6)使用postman测试(需要发送POST请求)我直接用命令行窗口了:

1
curl -X POST "http://192.168.200.138:9090/v1-webhooks/endpoint?key=xxxxxx"

image-20200917135354804

image-20200917135642646

3.6.2 缩容

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

image-20200917140434255

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

image-20200917140511371

(3)使用postman测试

1
curl -X POST "http://192.168.200.138:9090/v1-webhooks/endpoint?key=xxxxxx"

image-20200917140659331

image-20200917140816279

3.6.3 负载均衡器

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

image-20200917141034891

(2)添加负载均衡策略

image-20200917142121265

image-20200917233148123

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

image-20200917132305128

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

image-20200917154254435

4 influxDB

4.1 什么是influxDB

influxDB是一个分布式时间序列数据库。cAdvisor仅仅显示实时信息,但是不存储监视数据。因此,我们需要提供时序数据库用于存储cAdvisor组件所提供的监控信息, 以便显示除实时信息之外的时序数据。

4.2 influxDB安装

(1)下载镜像

1
docker pull tutum/influxdb

(2)创建容器

1
2
3
4
5
6
7
8
9
docker run -di \
-p 8083:8083 \
-p 8086:8086 \
--expose 8090 \
--expose 8099 \
--name influxsrv \
tutum/influxdb

# 端口概述: 8083端口:web访问端口 8086:数据写入端口

打开浏览器 http://192.168.200.133:8083/

image-20200917235742949

4.3 influxDB常用操作

image-20200918000034331

4.3.1 创建数据库

1
2
# 点击右侧 create database
create database "cadvisor"

回车创建数据库

1
2
# 点击右侧 create database
show databases

查看据库

image-20200918000234163

4.3.2 创建用户并授权

创建用户

1
create user "cadvisor" with paddword 'cadvisor' with all privileges

image-20200918000755026

查看用户

1
show users

用户授权

1
2
3
grant all privileges on cadvisor to cadvisor
grant write on cadvisor to cadvisor
grant read 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启动项目然后发现没有启动成功,查看日志如下:

image-20201005175207106

1
2
3
4
5
#通过如下命令解决
[root@hadoop101 ~]# mount -o remount,rw '/sys/fs/cgroup'
[root@hadoop101 ~]# ln -s /sys/fs/cgroup/cpu,cpuacct /sys/fs/cgroup/cpuacct,cpu
[root@hadoop101 ~]# docker start cadvisor
#再次查看正常启动成功

image-20201005175414839

WEB前端访问地址

http://192.168.200.133:8080/containers/

image-20201005175930810

性能指标含义参照如下地址

https://blog.csdn.net/ZHANG_H_A/article/details/53097084

再次查看influxDB,发现已经有很多数据被采集进去了。

会将运营数据插入到InfluxDB中创建时的--link influxsrv:influxsrv就是为了网络连通InfluxDB,-storage_driver_db=cadvisor是将数据存到cadvisor中

image-20201005181012580

查看具体的数据

image-20201005181419979

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

image-20201005184113638

(3)访问

1
http://192.168.200.131:3001

用户名密码均为admin

image-20201005184139100

(4)登录后提示你修改密码

我就直接修改为123456

image-20201005184207940

(5)之后进入主页面

image-20201005184238063

6.3 Grafana的使用

6.3.1 添加数据源

(1)点击设置,DataSource

image-20201005184432322

(2)点击添加data source

image-20201005184455095

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

image-20201005184953066

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

image-20201005185032086

6.3.2 添加仪表盘

我们通过配置新整一个报表,让图表以可视化,非常直观的展示运维数据

(1)选择Dashboards –Manager

image-20201005200527750

(2)点击“添加”按钮

(3)点击Graph 图标

(4)出现下面图表的界面 ,点击Panel Title 选择Edit (编辑)

(5)定义标题等基础信息

(6)设置查询的信息为内存,指定容器名称

(7)指定y轴的单位 为M

(8)保存

填写名称

6.3.3 预警通知设置

(1)选择菜单 alerting–> Notification channels

image-20201005203409655

(2)点击Add channel 按钮

image-20201005203424335

(3)填写名称,选择类型为webhook ,填写钩子地址

这个钩子地址是之前对base微服务扩容的地址

(4)点击SendTest 测试 观察基础微服务是否增加容器

(5)点击save保存

(6)按照同样的方法添加缩容地址

6.3.4 仪表盘预警设置

(1)再次打开刚刚编辑的仪表盘

**(2)点击 Create Alert **

设置预警线

(3)选择通知

保存更改