Nginx实现Tomcat集群

本文最后更新于:2021年6月15日 晚上

本文介绍了利用nginx搭建了一个简单的负载均衡。

一、准备工作

Linux系统: CentOS 7 x64

Nginx版本:1.12.0

Tomcat版本: 7.0.77

二、安装

CentOS 快速安装,见我另外一篇文章CentOS快速安装

安装Nginx依赖

1
2
3
4
5
6
7
8
9
10
11
# gcc 用来编译nginx
yum install gcc-c++

# PCRE nginx的http模块使用pcre来解析正则表达式
yum -y install pcre*

# zlib nginx使用zlib对http的内容进行gzip压缩
yum install -y zlib zlib-devel

# openssl https支持
yum -y install openssl

下载Nginx

1
2
3
4
# 安装wget
yum install wget
# 下载nginx
wget http://nginx.org/download/nginx-1.12.0.tar.gz

编译安装Nginx

1
2
3
4
5
6
7
8
9
# 解压nginx
tar -zxvf nginx-1.12.0.tar.gz
# 进入解压目录
cd nginx-1.12.0
./configure
# 若无错误,可以执行以下安装
make
make install
# 默认安装到/usr/local/nginx目录

Nginx测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 启动nginx
/usr/local/nginx/sbin/nginx
# 访问localhost
wget localhost
# 此命令会下载一个index.html文件
vim index.html
# index.html中有关于nginx的类似于helloworld语句
# 由于我的Linux安装在虚拟机中,想要外部访问虚拟机内,需要关闭防火墙或开放端口
# 编辑防火墙, CentOS 7默认的防火墙不是iptables,需要另行安装,请自行解决
vim /etc/sysconfig/iptables
# 添加80端口
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
# 重启防火墙
service iptables restart
# 通过本机的浏览器访问虚拟机的ip
http://192.168.243.127(此处为虚拟机的ip)

三、配置用于集群的Tomcat

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
# 下载Tomcat
wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.77/bin/apache-tomcat-7.0.77.tar.gz
# 创建目录
mkdir /usr/local/tomcats
# 解压Tomcat
tar -zxvf apache-tomcat-7.0.77.tar.gz -C /usr/local/tomcats
# 修改解压的Tomcat目录名称
mv apache-tomcat-7.0.77 tomcat1
# 为了测试nginx负载均衡,需要对tomcat的server.xml配置一下
vim tomcat1/conf/server.xml
# 显示行号
:set nu
# 在105行修改为如下, 并保存退出
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
# 修改示例程序
echo 'tomcat1:<%=session.getId()%>' > tomcat1/webapps/ROOT/index.jsp

# 拷贝tomcat1目录为tomcat2
cp -r tomcat1 tomcat2
# 修改tomcat2的server.xml中的端口号
vim tomcat2/conf/server.xml
# 修改22行/71行/93行的端口
# 修改105行
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">
# 修改示例程序
echo 'tomcat2:<%=session.getId()%>' > tomcat1/webapps/ROOT/index.jsp

四、配置Nginx

1
vim /usr/local/nginx/conf/nginx.conf

启动tomcat

1
2
3
#  启动两个tomcat
./tomat2/bin/startup.sh
./tomat1/bin/startup.sh

测试

外部访问虚拟机

http://192.168.243.127(此处为虚拟机的ip)

多刷新几次,可以看到页面的内容在变化,在tomcat1和tomcat2之间进行切换,至此完成了简单nginx负载均衡的搭建。