本博客使用的服务器是虚拟机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则会进行自动扩容。自动缩容也可以使用同样的方法进行配置。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐