通过nginx 反向代理tomcat,模拟实现两台tomcat的负载均衡

我们大家都知道nginx是一个高可用,高并发、高性能,可扩展性好,高可靠性,热部署,BSD许可证的一款轻量级的Web 服务器。我们接下来搭建,通过nginx实现tomcat的负载均衡。废话不多说,直接上干货!

实验环境:linux contOS 7 系统,jdk 1.8,nginx最新稳定版,tomcat 10 

一:安装软件:

1. 安装nginx

从官网上下载ngxin

 

我下载的源码包,通过 ./configure&&make&&make insatll 命令安装

建议一次执行一个命令,./configure 执行完后,在执行make ,make没报错,在执行make install。

./configure 后面一般跟--prefix=path(path要安装的位置,根据自己需求)参数,根据实际情况选择参数执行

安装nginx之前需要安装一些依赖包,通过命令 yum -y install gcc gcc-c++ pcre pcre-devel  zlib zlib-devel openssl openssl-devel

 

 

2.安装tomcat

安装tomcat之前,需要先安装jdk,直接从官网上下载rpm包,通过rpm -ivh命令安装,安装完成后,通过java -version命令验证是否安装成功。

安装完成后,去tomcat 直接从官网上下载linux对应的软件压缩包,上传到linux服务器,解压后,进入bin目录,执行./start.up脚本,即可运行起来,通过访问本机 ip:8080,可以看到tomcat页面。

 

二:修改配置文件,通过nginx搭建tomcat的负载均衡

1.实现tomcat的负载均衡,最少需要两台tomcat服务器,我们通过cp -r命令复制tomcat源码文件,模拟两台tomcat服务器

 

 

 理论上一台服务器跑一个服务程序,不允许跑多个相同的服务程序,实际我们通过修改服务程序端口,就能同时跑多个服务程序。

tomcat默认端口是 8080 http访问端口,8005 关闭端口, 8443 https 这几个常用的端口,我们复制一份tomcat程序文件后,需要修改上述端口,使和原始的tomcat端口不一致,如第二份tomcat端口修改成 8081,8006,8444。修改 conf/server.xml 文件,找到对应的端口进行修改。

修改完tomcat配置文件,在修改系统的配置文件,加下需要的catalina环境变量

vim /etc/profile

在文件最后加上如下

##########First Tomcat###########
CATALINA_BASE=/usr/local/tomcat/apache-tomcat-10.0.27
CATALINA_HOME=/usr/local/tomcat/apache-tomcat-10.0.27
TOMCAT_HOME=/usr/local/tomcat/apache-tomcat-10.0.27
export CATALINA_BASE CATALINA_HOME TOMCAT_HOME

##########Second Tomcat##########
CATALINA2_BASE=/usr/local/tomcat/apache-tomcat-10.0.27_2
CATALINA2_HOME=/usr/local/tomcat/apache-tomcat-10.0.27_2
TOMCAT2_HOME=/usr/local/tomcat/apache-tomcat-10.0.27_2
export CATALINA2_BASE CATALINA2_HOME TOMCAT2_HOME

修改完成后,保存退出,通过 source /etc/profile 命令,使配置文件立即生效

接下来到第二份tomcat的 bin 路径下,修改 catalina.sh 脚本,

找到 # OS specific support.  $var _must_ be set to either true or false. 这句话,在这句话中最下面 添加如下语句

export CATALINA_BASE=$CATALINA2_BASE
export CATALINA_HOME=$CATALINA2_HOME

使和系统环境变量一致,保证能找到相应的程序路径

可以在tomcat中的webapps目录下创建一个测试页面,用于负载均衡测试

2.配置nginx

编辑nginx的配置文件   conf/nginx.conf 文件

编辑里面的server块中的  location / {}块,中添加一句跳转语句:proxy_pass http://tomcatCluster; 此句是反向代理的关键句,用户通过访问nginx服务器,在跳转到tomcat服务器上

在http块中,也就是和server块同级,在server 块上面添加一个

upstream tomcatCluster{(可以理解为负载均衡的模块,在这个模块里可以填写多个服务器地址,通过weight来调配访问的概率,实现负载均衡)

server 192.168.x.x:8080 weight=1;(填写自己tomcat的ip地址,weight表示权重,数字越大,访问时,被分配到的概率越大)
server 192.168.x.x:8081 weight=1;

}

上述配置都完成后,依次开启tomcat1,tomcat2,nginx服务,访问本机nginx服务,可以看到访问一个地址,会跳转到不同的服务器

 

 

 

 这边通过不同的端口,模拟不同的服务器。

nginx常用的命令:进入sbin目录下

./nginx 启动nginx服务

./nginx -s reload  重启ngxinx服务(重新加载nginx配置文件,一般修改过配置文件使用)

 ./nginx -t 检查配置文件修改是否正确

./nginx -s stop 关闭nginx服务

posted @ 2023-02-04 22:45  海的航行  阅读(163)  评论(0编辑  收藏  举报