持续集成环境搭建

持续集成环境搭建

持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

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环境,先查看状态:

1590042797574

编辑配置文件vi /etc/init.d/jenkins,在如下位置指定Java路径:

1590042902069

保存退出,重新加载,加载完重启Jenkins生效

systemctl daemon-reload

输入密码

1589708183983

查看Jenkins密码:输入命令cat /var/lib/jenkins/secrets/initialAdminPassword

之后会看到安装页面,点击第一个安装

1589719545821

自动下载插件

1589708450170

下载完创建一个账号登录

1589722290955

修改账号密码:账号密码设置都为xdzy

1589706779016

4)卸载Jenkins

-- 卸载
rpm -e jenkins

-- 查看是否卸载成功
rpm -ql jenkins

-- 彻底卸载残留文件
find / -iname jenkins | xargs -n 1000 rm -rf

5)安装插件

1589710507772

下载maven插件,如果jenkins下载git插件失败也要手动下载git插件

插件下载失败解决方案:https://www.cnblogs.com/sxdcgaq8080/p/10489326.html

6)全局工具配置

将服务器中git,maven,jdk8路径配置好即可

1589712341137

7)创建任务

1589714355845

这边应该会有其他选项可以选择的,如果插件下载失败就没有

1589717072673

插件下载之后,注意Jenkins最好使用最新版本,这样减少很多问题

1589722829500

填写项目描述,设置git项目路径

1589722999576

填写需要生成镜像的pom文件,以及打镜像命令

1589723128890

1589723246430

任务创建之后

1589723640203

图标含义说明:

第一个表示未执行过,执行之后变绿色,
第二个表示任务状态,即健康状态,
最后一个是执行按钮,启动任务之后,会将配置在git仓库的指定项目打成镜像(我们在打成镜像时,应该先提交代码到Git仓库)。

注意要先配置全局的环境

1589723834529

生成之后可以在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

1589713208656

安装过程

img

配置映射端口

img

注册账号:账号密码设置都为xdzy,登录之后可以看见如下页面:

1589713550345

3)创建项目

创建项目文件夹并且上传项目:tensquare

1589713719639

创建新的仓库

1589713757004

项目地址链接

1589713813717

其实也可以通过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,右下角切换中文

1589726209023

4)添加环境

添加环境即可以根据不同的环境(测试、生产、发布),使用不同的配置,启用不同的容器

1589726255807

根据要求设置环境

1589726387407

5)添加主机

1589726576490

将红色框命令在服务器执行,让Rancher与docker建立连接

1589726664758

docker中设置的容器都会加载进来,我们在这里可以很方便的管理主机的每个容器的开启和关闭

1589727145710

6)添加应用

应用是指项目分类,即属于哪个项目,我们可以将不同的服务放到不同的应用里

1589727284476

设置不同的项目名称

1589727348191

7)添加服务

即用图形化的方式创建镜像到docker,并且创建容器

1589727563670

创建一个mysql容器,注意名字不要和原来的容器名字重复

1589728269498

设置密码

1589727923225

创建完成,以上操作类似于我们在服务器执行了一下docker命令

1589728135731

8)微服务管理

实现思路:将微服务模块通过dockerfile的maven插件生成镜像到私有仓库,然后就可以通过Rancher可视化的将镜像生成容器管理。

9)扩容与缩容

扩容、缩容:增加或减少当前容器数量,微服务集群

注意点:需要通过postman发送post请求激活,容器不做端口映射,端口映射交给Rancher管理

实现步骤:

创建一个微服务容器

1590501461622

配置扩容信息

1590501663982

复制请求并且激活

1590501733656

在如下位置会看见容器数量为2,并且注册中心也会出现服务集群

1590501872474

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)访问地址

http://192.168.25.128:8083/

1590503788661

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/

1590507026874

这时去查看influxdb数据库,会发现已经将一些信息保存到数据库

1590507181922

查看具体内容

1590507224990

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)访问地址

http://192.168.25.128:3001

1590585751005

账号、密码默认都是:admin

1590585978714

4)添加数据源

监控某个数据库数据情况

1590586728864

添加influxdb

1590587215543

5)添加仪表盘

可视化监控某个数据情况

1590587372894

选择grafana

1590587512139

设置名称

1590587741561

间隔几秒采集一次数据

1590587879335

6)添加预警通知

对某个数据设置阈值,实现监控预警

1590588323364

添加一个预警

1590588473105

回到仪表盘设置阈值和预警

1590588672357

posted @ 2018-08-13 15:33  肖德子裕  阅读(543)  评论(2编辑  收藏  举报