本文共 6163 字,大约阅读时间需要 20 分钟。
可以根据自己的需求去修改,这里只是将 eureka变成主从,其余微服务读取eureka配置
1 spring: 2 application: 3 name: EUREKA-HA 4 5 --- 6 server: 7 port: 8000 8 spring: 9 profiles: eureka-server1 10 eureka: 11 instance: 12 hostname: 192.168.168.14 13 client: 14 server-url: 15 defaultZone: http://192.168.168.14:8000/eureka/,http://192.168.168.15:8000/eureka/ 16 17 --- 18 server: 19 port: 8000 20 spring: 21 profiles: eureka-server2 22 eureka: 23 instance: 24 hostname: 192.168.168.15 25 client: 26 server-url: 27 defaultZone: http://192.168.168.14:8000/eureka/,http://192.168.168.15:8000/eureka/
在启动微服务的时候,加入参数:spring.profiles.active 来读取对应的配置。
其他所有子项目的配置文件,都需要指定两个 Eureka注册中心的 ip:port/eureka
eureka: client: server-url: defaultZone: http://192.168.168.14:8000/eureka/,http://192.168.168.15:8000/eureka/
Extended Choice Paranter
分支参数:string Parameter
多选参数:Extended Choice Parameter
Number of Visible ltems :有几个微服务需要部署就填几。
注意,这里的逗号有讲究,不能是中文逗号,必须是英文无间隔的逗号。
效果:
以上是设置微服务集群部署的必要参数,这些参数都是将来用在 Jenkinsfile 脚本当中的,非常重要。
修改 Jenkinsfile ,实现高可用集群部署
node { //获取当前复选的项目名称 def project_Names = "${project_name}".split(",") stage('拉取代码') { checkout([$class: 'GitSCM', branches: [[name: '*/${branch}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_url}"]]]) } stage('代码审查') { //循环获取项目名称,并生成数组 for(int i=0; i
### 注意大小写 sonar.projectKey=cluster_eureka_serversonar.projectName=cluster_eureka_serversonar.projectVersion=1.0#扫描路径 “.”代表全部内容sonar.sources=.#排除扫描路径sonar.exclusions=**/test/**,**/target/**sonar.java.binaries=.sonar.java.source=1.8sonar.java.target=1.8sonar.sourceEncoding=UTF-8
stage('编译,安装父工程') { sh "/usr/local/maven/bin/mvn -f microservice-base-common install" sh "/usr/local/maven/bin/mvn -f microservice-base-common clean package" }
stage('编译,安装公共子工程,制作镜像') { //循环遍历 微服务名,并生成数组 for(int i=0; i
stage('镜像上传至Harbor仓库') { for(int i=0; i>
需求:两台 docker 服务器 同时部署 eureka 微服务
eureka配置文件
1 spring: 2 application: 3 name: EUREKA-HA 4 5 --- 6 server: 7 port: 8000 8 spring: 9 profiles: eureka-server1 10 eureka: 11 instance: 12 hostname: 192.168.168.14 13 client: 14 server-url: 15 defaultZone: http://192.168.168.14:8000/eureka/,http://192.168.168.15:8000/eureka/ 16 17 --- 18 server: 19 port: 8000 20 spring: 21 profiles: eureka-server2 22 eureka: 23 instance: 24 hostname: 192.168.168.15 25 client: 26 server-url: 27 defaultZone: http://192.168.168.14:8000/eureka/,http://192.168.168.15:8000/eureka/br
docker 生产服务器必须能从 Harbor上拉取镜像。
[root@jenkins ~]# ssh-copy-id 192.168.168.15
[root@jenkins ~]# ssh-copy-id 192.168.168.14//设置 gitlab 拉取凭证ID号的变量def git_auth = "218fb747-c605-4fa0-80d3-c322cd42d7a9"//设置 gitlab 拉取代码 URL 地址的变量def git_url = "git@192.168.168.12:itheima_group/tensquare_front.git"//镜像版本号def tag = "latest"//Harbor仓库的IP地址def harbor_url = "192.168.168.14"//Harbor凭证def harbor_auth = "584bf0a9-d247-4c4f-9e29-b9291381dd45"//Harbor仓库def harbor_project = "tensquare"node { //获取当前选择的项目名称 def projectNames = "${project_name}".split(",") //获取当前选择的服务器名称 def Servers = "${publish_server}".split(",") ......省略之前的步骤 stage('镜像上传至Harbor仓库,并完成部署') { for(int i=0; i
在所有的 docker 生产服务器创建此脚本
/opt/jenkins/deployCluster.sh
#!/bin/shharbor_url=$1 #对应$harbor_urlharbor_project_name=$2 #对应$harbor_projectproject_name=$3 #对应$projectNametag=$4 #对应$tagport=$5 #对应$projectPort profile=$6 #对应$activeProfileimageName=$harbor_url/$harbor_project_name/$project_name:$tagecho "==========$imageName========="#查询容器是否存在,存在即删除该容器containerId=`docker ps -a | grep -w ${ project_name}:${ tag} | awk '{print $1}'`echo "==========$containerId==========="if [ "$containerId" != " " ];then #删除容器 docker rm -f $containerId && echo "成功删除容器"fi#查看镜像是否存在,存在即删除该镜像imageId=`docker images | grep -w $project_name | awk '{print $3}'`echo "=========$imageId========="if [ "$imageId" != " " ];then #删除镜像 docker rmi $imageId && echo "成功删除镜像"fi#登录 Harbordocker login -u shm -p QQ1136265636.com $harbor_url#下载容器docker pull $imageName#启动容器docker run -itd -p $port:$port $imageName $profileecho "新版本容器启动成功"
构建测试一下,同时勾选两个生产服务器,看看能不能同时部署上 eureka
这种高可用集群部署方案,可以同时在 多个生产服务器 上,同时部署多个相同的微服务。达到高可用集群效果。
如下图,可以一次构建所有需求。
//设置 gitlab 拉取凭证ID号的变量def git_auth = "218fb747-c605-4fa0-80d3-c322cd42d7a9"//设置 gitlab 拉取代码 URL 地址的变量def git_url = "git@192.168.168.12:itheima_group/tensquare_front.git"//镜像版本号def tag = "latest"//Harbor仓库的IP地址def harbor_url = "192.168.168.14"//Harbor凭证def harbor_auth = "584bf0a9-d247-4c4f-9e29-b9291381dd45"//Harbor仓库def harbor_project = "tensquare"node { //获取当前选择的项目名称 def projectNames = "${project_name}".split(",") //获取当前选择的服务器名称 def Servers = "${publish_server}".split(",") stage('拉取代码') { checkout([$class: 'GitSCM', branches: [[name: '*/${branch}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_url}"]]]) } stage('代码审查') { for(int i=0; i
Nginx + Zuul集群,实现网关高可用架构
①搭建Nginx(已完成)
②修改Nginx 配置文件
upstream zuulServer{ server 192.168.168.103:10020 weight=1; server 192.168.168.104:10020 weight=1;}server { listen default_server; server_name _; root /usr/local/nginx/html location / { proxy_pass http://zuulServer/; }}
systemctl restart nginx
转载地址:http://zfrji.baihongyu.com/