【转】持续集成与容器管理 DockerMaven Jenkins Rancher influxD

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/kai46385076/article/details/94332734

学习目标:

掌握DockerMaven插件的使用
掌握持续集成工具Jenkins的安装与使用
掌握容器管理工具Rancher的安装与使用
掌握时间序列数据库influxDB的安装与使用
掌握容器监控工具cAdvisor的安装与使用掌握图表工具Grafana的使用

1DockerMaven插件

微服务部署有两种方法:

(1)手动部署:首先基于源码打包生成jar包(或war包),将jar包(或war包)上传至虚拟机并拷贝至JDK容器。
(2)通过Maven插件自动部署。
对于数量众多的微服务,手动部署无疑是非常麻烦的做法,并且容易出错。所以我们这 里学习如何自动部署,这也是企业实际开发中经常使用的方法。
Maven插件自动部署步骤:
(1)修改宿主机的docker配置,让其可以远程访问

vi /lib/systemd/system/docker.service

   
   
  • 1

其中ExecStart=后添加配置‐H tcp://0.0.0.0:2375 ‐H unix:///var/run/docker.sock

修改后如下:
在这里插入图片描述(2)刷新配置,重启服务

systemctl daemon‐reload 
systemctl restart docke
r docker start registry

   
   
  • 1
  • 2
  • 3

(3)在工程pom.xml 增加配置

<build>
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring‐boot‐maven‐plugin</artifactId>
</plugin>
<!‐‐ docker 的 maven 插 件 , 官 网 : https://github.com/spotify/docker‐maven‐plugin ‐‐>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker‐maven‐plugin</artifactId>
<version>0.4.13</version>
<configuration>

<imageName>192.168.184.141:5000/ p r o j e c t . a r t i f a c t I d : {project.artifactId}: project.artifactId:{project.version}
</imageName>
<baseImage>jdk1.8</baseImage>
<entryPoint>[“java”, “‐jar”, "/KaTeX parse error: Expected 'EOF', got '&' at position 32: …inalName}.jar"]&̲lt;/entryPoint&…{project.build.directory}
</directory>

<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<dockerHost>http://192.168.184.141:2375</dockerHost>
</configuration>
</plugin>
</plugins>
</build>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

以上配置会自动生成Dockerfile

FROM jdk1.8 
ADD app.jar /
ENTRYPOINT ["java","‐jar","/app.jar"]

 
 
  • 1
  • 2
  • 3

(5)在windows的命令提示符下,进入工程tensquare_parent所在的目录

mvn install

 
 
  • 1

进入tensquare_base 所在的目录,输入以下命令,进行打包和上传镜像

mvn docker:build	‐DpushImage

 
 
  • 1

执行后,会有如下输出,代码正在上传
在这里插入图片描述
(6)进入宿主机 , 查看镜像

docker images

 
 
  • 1

在这里插入图片描述
输出如上内容,表示微服务已经做成镜像
浏览器访问 http://192.168.184.141:5000/v2/_catalog ,输出

{"repositories":["tensquare_base"]}

 
 
  • 1

浏览器访问 http://192.168.184.141:5000/v2/_catalog ,输出

{"repositories":["tensquare_base"]}

 
 
  • 1

(7)启动容器:

docker run ‐di ‐‐name=base ‐p 9001:9001 192.168.184.141:5000/tensquare_base:1.0‐SNAPSHOT

 
 
  • 1

2持续集成工具-Jenkins

2.1什么是持续集成

持续集成 Continuous integration ,简称CI
随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件 开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也 显得尤其的重要。
持续集成正是针对这一类问题的一种软件开发实践。它倡导团队开发成员必须经常集成他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建 来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开 发内聚的软件。
持续集成具有的特点:

它是一个自动化的周期性的集成测试过程,从检出代码、编译构建、运行测试、结果记录、测试统计等都是自动完成的,无需人工干预;
需要有专门的集成服务器来执行集成构建;
需要有代码托管工具支持,我们下一小节将介绍Git以及可视化界面Gogs的使用持续集成的作用:
保证团队开发人员提交代码的质量,减轻了软件发布时的压力;
持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;

2.2Jenkins简介

Jenkins,原名Hudson,2011年改为现在的名字,它 是一个开源的实现持续集成的软件工具。官方网站:http://jenkins-ci.org/。
Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。
特点:

易安装:仅仅一个 java -jar jenkins.war,从官网下载该文件后,直接运行,无需额外的安装,更无需安装数据库;
易配置:提供友好的GUI配置界面;
变更支持:Jenkins能从代码仓库(Subversion/CVS)中获取并产生代码更新列表并输出到编译输出信息中;
支持永久链接:用户是通过web来访问Jenkins的,而这些web页面的链接地址都是永久链接地址,因此,你可以在各种文档中直接使用该链接;
集成E-Mail/RSS/IM:当完成一次集成时,可通过这些工具实时告诉你集成结果(据我所知,构建一次集成需要花费一定时间,有了这个功能,你就可以在等待结果过程 中,干别的事情);
JUnit/TestNG测试报告:也就是用以图表等形式提供详细的测试报表功能;
支持分布式构建:Jenkins可以把集成构建等工作分发到多台计算机中完成;
文件指纹信息:Jenkins会保存哪次集成构建产生了哪些jars文件,哪一次集成构建使用了哪个版本的jars文件等构建记录;
支持第三方插件:使得 Jenkins 变得越来越强大

2.3Jenkins安装

2.3.1JDK安装
(1)将jdk-8u171-linux-x64.rpm上传至服务器(虚拟机)
(2)执行安装命令

rpm ‐ivh jdk‐8u171‐linux‐x64.rpm

 
 
  • 1

RPM方式安装JDK,其根目录为:/usr/java/jdk1.8.0_171-amd64

2.3.2Jenkins安装与启动
(1)下载jenkins

wget https://pkg.jenkins.io/redhat/jenkins‐2.83‐1.1.noarch.rpm

 
 
  • 1

或将jenkins-2.83-1.1.noarch.rpm上传至服务器
(2)安装jenkins

rpm ‐ivh jenkins‐2.83‐1.1.noarch.rpm

 
 
  • 1

(3)配置jenkins

vi /etc/sysconfig/jenkins

 
 
  • 1

修改用户和端口

JENKINS_USER="root" 
JENKINS_PORT="8888"

 
 
  • 1
  • 2

(4)启动服务

systemctl start jenkins

 
 
  • 1

(5)访问链接 http://192.168.184.135:8888
从/var/lib/jenkins/secrets/initialAdminPassword中获取初始密码串
在这里插入图片描述
(6)安装插件
在这里插入图片描述在这里插入图片描述
(7)新建用户
在这里插入图片描述
完成安装进入主界面
在这里插入图片描述

2.4Jenkins插件安装

我们以安装maven插件为例,演示插件的安装
(1)点击左侧的“系统管理”菜单 ,然后点击
在这里插入图片描述

(2)选择“可选插件”选项卡,搜索maven,在列表中选择Maven Integration ,点击“直接安装”按钮
在这里插入图片描述
看到如下图时,表示已经完成
在这里插入图片描述

2.5全局工具配置

2.5.1安装Maven与本地仓库
(1)将Maven压缩包上传至服务器(虚拟机)
(2)解压

tar zxvf apache‐maven‐3.5.4‐bin.tar.gz

 
 
  • 1

(3)移动目录

mv apache‐maven‐3.5.4 /usr/local/maven

 
 
  • 1

(4)编辑setting.xml配置文件库vi /usr/local/maven/conf/settings.xml目录,内容如下

<localRepository>/usr/local/repository</localRepository>

 
 
  • 1

将开发环境的本地仓库上传至服务器(虚拟机)并移动到/usr/local/repository

mv reponsitory_boot /usr/local/repository

 
 
  • 1

执行此步是为了以后在打包的时候不必重新下载,缩短打包的时间。

2.5.2全局工具配置
选择系统管理,全局工具配置
(1)JDK配置
在这里插入图片描述
设置javahome为 /usr/java/jdk1.8.0_171-amd64
(2)Git配置 (本地已经安装了Git软件)
在这里插入图片描述

(3)Maven配置
在这里插入图片描述

2.6代码上传至Git服务器

2.6.1Gogs搭建与配置
Gogs 是一款极易搭建的自助 Git 服务。
Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X、Windows 以及 ARM 平台。
地址:https://gitee.com/Unknown/gogs
(1)下载镜像

docker pull gogs/gogs

 
 
  • 1

(2)创建容器

docker run ‐di ‐‐name=gogs ‐p 10022:22 ‐p 3000:3000 ‐v /var/gogsdata:/data gogs/gogs

 
 
  • 1

(3)假设我的centos虚拟机IP为192.168.184.141 在地址栏输
入http://192.168.184.141:3000 会进入首次运行安装程序页面,我们可以选择一种数据库作为gogs数据的存储,最简单的是选择SQLite3。如果对于规模较大的公司,可以选择MySQL
在这里插入图片描述
在这里插入图片描述
点击“立即安装”
这里的域名要设置为centos的IP地址,安装后显示主界面
在这里插入图片描述
(4)注册
在这里插入图片描述
(5)登录
在这里插入图片描述
(6)创建仓库
在这里插入图片描述
在这里插入图片描述
2.6.2提交代码
步骤:

(1)在本地安装git(Windows版本)
(2)在IDEA中选择菜单 : File – settings , 在窗口中选择Version Control – Git
在这里插入图片描述
(3)选择菜单VCS --> Enable Version Control Integration…
在这里插入图片描述
选择Git
(4)设置远程地址: 右键点击工程选择菜单 Git --> Repository -->Remotes…
在这里插入图片描述
在这里插入图片描述
(5)右键点击工程选择菜单 Git --> Add
(6)右键点击工程选择菜单 Git --> Commit Directory…
(7)右键点击工程选择菜单 Git --> Repository --> Push …

2.7任务的创建与执行

(1)回到首页,点击新建按钮 .如下图,输入名称,选择创建一个Maven项目,点击OK
在这里插入图片描述
(2)源码管理,选择Git
在这里插入图片描述
(3)Build
在这里插入图片描述
命令:

clean package docker:build ‐DpushImage

 
 
  • 1

用于清除、打包,构建docker镜像最后点击“保存”按钮
(4)执行任务

3容器管理工具Rancher

3.1什么是Rancher

Rancher是一个开源的企业级全栈化容器部署及管理平台。Rancher为容器提供一揽子基础架构服务:CNI兼容的网络服务、存储服务、主机管理、负载均衡、防护墙…… Rancher让上述服务跨越公有云、私有云、虚拟机、物理机环境运行,真正实现一键式应用部署和管理。
https://www.cnrancher.com/

3.2Rancher安装

(1)下载Rancher 镜像

docker pull rancher/server

 
 
  • 1

(2)创建Rancher容器

docker run ‐di ‐‐name=rancher ‐p 9090:8080 rancher/server

 
 
  • 1

(3)在浏览器输入地址: http://192.168.184.136:9090 即可看到高端大气的欢迎页
在这里插入图片描述
点击Got It 进入主界面
在这里插入图片描述
(4)切换至中文界面
点击右下角的English 在弹出菜单中选择中文
在这里插入图片描述
切换后我们就可以看到亲切的中文界面啦~
在这里插入图片描述

3.3Rancher初始化

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

在这里插入图片描述
(2)填写名称,点击“创建”按钮
在这里插入图片描述
(3)按照上述步骤,添加十次方测试环境和生产环境
在这里插入图片描述
(4)你可以通过点击logo右侧的菜单在各种环境下切换
在这里插入图片描述
3.3.2添加主机
(1)选择基础架构–>主机 菜单,点击添加主机
在这里插入图片描述
(2)拷贝脚本
在这里插入图片描述
(3)在服务器(虚拟机)上运行脚本
在这里插入图片描述
(4)点击关闭按钮后,会看到界面中显示此主机。我们可以很方便地管理主机的每个容器的开启和关闭

在这里插入图片描述
3.3.3添加应用
点击应用–>全部(或用户) ,点击“添加应用”按钮
在这里插入图片描述
填写名称和描述在这里插入图片描述
点击“创建”按钮,列表中增加了新增的应用
在这里插入图片描述

3.4应用部署

3.4.1MySQL部署
镜像:centos/mysql-57-centos7 增加数据库服务
在这里插入图片描述
注意:添加环境变量 MYSQL_ROOT_PASSWORD=123456
在这里插入图片描述
点击创建按钮,完成创建 上述操作相当于以下docker命令

docker run ‐di ‐‐name mysql ‐p 3306:3306 ‐e MYSQL_ROOT_PASSWORD=123456 centos/mysql‐57‐centos7

 
 
  • 1

在这里插入图片描述
完成后服务列表中存在并且状态为激活 使用SQLyog测试链接,执行建表语句

3.4.2RabbitMQ部署
镜像:rabbitmq:management 端口映射5671 5672 4369 15671 15672 25672
在这里插入图片描述
浏览器访问 http://192.168.184.136:15672/

3.4.3Redis部署
进入应用,点击添加服务,名称redis ,镜像redis ,端口映射6379
在这里插入图片描述
创建后使用客户端测试链接

redis‐cli ‐h 192.168.184.144

 
 
  • 1

测试成功

3.4.4微服务部署
(1)搭建私有仓库启动私有仓库容器

docker run ‐di ‐‐name=registry ‐p 5000:5000 registry

 
 
  • 1

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

vi /etc/docker/daemon.json

 
 
  • 1

添加以下内容,保存退出。

{"insecure‐registries":["192.168.184.144:5000"]}

 
 
  • 1

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

vi /lib/systemd/system/docker.service

 
 
  • 1

其中ExecStart=后添加配置

修改后刷新配置‐H tcp://0.0.0.0:2375 ‐H unix:///var/run/docker.sock,冲洗服务

systemctl daemon‐reload 
systemctl restart docker
 docker start registry

 
 
  • 1
  • 2
  • 3

(3)修改微服务工程,添加DockerMaven插件
(4)连接mysql数据库,执行建库脚本

(5)添加服务base-service 镜像192.168.184.144:5000/tensquare_base:1.0- SNAPSHOT 端口映射9001
在这里插入图片描述
(6)测试微服务 浏览器打开网址 http://192.168.184.144:9001/label 看是否可以看到标签列表

3.6扩容与缩容

3.6.1扩容
(1)在Rancher将创建的base-service(基础信息微服务)删除
(2)重新创建base-service ,不设置端口映射
在这里插入图片描述
(3)在选择菜单API -->WebHooks ,点击“添加接收器”按钮
在这里插入图片描述
(4)填写名称等信息,选择要扩容的服务,点击创建按钮
在这里插入图片描述
(5)接收器列表中新增了一条记录 ,点击触发地址将地址复制到剪切板
在这里插入图片描述
(6)使用postman测试:
在这里插入图片描述
测试后,发现容器由原来的1个变为了3个
在这里插入图片描述
3.6.2缩容
刚才我们实现了扩容,那么如何减少容器数量呢?我们来试试如何缩容

(1)添加接收器 ,选择缩容,步长为1表示每次递减1个 ,点击创建按钮
在这里插入图片描述
(2)创建成功后,复制触发地址
在这里插入图片描述
(3)使用postman测试
在这里插入图片描述

4influxDB

4.1什么是influxDB

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

4.2influxDB安装
(1)下载镜像

docker pull tutum/influxdb

 
 
  • 1

(2)创建容器

docker run ‐di \
‐p 8083:8083 \
‐p 8086:8086 \
‐‐expose 8090 \
‐‐expose 8099 \
‐‐name influxsrv \ tutum/influxdb

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

端口概述: 8083端口:web访问端口 8086:数据写入端口
打开浏览器 http://192.168.184.144:8083/
在这里插入图片描述

4.3influxDB常用操作

4.3.1创建数据库

CREATE DATABASE "cadvisor"

 
 
  • 1

回车创建数据库

SHOW DATABASES

 
 
  • 1

查看数据库

4.3.2创建用户并授权
创建用户

CREATE USER "cadvisor" WITH PASSWORD 'cadvisor' WITH ALL PRIVILEGES

 
 
  • 1

查看用户

SHOW USRES

 
 
  • 1

用户授权

grant all privileges on cadvisor to cadvisor
 grant WRITE on cadvisor to cadvisor
grant READ on cadvisor to cadvisor

 
 
  • 1
  • 2
  • 3

4.3.3查看采集的数据
切换到cadvisor数据库,使用以下命令查看采集的数据

SHOW MEASUREMENTS

 
 
  • 1

现在我们还没有数据,如果想采集系统的数据,我们需要使用Cadvisor软件来实现

5cAdvisor

5.1什么是cAdvisor

Google开源的用于监控基础设施应用的工具,它是一个强大的监控工具,不需要任何配置就可以通过运行在Docker主机上的容器来监控Docker容器,而且可以监控Docker 主机。更多详细操作和配置选项可以查看Github上的cAdvisor项目文档。

5.2cAdvisor安装

(1)下载镜像

docker pull google/cadvisor

 
 
  • 1

(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 ‐‐link influxsrv:influxsrv ‐‐name=cadvisor google/cadvisor ‐storage_driver=influxdb ‐storage_driver_db=cadvisor ‐ storage_driver_host=influxsrv:8086

 
 
  • 1

WEB前端访问地址http://192.168.184.144:8080/containers/
性能指标含义参照如下地址https://blog.csdn.net/ZHANG_H_A/article/details/53097084 再次查看influxDB,发现已经有很多数据被采集进去了。

6Grafana

6.1什么是Grafana

Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器。支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源。
Grafana主要特性:灵活丰富的图形化选项;可以混合多种风格;支持白天和夜间模式; 多个数据源。

6.2Grafana安装

(1)下载镜像

docker pull grafana/grafana

 
 
  • 1

(2)创建容器

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

 
 
  • 1

(3)访问

http://192.168.184.144:3001

 
 
  • 1

用户名密码均为admin
在这里插入图片描述
(4)登录后提示你修改密码
在这里插入图片描述
(5)之后进入主页面
在这里插入图片描述

6.3Grafana的使用

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
在这里插入图片描述
在这里插入图片描述
填写名称
在这里插入图片描述6.4.3预警通知设置
(1)选择菜单 alerting–> Notification channels
在这里插入图片描述
(2)点击Add channel 按钮
在这里插入图片描述
(3)填写名称,选择类型为webhook ,填写钩子地址
在这里插入图片描述
这个钩子地址是之前对base微服务扩容的地址

在这里插入图片描述
(4)点击SendTest 测试 观察基础微服务是否增加容器
(5)点击save保存
(6)按照同样的方法添加缩容地址

6.4.4仪表盘预警设置
(1)再次打开刚刚编辑的仪表盘
在这里插入图片描述
(2)点击 Create Alert
在这里插入图片描述
设置预警线

(3)选择通知
在这里插入图片描述
在这里插入图片描述
保存更改

                                </div>
            <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-095d4a0b23.css" rel="stylesheet">
                </div>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值