在Linux中使用Nginx与两个Tomcat实现负载均衡
配置两个Tomcat
下载安装
- 去官网下载对应的tomcat压缩文件(tar.gz),这里我选用的版本是8.5.69。
- 挑个位置新建自己的目录:
cd /usr/local/etc
;mkdir jxlTest
;mkdir tomcat8001
(文件夹的名字自己定) - 进入tomcat8001文件夹下,因为我用的是Xshell远程连接服务器,所以执行
rz
命令传输文件,选择下载的tomcat压缩包传输到本文件夹中,解压:tar -zxvf apache-tomcat-8.5.69
,删除本来的压缩包:rm apache-tomcat-8.5.69.tar.gz
- 返回上一层,新建目录:
mkdir tomcat8002
,拷贝解压内容到新目录中:cp -r ../tomcat8001/apache-tomcat-8.5.69 .
- 目录如下图:
配置tomcat环境变量
-
接下来需要编辑profile,配置两个tomcat的catalina的base和home环境变量,进入路径下修改文件:
vim /etc/profile
。 -
在文件的最后添加以下内容(可以先自行备份profile):
CATALINA1_BASE=/usr/local/etc/jxlTest/tomcat8001/apache-tomcat-8.5.69 CATALINA1_HOME=/usr/local/etc/jxlTest/tomcat8001/apache-tomcat-8.5.69 TOMCAT1_HOME=/usr/local/etc/jxlTest/tomcat8001/apache-tomcat-8.5.69 export CATALINA1_BASE CATALINA1_HOME TOMCAT1_HOME CATALINA2_BASE=/usr/local/etc/jxlTest/tomcat8002/apache-tomcat-8.5.69 CATALINA2_HOME=/usr/local/etc/jxlTest/tomcat8002/apache-tomcat-8.5.69 TOMCAT2_HOME=/usr/local/etc/jxlTest/tomcat8002/apache-tomcat-8.5.69 export CATALINA2_BASE CATALINA2_HOME TOMCAT2_HOME
添加完成后截图如下:
-
修改完成后,执行
source profile
,对刚才配置的环境进行重载。 -
分别进入到两个tomcat的bin路径下,编辑各自的catalina.sh,配置catalina_home:
- 8001的catalina.sh前面加上:
export CATALINA_BASE=$CATALINA1_BASE export CATALINA_HOME=$CATALINA1_HOME
- 同理,8002的catalina.sh前面也要加上对应的:
export CATALINA_BASE=$CATALINA2_BASE export CATALINA_HOME=$CATALINA2_HOME
配置tomcat的监听端口
- 进入tomcat各自的
apache-tomcat-8.5.69/conf
下,修改配置文件:vim server.xml
,主要包括server的shutdown端口,这里默认是8005,故而选择两个与之不同的端口号8016和8017(可自行选择可用端口号),修改第一个tomcat的shutdown端口如下:
- tomcat监听端口修改为8001,如下图:
- 第二个tomcat的shutdown端口:
- 第二个tomcat的监听端口8002(截图给忘记了,跟8001的位置一样)
tomcat运行测试
- 确认你的8001和8002端口在防火墙上是开放的,因为使用8003作为"nginx服务器",还需要打开8003端口,这里可以使用以下命令进行防火墙端口开放操作,参考这篇博客 :
- 查询某个端口是否开放(portNo改为实际的端口号):
firewall-cmd --query-port=portNo/tcp
- 永久开放某个端口(portNo改为实际的端口号):
firewall-cmd --add-port=portNo/tcp --permanent
- 重载修改好的防火墙配置:
firewall-cmd --reload
- 最后再次使用查询命令可以看到端口已经开发(no变为yes)
- 修改默认界面index.jsp,这里我随便加了一句话(在if you’re seeing this那块),用来区分8001和8002的tomcat,也可以自己重写html内容。
- 到8001和8002各自路径下的
apache-tomcat-8.5.69/bin
中,执行startup脚本:./startup.sh
。tomcat服务成功运行以后(可以通过ps -ef | grep tomcat
查看tomcat进程运行情况,运行失败则去log中定位错误),通过浏览器访问http://服务器ip:8001
和http://服务器ip:8002
,显示分别如下:
- 8001:
- 8002:
负载均衡
Nginx配置
-
进入nginx的conf目录,一般在
/etc/nginx(你的nginx安装目录)/conf
,可以先对nginx.conf文件进行备份,然后在原文件中添加如下对应配置,这里设置8001和8002配置的权重为1:2upstream tomcatJxlT{ server 192.168.1.119:8001 weight=1; server 192.168.1.119:8002 weight=2; } server{ listen 8003; location / { proxy_pass http://tomcatJxlT;(这里的名称要与upstream中的名称一致) } }
-
配置完成后如下图:
-
配置完成,记得
nginx -s reload
重新加载一下nginx服务。最后的访问结果是:访问8003时,有两次显示8002页面,一次显示8001页面: