利用 tengine 对多个 tomcat 进行负载均衡

之前介绍过《Apache HTTP Server 与 Tomcat 的三种连接方式》,也阐明了为什么在 tomcat 能自行提供服务的情况下,还利用 apache 进行整合。

nginx 是一款类似于 apache 的高性能 web 服务,而且在处理高并发请求的问题上,一直都优于 apache ,对于负载均衡的配置也相对简单。而 tengine 是淘宝开发的一款基于 nginx 的服务,其在配置上对 nginx 实现了高兼容,并延伸了很多新功能。下面就来说说利用 tengine 对多个 tomcat 进行负载均衡的操作方法,也适用于 nginx 。

tengine 安装

1
2
3
4
5
6
7
8
9
10
11
12
13
groupadd tengine
useradd -g tengine tengine
yum install -y pcre*
yum install -y openssl*
yum install -y gcc
wget http://tengine.taobao.org/download/tengine-2.1.1.tar.gz
tar -zxvf tengine-2.1.1.tar.gz
cd tengine-2.1.1
./configure --prefix=/usr/local/tengine
make
make install
chown -R tengine.tengine /usr/local/tengine
/usr/local/tengine/sbin/nginx -s start

安装完成后,通过浏览器访问主机 80 端口,可以看到相关页面:

tengine默认页面

安装 tomcat

1
2
3
4
5
6
7
8
9
10
11
12
13
groupadd tomcat
useradd -g tomcat tomcat
yum install -y java-1.8.0-openjdk
yum install -y java
wget http://mirrors.cnnic.cn/apache/tomcat/tomcat-8/v8.0.26/bin/apache-tomcat-8.0.26.tar.gz
tar -zxvf apache-tomcat-8.0.26.tar.gz
mv apache-tomcat-8.0.26 /usr/local/tomcat8.0_1
cp -r /usr/local/tomcat8.0_1 /usr/local/tomcat8.0_2
chown -R tomcat.tomcat /usr/local/tomcat8.0_1
chown -R tomcat.tomcat /usr/local/tomcat8.0_2
vi /usr/local/tomcat8.0_2/conf/server.xml(把访问端口改为8081)
/usr/local/tomcat8.0_1/bin/startup.sh
/usr/local/tomcat8.0_2/bin/startup.sh

启动完后,分别访问两个 tomcat 端口,可以看到默认内容:

端口默认为8080的tomcat1

端口默认为8089的tomcat2

配置 tengine 负载均衡

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
vi /usr/local/tengine/conf/web.conf 

########新增内容########
upstream backend {
ip_hash;
session_sticky;
server 127.0.0.1:8088;
server 127.0.0.1:8089;
}

server {
listen 80;
server_name localhost;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://backend;
}
}
########新增内容########

引用新配置:

vi /usr/local/tengine/conf/nginx.conf

http {} 中引用刚刚新建的那个文件即可,如图:

引用web.conf

重启 tengine

1
2
/usr/local/tengine/sbin/nginx -s stop
/usr/local/tengine/sbin/nginx -s start

重启后,访问 tengine 的 80 端口,可以看到 tomcat 的相关内容,通过查看日志,可以发现两个 tomcat 都被调用,实现了负载均衡。而停掉其中一个 tomcat , tengine 的 80 端口仍然可以访问并显示,两个 tomcat 实现了容错互备。

tengine整合tomcat

Have fun!