当前位置:   article > 正文

CICD环境搭建15-jenkins+nginx+N个tomcat实现负载均衡_jenkins 负载均衡

jenkins 负载均衡

环境准备

1.安装tomcat
2.安装nginx

一台服务器配置多个tomcat

1.上传tomcat压缩包到服务器上

2.解压缩

tar -zxvf apache-tomcat-8.5.38.tar.gz
  • 1

3.复制解压好的apache-tomcat-8.5.38,到/opt/目录下,创建软链接

#tomcat1
[root@localhost software]# cp -r apache-tomcat-8.5.38 /opt/
[root@localhost opt]# ln -s apache-tomcat-8.5.38 tomcat
  • 1
  • 2
  • 3

重复以上步骤两次

#tomcat2
[root@localhost opt]# cp -r apache-tomcat-8.5.38  apache-tomcat-8.5.38-2
[root@localhost opt]# ln -s apache-tomcat-8.5.38-2 tomcat2
#tomcat3
[root@localhost software]# cp -r apache-tomcat-8.5.38 apache-tomcat-8.5.38-3
[root@localhost opt]# ln -s apache-tomcat-8.5.38-3 tomcat3
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

结果如下图所示:
在这里插入图片描述
4.修改配置文件

因为配置了三个tomcat,防止启动文件冲突,修改tomcat的查找路径

首先,配置环境变量

[root@localhost ~]#vim /etc/profile
在这里插入图片描述
修改后,运行source /etc/profile使该文件更新生效

随后,修改tomcat的启动文件

修改tomcat2和tomcat3的启动文件,因为该文件中的变量依旧是CATALINA_HOME 和 CATALINA_BASE

tomcat2:

[root@localhost ~]# vim  /opt/tomcat2/bin/catalina.sh 
  • 1

在这里插入图片描述
tomcat3:

[root@localhost ~]# vim  /opt/tomcat3/bin/catalina.sh 
  • 1

在这里插入图片描述

5.修改tomcat的端口号

部署的三台tomcat,默认的端口号是一样的,如果不修改的话,将第三个tomcat都启动之后,发现只有一个是可以被执行的。

一共需要修改三处:

第一处:tomcat、tomcat2、tomcat3依次设置为8005、8006、8007
在这里插入图片描述
第二处:tomcat、tomcat2、tomcat3依次设置为8080、8081、8082
在这里插入图片描述
第三处:tomcat、tomcat2、tomcat3依次设置为8009、8010、8011
在这里插入图片描述
6.检验三个tomcat是否可以同时启动成功
查看进程
在这里插入图片描述
查看端口号
在这里插入图片描述

nginx实现多tomcat负载均衡

1.nginx修改配置文件

[root@localhost ~]# vim /opt/nginx/nginx.conf
  • 1

在这里插入图片描述
weight:权重,默认是1,数值越大提供服务的次数就越多
listen:表示当前的代理服务器监听的端口,默认的是监听80端口
server_name:表示监听到之后需要转到哪里去
proxy_pass http://tomcatServer:把nginx的默认站点通过 proxy_pass方法代理到设定好的tomcat_server负载均衡服务器上

2.检查配置文件nginx.conf是否正确
执行以下命令:

[root@localhost ~]# cd /opt/nginx
[root@localhost nginx]# ./sbin/nginx -t
  • 1
  • 2

若显示一下两行信息,说明配置文件正确:
在这里插入图片描述
修改完配置文件一定要重启nginx服务才能让修改的内容生效吗?

答案是,不需要。

因为nginx能够自动更新配置文件。

3.修改各个tomcat的index.jsp文件

[root@localhost nginx]# cd /opt/tomcat/webapps/ROOT/
[root@localhost ROOT]# vim index.jsp 
  • 1
  • 2

将jsp文件存放在ROOT文件夹下,通过浏览器查看时,不需要输入文件路径,直接输入http://ip:端口,即可

tomcat:
在这里插入图片描述
tomcat2:
在这里插入图片描述
tomcat3:
在这里插入图片描述
4.检验nginx是否实现负载均衡

在浏览器访问:http://ip,即安装nginx的服务器ip地址,不需要输入端口号
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过刷新页面,实现nginx切换tomcat,而且会发现,tomcat出现的机率是根据nginx.conf配置的权重分配的。

jenkins+nginx+N个tomcat实现负载均衡

在jenkins从gitlab拉取项目通过ssh+shell自动部署到远程tomcat的基础上(该部分的实现,可以参考前文:https://blog.csdn.net/weixin_43840640/article/details/88709981),添加nginx+tomcat实现负载均衡。

1.构建一个maven项目,并填写一个名称
2.General
在这里插入图片描述
3.Source Code Management
这里就不赘述jenkins如何集成gitlab,可以参考https://blog.csdn.net/weixin_43840640/article/details/88719485
在这里插入图片描述
4.Build Triggers
在这里插入图片描述
5.Build
在这里插入图片描述
6.Post Steps
在这里插入图片描述
7.Post-build Actions
在这里插入图片描述

SSH Server Name:Publish over SSH插件的Server Name
在这里插入图片描述
Transfer Set Source files:填写jenkins服务器要传输的文件和文件夹,格式:target/*.war

Remove prefix:移除目录(只能指定Transfer Set Source files中的目录)
如果该处不填,则构建后的war包相对于远程目录Remote directory的相对路径为 target/.war (实际上“”为maven构建的war包名称)
如果此处填了,比如我填了target,那么构建后的war包相对于远程目录Remote
directory的相对路径为 .war (实际上“”为maven构建的war包名称)

Remote directory:远程目录

Exec command:要执行的命令或者shell脚本写在里面

脚本编写的思路:

1.jenkins通过SSh把编译好的war包传输到tomcat远程服务的临时文件夹;
2.执行脚本,检查远程服务器的3个tomcat是否启动,如果启动,则关闭;
3.关闭3个tomcat后,将临时文件中的war包复制到到3个tomcat的webapps目录下,启动3个tomcat。

情况1:3个tomcat放在同一台服务器

source   ~/.bash_profile
#!/bin/bash
#kill tomcat pid 

#关闭tomcat
pidlist=`ps -ef|grep tomcat|grep -v "grep"|awk '{print $2}'`
function stop(){
if [ "$pidlist" == "" ]
  then
    echo "----tomcat 已经关闭----"
    
 else
    echo "tomcat 进程号 :$pidlist"
    kill -9 $pidlist
    echo "KILL $pidlist:"
fi
}

stop
pidlist2=`ps -ef|grep tomcat|grep -v "grep"|awk '{print $2}'`
if [ "$pidlist2" == "" ]
    then 
       echo "----关闭tomcat成功----"
else
    echo "----关闭tomcat失败----"
    return 1
fi

#移除原来tomcat中的webapps中的项目文件夹
rm -rf /opt/tomcat/webapps/ROOT*
rm -rf /opt/tomcat2/webapps/ROOT*
rm -rf /opt/tomcat3/webapps/ROOT*

#复制jenkins生成的war包到tomcat中的webapps中
cp -rf  /opt/tmp/scm-nginx-0.0.1-SNAPSHOT.war /opt/tomcat/webapps/ROOT.war
cp -rf  /opt/tmp/scm-nginx-0.0.1-SNAPSHOT.war /opt/tomcat2/webapps/ROOT.war
cp -rf  /opt/tmp/scm-nginx-0.0.1-SNAPSHOT.war /opt/tomcat3/webapps/ROOT.war
sleep 10s

#启动tomcat
echo  "starting tomcat"
cd /opt/tomcat/bin
./startup.sh

#启动tomcat2
echo  "starting tomcat"
cd /opt/tomcat2/bin
./startup.sh

#启动tomcat3
echo  "starting tomcat"
cd /opt/tomcat3/bin
./startup.sh
  • 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
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53

情况2:3个tomcat放在不同服务器上

1.在系统管理->系统设置中,配置Publish over SSH插件,添加一个SSH Server Name,添加方式可以参考https://blog.csdn.net/weixin_43840640/article/details/88709981,在此就不做赘述了。

在这里插入图片描述
在Post-build Actions,添加一个对10.20.126.133服务器tomcat的shell执行脚本
在这里插入图片描述
tomcat和tomcat的执行脚本几乎一致,只是tomcat的名字不一样而已:

source   ~/.bash_profile
#!/bin/bash
#kill tomcat pid 

#关闭tomcat
pidlist=`ps -ef|grep tomcat|grep -v "grep"|awk '{print $2}'`
function stop(){
if [ "$pidlist" == "" ]
  then
    echo "----tomcat 已经关闭----"
    
 else
    echo "tomcat 进程号 :$pidlist"
    kill -9 $pidlist
    echo "KILL $pidlist:"
fi
}

stop
pidlist2=`ps -ef|grep tomcat|grep -v "grep"|awk '{print $2}'`
if [ "$pidlist2" == "" ]
    then 
       echo "----关闭tomcat成功----"
else
    echo "----关闭tomcat失败----"
    return 1
fi

#移除原来tomcat中的webapps中的项目文件夹
rm -rf /opt/tomcat2/webapps/ROOT*

#复制jenkins生成的war包到tomcat中的webapps中
cp -rf  /opt/tmp/scm-nginx-0.0.1-SNAPSHOT.war /opt/tomcat2/webapps/ROOT.war
sleep 10s

#启动tomcat2
echo  "starting tomcat"
cd /opt/tomcat2/bin
./startup.sh
  • 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
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/214115
推荐阅读
相关标签
  

闽ICP备14008679号