容器管理Rancher与容器监控
Rancher是一个开源的企业级全栈化容器部署及管理平台。Rancher为容器提供一系列基础架构服务:CNI兼容的网络服务、存储服务、主机管理、负载均衡、防护墙等等,Rancher让上述服务跨越公有云、私有云、虚拟机、物理机环境运行,真正实现一键式应用部署和管理。influxDB是一个分布式时间序列数据库。cAdvisor提供时序数据库用于存储cAdvisor组件所提供的监控信息。Grafana是
容器管理Rancher与容器监控
本博客使用的服务器是虚拟机centos7服务器,IP地址为192.168.48.130,下面会多次使用该IP地址。
一、容器管理工具Rancher
1、Rancher简介
Rancher是一个开源的企业级全栈化容器部署及管理平台。Rancher为容器提供一系列基础架构服务:CNI兼容的网络服务、存储服务、主机管理、负载均衡、防护墙等等,Rancher让上述服务跨越公有云、私有云、虚拟机、物理机环境运行,真正实现一键式应用部署和管理。
Rancher官网:https://www.rancher.com/
2、Rancher安装
(1)下载Rancher镜像(镜像文件有1GB多,需要花费一定的时间)
docker pull rancher/server
(2)创建Rancher容器
docker run -d --name=rancher --restart=always -p 9090:8080 rancher/server
restart为重启策略:
(1) no:默认策略,在容器退出时不重启容器。
(2) on-failure:在容器非正常退出时(退出状态非0),才会重启容器。
(3) on-failure:3:在容器非正常退出时重启容器,最多重启3次。
(4) always:在容器退出时总是重启容器。
(5) unless-stopped:在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器。
注意:
- 问题:如果在创建容器时出现
WARNING: IPv4 forwarding is disabled. Networking will not work.
警告,则是没有开启转发,docker网桥配置完后需要开启转发,不然容器启动后就会没有网络。
- 解决方法:
1.使用 vi /etc/sysctl.conf
命令修改文件,需添加的文本内容如下:
net.ipv4.ip_forward=1
2.重新启动网络服务和docker服务:
systemctl restart network && systemctl restart docker
3.查看是否修改成功,如果返回为 net.ipv4.ip_forward = 1
则表示修改成功。
sysctl net.ipv4.ip_forward
4.删除刚才提示警告的容器,重新再创建一个容器即可。
(3)在浏览器输入地址:http://192.168.48.130:9090
,即可看到Rancher页面,点击Got It 进入主界面。
(4)切换至中文界面:点击右下角的 English 在弹出菜单中选择中文,切换后就可以看到中文界面。
3、Rancher初始化
3.1 添加环境
Rancher支持将资源分组归属到多个环境。每个环境都对应一台服务器,每个环境具有自己独立的基础架构资源及服务,并由一个或多个用户、团队或组织所管理。例如,可以创建独立的"开发"、"测试"及"生产"环境,以确保环境之间的安全隔离,将"开发"环境的访问权限赋予全部人员,但限制"生产"环境的访问权限给一个小的团队。
(1)选择Default -> 环境管理。
(2)点击添加环境按钮。
(3)填写名称和描述,点击创建按钮。
(3)通过点击logo右侧的菜单在各种环境下切换。
3.2 添加镜像库
(1)选择菜单中的基础架构 -> 镜像库。
(2)点击添加镜像库按钮。
(3)选择自定义,输入需要获取镜像的服务器IP地址,点击创建按钮。
(4)镜像库添加成功。
3.3 添加主机
(1)选择菜单中的基础架构 -> 主机。
(2)点击添加主机按钮。
(3)输入主机注册地址(使用镜像库中的镜像在该服务器地址创建容器),选择当前站点地址,点击保存按钮。
(4)选择自定义Custom,输入注册主机地址,复制命令到注册主机服务器上执行,运行这条命令会下载安装"注册主机服务器连接Rancher"的媒介。当媒介安装成功后,再点击关闭按钮。
(5)在注册主机服务器上运行命令。
(6)点击关闭按钮后,再稍等一会儿,就会看到主机界面中出现该主机。
点击主机名称,查看该主机中的容器,在这里可以很方便地管理主机的每个容器的开启和关闭。
注意:如果以下几个容器(rancher自动安装的)一直处于starting和stoping中,在服务器终端使用systemctl status docker -l
命令查看日志信息会出现 certificate signed by unknown authority
(未知授权机构签名的证书—),则需要更新CA证书,更新好后再使用systemctl restart docker
命令重启一下docker服务即可。
更新CA证书命令:
sudo yum update ca-certificates
sudo yum reinstall ca-certificates
3.4 添加应用
应用可以包含多个服务(容器)。
(1)点击应用 -> 全部/用户 -> 点击添加应用按钮。
(2)输入名称和描述,点击创建应用。
(3)创建应用成功。
4、应用部署
4.1 MySQL应用部署
(1)如果已经创建了MySQL容器,则要把该容器删除掉。
停止容器命令:
docker stop 容器ID/容器名称
删除容器命令:
docker rm 容器ID/容器名称
注意:数据库的表都是保存在MySQL容器中,删除MySql容器会把这些表以及数据都删除。
(2)在创建MySQL应用之前确保镜像库中有MySQL镜像。
(3)点击添加服务按钮。
(4)在选择镜像中输入 镜像名:版本号(如果版本号为latest的话可以省略版本号) , 即centos/mysql-57-centos7
,处理好相关配置后,点击创建按钮。
上述操作相当于以下docker命令。
docker run ‐di ‐‐name mysql ‐p 3306:3306 ‐e MYSQL_ROOT_PASSWORD=123456
centos/mysql‐57‐centos7
(5)创建MySQL应用成功后服务列表中存在并且状态为激活。
(6)使用Navicat软件连接Centos7中的MySQL服务,由于是新建的MySQL数据库,所以需要执行建表语句创建数据库的表。
4.2 RabbitMQ部署
(1)如果已经创建了RabbitMQ容器,则要把该容器删除掉。
- 停止容器命令:
docker stop 容器ID/容器名称
- 删除容器命令:
docker rm 容器ID/容器名称
(2)在创建RabbitMQ应用之前确保镜像库中有RabbitMQ镜像。
(3)点击添加服务按钮。
(4)在选择镜像中输入 镜像名:版本号(如果版本号为latest的话可以省略版本号) , 即rabbitmq:management
,处理好相关配置后,点击创建按钮。
(5)创建成功。
(6)浏览器访问 http://192.168.48.130:15672
,输入账号密码登录RabbitMQ(账号:guest、密码:guest)。
5、微服务容器部署
5.1 配置中心微服务部署
由于工程使用到了Spring Cloud Config配置中心,其他微服务模块都需要从配置中心获取配置,所以先要从配置中心开始部署。
(1)如果已经创建了tensquare-config容器,则要把该容器删除掉,具体步骤可参考应用部署。
(2)在创建tensquare-config应用之前确保镜像库中有tensquare-config镜像。
(3)点击添加服务按钮。
(4)在选择镜像中输入 镜像名:版本号(如果版本号为latest的话可以省略版本号) , 即192.168.48.130:5000/tensquare_config:1.0-SNAPSHOT
,处理好相关配置后,点击创建按钮。
(5)创建成功。
(6)浏览器输入 http://192.168.48.130:12000/base-dev.yml
可以查看到配置文件内容。
5.2 Eureka微服务容器化部署
(1)如果已经创建了tensquare-eureka容器,则要把该容器删除掉,具体步骤可参考应用部署。
(2)在创建tensquare-eureka应用之前确保镜像库中有tensquare-eureka镜像。
(3)点击添加服务按钮。
(4)在选择镜像中输入 镜像名:版本号(如果版本号为latest的话可以省略版本号) , 即192.168.48.130:5000/tensquare_eureka:1.0-SNAPSHOT
,处理好相关配置后,点击创建按钮。
(5)创建成功。
(6)浏览器输入 http://192.168.48.130:6868
可以查看到服务注册中心。
5.3 基础信息微服务部署
在创建 基础信息微服务 tensquare-base 之前,需要检查一下yml配置文件中使用的相关服务容器(例如MySQL、RabbitMQ、Eureka等)是否开启,相关的数据库表是否创建。
- 例如tensquare-base的yml配置文件(使用的是Spring Cloud Config配置中心):
(1)如果已经创建了tensquare-base容器,则要把该容器删除掉,具体步骤可参考应用部署。
(2)在创建tensquare-base应用之前确保镜像库中有tensquare-base镜像。
(3)点击添加服务按钮。
(4)在选择镜像中输入 镜像名:版本号(如果版本号为latest的话可以省略版本号) , 即192.168.48.130:5000/tensquare_base:1.0-SNAPSHOT
,处理好相关配置后,点击创建按钮。
(5)创建成功。
6、扩容与缩容
扩容就是增加docker容器的数量,缩容就是减少docker容器的数量,进行扩容与缩容的前提是容器不设置端口映射,不再通过端口号访问,而是通过网关微服务(Spring Cloud GateWay)使用服务名称来进行访问。
删除原来创建的tensquare-base应用(先停止再删除),重新创建一个不设置端口映射的tensquare-base应用。
6.1 扩容
(1)选择菜单中的API -> WebHooks,点击添加接收器按钮。
(2)填写接收器名称等信息,选择要扩容的服务,设置步长(一次要增加或减少几个容器),点击创建按钮。
(3)接收器创建成功,点击触发地址将地址复制到剪切板。
(4)使用postman访问触发地址。
(5)扩容成功。
6.2 缩容
(1)选择菜单中的API -> WebHooks,点击添加接收器按钮。
(2)填写接收器名称等信息,选择要扩容的服务,设置步长(一次要增加或减少几个容器),点击创建按钮。
(3)接收器创建成功,点击触发地址将地址复制到剪切板。
(4)使用postman访问触发地址。
(5)缩容成功。
二、容器监控工具
1、influxDB
influxDB是一个分布式时间序列数据库。cAdvisor仅仅显示实时信息,但是不存储监视数据。因此需要提供时序数据库用于存储cAdvisor组件所提供的监控信息,以便显示除实时信息之外的时序数据。
influxDB数据库主要是要来存储内存和性能的数据。
1.1 influxDB安装
(1)下载镜像。
docker pull tutum/influxdb:0.13
(2)创建容器。
docker run -di -p 8083:8083 -p 8086:8086 --expose 8090 --expose 8099 --name influxsrv tutum/influxdb:0.13
端口概述:
-
8083端口:web访问端口。
-
8086端口:数据写入端口。
(3)浏览器访问 http://192.168.48.130:8083
。
1.2 influxDB常用操作
点击Query Templates中的操作,会在Query输入框中展示操作命令模板。
1.2.1 创建数据库
(1)创建数据库。
CREATE DATABASE "tensquare-cadvisor"
输入以上命令,按下回车即可。
(2)查看数据库。
SHOW DATABASES
输入以上命令,按下回车即可。
1.2.2 创建用户并授权
(1)创建管理员用户。
CREATE USER "root" WITH PASSWORD 'root' WITH ALL PRIVILEGES
输入以上命令,按下回车即可。
(2)查看用户。
SHOW USERS
输入以上命令,按下回车即可。
1.2.3 查看采集的数据
(1)切换到tensquare-cadvisor数据库。
(2)使用命令查看采集的数据,输入以下命令,按下回车即可。
SHOW MEASUREMENTS
当前还没有数据,如果想采集系统的数据,需要结合Cadvisor软件来实现。
2、cAdvisor
Google开源的用于监控基础设施应用的工具,它是一个强大的监控工具,不需要任何配置就可以通过运行Docker主机上的容器来监控Docker容器,而且可以监控Docker主机。
cAdvisor文档地址:https://github.com/google/cadvisor
2.1 cAdvisor安装
(1)下载镜像。
docker pull google/cadvisor
(2)创建容器。
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=tensquare-cadvisor -storage_driver_host=influxsrv:8086
-
--name=cadvisor
中的cadvisor为创建的容器名称。 -
-storage_driver_db=tensquare-cadvisor
中的tensquare-cadvisor为influxDB中创建的数据库名。 -
--link influxsrv:influxsrv
中的influxsrv为influxDB容器名。 -
-storage_driver_host=influxsrv:8086
中的influxsrv为influxDB容器名、8086为对应的端口号。
注意:当启动失败,使用systemctl status docker -l
命令查看日志时,出现如下错误(Failed to start container manager: inotify_add_watch /sys/fs/cgroup/cpuacct,cpu: no such file or directory
):
处理方法:输入以下命令处理报错,并重新创建一个新的容器。
mount -o remount,rw '/sys/fs/cgroup'
ln -s /sys/fs/cgroup/cpu,cpuacct /sys/fs/cgroup/cpuacct,cpu
2.2 访问cAdvisor
(1)浏览器访问地址:http://192.168.48.130:8080/containers
,查看cAdvisor采集的服务器内存和性能数据,性能指标含义参照如下。
-
Docker container相关信息:
-
整体使用状况:
-
CPU详细状况:
-
内存详细状况:
-
网络状况:
-
文件系统状况:
-
子容器状况:
(2)再次查看influxDB,切换到tensquare-cadvisor数据库,输入SHOW MEASUREMENTS
查看通过cadvisor采集的数据(具体服务器内存和性能数据需要使用Grafana查看)。
3、Grafana
Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器。支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源。
Grafana主要特性:灵活丰富的图形化选项、可以混合多种风格、支持白天和夜间模式、多个数据源。
3.1 Grafana安装
(1)下载镜像。
docker pull grafana/grafana:8.0.0
(2)创建容器。
docker run -d -p 3001:3000 -e INFLUXDB_HOST=influxsrv -e INFLUXDB_PORT=8086 -e INFLUXDB_NAME=cadvisor -e INFLUXDB_USER=root -e INFLUXDB_PASS=root --link influxsrv:influxsrv --name=grafana grafana/grafana:8.0.0
-
INFLUXDB_NAME=cadvisor
中的cadvisor是cadvisor容器名。 -
INFLUXDB_USER=root
中的root是influxDB数据库中的用户名。 -
INFLUXDB_PASS=root
中的root是influxDB数据库中的密码。
(3)浏览器访问 http://192.168.48.130:3001
,Grafana初始用户名和密码均为admin,登录后提示修改密码。
(4)进入Grafana主页面。
3.2 Grafana的使用
3.2.1添加数据源
(1)点击设置Configuration,选择 DataSources 设置数据源。
(2)点击 Add data source 。
(3)选择InfluxDB。
(4)设置数据源名称、类型和地址,以及连接的数据库名、用户名和密码,点击保存按钮。
(5)数据源建立成功。
3.2.2 添加仪表盘
(1)点击 Dashboards,选择Manage,点击New Dashboard按钮。
(2)点击 Add a empty panel 按钮。
(3)选择Graph(old)。
(4)设置数据源为tensquare-influxDB,查询的信息为内存,指定容器名称。
(5)设置面板名称。
(6)点击Save保存。
(7)定义仪表盘和所属文件夹信息。
(8)仪表盘保存成功。
3.2.3 预警通知设置
(1)点击 Alerting,选择Notification channels。
(2)点击 Add channel 按钮。
(3)填写名称,选择类型为webhook,填写webhook地址,webhook地址是之前Rancher中对基础微服务扩容的地址。
(4)点击 Test 测试,rancher中基础微服务扩容成功。
(5)点击save保存。
3.2.4 仪表盘预警设置
(1)再次打开刚刚编辑的仪表盘。
(2)点击 Create Alert。
(3)设置预警线。
(4)选择预警通知的通道。
(5)保存更改。
(6)当十次方基础微服务容器的内存超过预警线时,就会发送预警通知到Rancher,Rancher则会进行自动扩容。自动缩容也可以使用同样的方法进行配置。
更多推荐
所有评论(0)