微服务整合及Jenkins的使用
任务一 Docker Compose编排工具
- 安装条件
Docker Compose是依赖于Docker引擎的,所以在安装Docker Compose之前要确保机器上已经安装了Docker. - 安装Compose
(1)使用curl命令从GitHub的Compose仓库拉取Docker Compose
(2)更改Docker Compose的可执行文件权限
(3)查看安装的Docker Compose效果及版本
2. 卸载Compose
$ sudo rm /usr/local/bin/docker-compose
3. Compose file文件的使用说明
Docker Compose编排工具的使用非常简单,只需如下三步
a) 编写Dockerfile文件;
b) 定义yml文件(通常是docker-compose.yml);
c) 运行服务部署命令。
任务二 微服务与Docker的整合
- 添加Dockerfile文件
- 针对一个子项目模块编写对应的Dockerfile文件。这里以用户订单管理微服务模块为例,Dockerfile内容如下
- 添加dockerfile-maven插件
- 添加docker-compose.yml配置文件
任务三 环境搭建以及镜像准备
一. 环境搭建
- 搭建Docker主机
本次实验因为是基于之前的Swarm集群而做,三台主机已安装配置好docker。 - 安装应用编译工具JDK
(1)上传所需Linux版本的JDK工具包并解压
(2)将解压下的文件移动到自定义目录下(此处有误,应为 cp -r jdk1.8.0_131 /usr/lib/jvm)
(3)配置环境变量(编辑/etc/profile)
(4)生效环境变量并测试java是否正确安装(编辑/etc/profile)
3. 安装应用打包工具Maven
(1)上传所需Linux版本的Maven工具包并解压, 将解压下的文件移动到自定义目录下
(2)添加环境变量
(3)生效环境变量查看Maven信息
二. 镜像准备
(1)修改配置位置settings.xml文件
由于之前dockerfile-maven的配置,在完成打包后会自动构建镜像并推送到指定仓库,但无论是推送到Docker Hub还是本地私有镜像仓库,必须先登录认证才可以推送。因此需要修改Maven存放jar文件的位置以及配置服务认证信息。
(2)上传项目
(3)执行mvn install打包(一定要切换到程序pom.xml位置,同时因为我在本地执行过mvn install,所以我将repo复制到了集群中)
(4)查看生成镜像
任务四 微服务的手动部署
一. 非集群环境下的服务部署
(1)登录私有仓库
(2)部署服务(进入到项目docker-compose.yml文件所在目录下,执行服务部署命令部署整个微服务项目)
(3)验证服务是否启动
(4)查看项目启动情况
(5)关闭整个服务
二. 集群环境下服务部署
- 集群服务中的网卡选择性注册
(1)查看网络列表详情 - (2)根据微服务项目的需求,在集群环境下预先自定义一个以overlay为驱动的网络进行本地集群服务网络管理
- (3)在所有需要注册到Eureka注册中心的服务(包括microservice-gateway-zuul,microservice-orderservice和microservice-userservice服务)的配置文件application.yml中,添加指定注册到Eureka中心的优选服务子网地址信息
- (4)修改服务部署的编排文件docker-compose.yml,将所有服务启动时的网络设置为前面预先定义的microservice_net网络来进行网络管理,将修改后的编排文件重命名为docker-compose-swarm.yml
- 集群服务部署
(1)登录私有仓库并部署服务 - (2)查看服务列表详情
- (3)在集群管理节点上使用docker stack相关指令查看整个微服务项目在集群节点的分配与启动情况
- (4)在集群管理节点上通过docker service提供的服务日志指令来进一步查看某个具体服务从启动到运行的整个日志情况
- 微服务测试
(1)通过visualizer集群服务可视化工具查看服务启动情况。微服务项目部署成功后,可以通过地址http://192.168.1.3:8081(对应您集群的manager1的主机地址)查看集群服务可视化工具visualizer界面的显示情况 - (2)通过Eurkea注册中心查看服务的启动情况,当然也可以通过地址192.168.1.3:8761访问Eureka服务注册中心的情况,查看其他微服务是否都已经启动并注册到该注册中心
- (3)将数据库数据初始化。MySQL数据库是使用Docker容器构建的,所以对MySQL数据库进行初始化时需要先安装一个MySQL客户端
- (4)连接数据库(默认密码root)
- (5)创建所需要的数据库microservice_mallmanagement及表和数据
- (6)测试微服务(分别连接用户管理微服务和订单管理微服务的访问地址进行测试)
- (7)测试验证API网关服务
任务五 使用JenKins自动部署微服务
- Jenkins介绍
Jenkins是一个基于Java开发的开源软件项目,用于支持构建,部署和自动化任何项目。在实际开发中,通常将它作为项目的持续集成,部署工具来使用。Jenkins进行项目集成管理的流程如下。
(1)开发人员将更改后的代码提交到代码仓库中(如GitHub);
(2)持续集成工具Jenkins会定期(或人工手动)从代码仓库中拉取指定项目;
(3)Jenkins工具会根据具体配置,自动化打包,构建镜像,推送镜像,并最终生成Docker容器来启动服务,形成对应的测试环境;
(4)测试人员会在对用的测试环境下测试Jenkins自动化集成,部署的服务;
(5)当项目测试成功后,可以使用Jenkins工具将测试成功的项目自动构建到发布环境下,也可以人工手段部署到发布环境下。 - Jenkins安装
(1)下载Jenkins
(2)上传至虚拟机并启动Jenkins服务
(3)Jenkins初始化安装(通过主节点IP地址:49001访问)
(4)初始化认证密码
(5)初始化插件安装
(6)创建管理员用户(上一步插件安装完毕后自动转到该页面)
到达该主页面后,就表示Jenkins安装及初始化完毕。 - Jenkins集成插件配置
(1)安装Maven插件(依次点击主页面的”系统管理”–>”插件管理”–>”可选插件”面板,然后再右侧搜索框中输入”Maven Intergration”关键字进行搜索。)
(2)系统全局插件配置(依次单击主页面的”系统管理”–>”全局工具配置”面板,进入全局插件配置页面,配置插件效果如下)
点击”保存”按钮跳转到主页面,至此,Jenkins插件配置完成。 - 服务自动化配置
- 构建新任务
- (1)配置源码仓库地址
- (2)构建触发器
- (3)服务发布配置(在Post Steps页面,选择”Add post-build step”下拉列表中的”Execute shell” 选项,并在命令框中输入需要发布的shell指令。为了确保集群环境下服务的正常部署,需要确认集群已经开启并且已经预先自定义好指定网段的网络,同时还要在集群管理节点进行私有仓库登录认证;上述配置完毕后,单击左下角”保存”按钮跳转到该任务主页面)
- 自动化部署服务
(1)单击任务主界面左侧的”立即构建”按钮后,会触发一次立即构建项目的动作,然后整个服务就会进入自动构建过程。 - (2)单击”构建历史”中的倒三角,选择”控制台输出”选项查看整个构建过程的输出信息
- (3)测试
实验过程中遇到的错误:
(一) Maven install失败
解决方法:将原程序Maven Plugin的版本1.3.6改为1.4.9
(二)执行java –jar Jenkins.war –httpport=49001失败
解决方法:在/etc/hosts里面加入集群中三台主机的主机名和IP地址使之映射
(三)源码管理输入git地址报错(在该地址后需要加.git,这里因为上一次试过还是同样的错所以在截图中没有.git后缀)
解决方法:在集群主节点安装git
(4)登录私有仓库失败
解决方法:杀掉之前的registry进程重新启动registry。
如何将本地文件Push到GitHub上???
- 方案1(这应该算是最简单的一种)
- 方案2–>安装客户端Push
a) 安装这两个软件 - b)进入项目所在目录,右键选择”Git Bash Here”
- c)执行clone命令,生成一个名为microservice-mallmanagement的空文件夹
- d)将项目中其余文件拉至该文件夹中
- e)执行命令添加文件
- f)推送到GitHub
- g)登录验证