持续集成环境搭建
持续集成环境搭建
持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
Jenkins(镜像管理工具)
Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。Jenkins用Java语言编写,可在Tomcat等流行的Servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。
1)安装Jdk、Maven、Git到宿主机
自行百度或参考之前文章进行安装
2)安装Jenkins
下载安装包,然后上传,下载地址:https://jenkins.io/ 或直接下载Jenkins:wget https://pkg.jenkins.io/redhat/jenkins-2.83-1.1.noarch.rpm
安装Jenkins:rpm -ivh jenkins-2.83-1.1.noarch.rpm
3)启动Jenkins
配置jenkins:vi /etc/sysconfig/jenkins
点击i键编辑,esc保存退出,shift+z+z回到服务器
-- 配置用户和端口
JENKINS_USER="root"
JENKINS_PORT="8888"
启动jenkins:systemctl start jenkins
关闭jenkins:systemctl stop jenkins
重启jenkins:systemctl restart jenkins
访问jenkins:192.168.25.128:8888
启动时找不到Java环境,先查看状态:
编辑配置文件vi /etc/init.d/jenkins,在如下位置指定Java路径:
保存退出,重新加载,加载完重启Jenkins生效
systemctl daemon-reload
输入密码
查看Jenkins密码:输入命令cat /var/lib/jenkins/secrets/initialAdminPassword
之后会看到安装页面,点击第一个安装
自动下载插件
下载完创建一个账号登录
修改账号密码:账号密码设置都为xdzy
4)卸载Jenkins
-- 卸载
rpm -e jenkins
-- 查看是否卸载成功
rpm -ql jenkins
-- 彻底卸载残留文件
find / -iname jenkins | xargs -n 1000 rm -rf
5)安装插件
下载maven插件,如果jenkins下载git插件失败也要手动下载git插件
插件下载失败解决方案:https://www.cnblogs.com/sxdcgaq8080/p/10489326.html
6)全局工具配置
将服务器中git,maven,jdk8路径配置好即可
7)创建任务
这边应该会有其他选项可以选择的,如果插件下载失败就没有
插件下载之后,注意Jenkins最好使用最新版本,这样减少很多问题
填写项目描述,设置git项目路径
填写需要生成镜像的pom文件,以及打镜像命令
任务创建之后
图标含义说明:
第一个表示未执行过,执行之后变绿色,
第二个表示任务状态,即健康状态,
最后一个是执行按钮,启动任务之后,会将配置在git仓库的指定项目打成镜像(我们在打成镜像时,应该先提交代码到Git仓库)。
注意要先配置全局的环境
生成之后可以在Docker看见生成的镜像,然后创建容器,启动即可部署项目
Gogs(Git项目管理平台)
Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助Git服务。使用Go语言开发使得Gogs能够通过独立的二进制分发,并且支持Go语言支持的所有平台,包括Linux、Mac OS X、Windows以及ARM平台。
1)下载安装
-- 下载
docker pull gogs/gogs
-- 安装
docker run -di --name=gogs -p 10022:22 -p 3000:3000 -v /var/gogsdata:/data gogs/gogs
2)访问平台
界面的访问:192.168.25.128:3000
安装过程
配置映射端口
注册账号:账号密码设置都为xdzy,登录之后可以看见如下页面:
3)创建项目
创建项目文件夹并且上传项目:tensquare
创建新的仓库
项目地址链接
其实也可以通过github来管理项目,目前已经开放了私有仓库的功能
Rancher(容器管理工具)
Rancher是一个开源的企业级容器管理平台。通过Rancher,企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台。Rancher提供了在生产环境中使用的管理Docker和Kubernetes的全栈化容器部署与管理平台。
1)下载安装
docker pull rancher/server
2)创建容器
docker run -d --name=rancher --restart=always -p 9090:8080 rancher/server
3)访问页面
http://192.168.25.128:9090,右下角切换中文
4)添加环境
添加环境即可以根据不同的环境(测试、生产、发布),使用不同的配置,启用不同的容器
根据要求设置环境
5)添加主机
将红色框命令在服务器执行,让Rancher与docker建立连接
docker中设置的容器都会加载进来,我们在这里可以很方便的管理主机的每个容器的开启和关闭
6)添加应用
应用是指项目分类,即属于哪个项目,我们可以将不同的服务放到不同的应用里
设置不同的项目名称
7)添加服务
即用图形化的方式创建镜像到docker,并且创建容器
创建一个mysql容器,注意名字不要和原来的容器名字重复
设置密码
创建完成,以上操作类似于我们在服务器执行了一下docker命令
8)微服务管理
实现思路:将微服务模块通过dockerfile的maven插件生成镜像到私有仓库,然后就可以通过Rancher可视化的将镜像生成容器管理。
9)扩容与缩容
扩容、缩容:增加或减少当前容器数量,微服务集群
注意点:需要通过postman发送post请求激活,容器不做端口映射,端口映射交给Rancher管理
实现步骤:
创建一个微服务容器
配置扩容信息
复制请求并且激活
在如下位置会看见容器数量为2,并且注册中心也会出现服务集群
InfluxDB(时序数据库)
InfluxDB是一个由InfluxData开发的开源时序型数据。它由Go写成,着力于高性能地查询与存储时序型数据。InfluxDB被广泛应用于存储系统的监控数据,IOT行业的实时数据等场景。 InfluxDB常用的一种使用场景:监控数据统计。每毫秒记录一下电脑内存的使用情况,然后就可以根据统计的数据,利用图形化界面(InfluxDB V1一般配合Grafana)制作内存使用情况的折线图;可以理解为按时间记录一些数据(常用的监控数据、埋点统计数据等),然后制作图表做统计。
1)下载安装
docker pull tutum/influxdb
2)创建容器
docker run -di \
-p 8083:8083 \
-p 8086:8086 \
--expose 8090 \
--expose 8099 \
--name influxsrv \
tutum/influxdb
注:8083是web访问端口,8086是数据写入端口
3)访问地址
4)基本使用
-- 创建一个用户,并且拥有所有权限
CREATE USER "username" WITH PASSWORD 'password' WITH ALL PRIVILEGES
-- 用户授权
-- usrename这个用户对testdb数据库拥有所有权限
grant all privileges on testdb to usrename
-- usrename这个用户对testdb数据库只有写的权限
grant WRITE on testdb to usrename
-- usrename这个用户对testdb数据库只有读的权限
grant READ on testdb to usrename
-- 查看数据库数据
SHOW MEASUREMENTS
CAdvisor(数据采集)
为了解决docker stats的问题(存储、展示),谷歌开源的CAdvisor诞生了,CAdvisor不仅可以搜集一台机器上所有运行的容器信息,还提供基础查询界面和http接口,方便其他组件如Prometheus进行数据抓取,或者cadvisor+influxdb+grafna搭配使用。CAdvisor可以对节点机器上的资源及容器进行实时监控和性能数据采集,包括CPU使用情况、内存使用情况、网络吞吐量及文件系统使用情况。CAdvisor使用Go语言开发,利用Linux的cgroups获取容器的资源使用信息,在K8S中集成在Kubelet里作为默认启动项,官方标配。
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 \
--volume=/dev/disk/:/dev/disk:ro \
--publish=8002:8080 \
--detach=true \
--privileged=true \
--link influxsrv:influxsrv \
--name=cadvisor \
google/cadvisor \
-storage_driver=influxdb \
-storage_driver_db=testdb \
-storage_driver_host=influxsrv:8086
注:storage_driver_db=testdb:连接influxdb里面的数据库
3)访问地址
http://192.168.25.128:8002/containers/
这时去查看influxdb数据库,会发现已经将一些信息保存到数据库
查看具体内容
Grafana(数据可视化)
Grafana是一款采用go语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库。Grafana支持许多不同的数据源。每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源。 官方支持以下数据源:Graphite,Elasticsearch,InfluxDB,Prometheus,Cloudwatch、MySQL和OpenTSDB等。每个数据源的查询语言和能力都是不同的。你可以把来自多个数据源的数据组合到一个仪表板,但每一个面板被绑定到一个特定的数据源,它就属于一个特定的组织。
1)下载镜像
docker pull grafana/grafana
2)创建容器
docker run -d -p 3001:3000 -e INFLUXDB_HOST=influxsrv -e INFLUXDB_PORT=8086 \
-e INFLUXDB_NAME=testdb -e INFLUXDB_USER=username -e INFLUXDB_PASS=password \
--link influxsrv:influxsrv --name grafana grafana/grafana
3)访问地址
账号、密码默认都是:admin
4)添加数据源
监控某个数据库数据情况
添加influxdb
5)添加仪表盘
可视化监控某个数据情况
选择grafana
设置名称
间隔几秒采集一次数据
6)添加预警通知
对某个数据设置阈值,实现监控预警
添加一个预警
回到仪表盘设置阈值和预警