利用 tengine 对多个 tomcat 进行负载均衡
之前介绍过《Apache HTTP Server 与 Tomcat 的三种连接方式》,也阐明了为什么在 tomcat 能自行提供服务的情况下,还利用 apache 进行整合。
nginx 是一款类似于 apache 的高性能 web 服务,而且在处理高并发请求的问题上,一直都优于 apache ,对于负载均衡的配置也相对简单。而 tengine 是淘宝开发的一款基于 nginx 的服务,其在配置上对 nginx 实现了高兼容,并延伸了很多新功能。下面就来说说利用 tengine 对多个 tomcat 进行负载均衡的操作方法,也适用于 nginx 。
tengine 安装
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 端口,可以看到相关页面:

安装 tomcat
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 端口,可以看到默认内容:


配置 tengine 负载均衡
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 {}
中引用刚刚新建的那个文件即可,如图:

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

Have fun!