Tomcat是一个完全功能的HTTP服务器,能够独立完成接收客户端请求,处理请求,然后封装响应报文响应客户端。但是Tomcat的并发响应能力并不强,所以往往使用httpd或nginx服务器用于在前端接收客户端请求,然后将请求调度至后端多个Tomcat节点。本文介绍的是利用httpd作为反向代理服务器,实现Tomcat的负载均衡。
httpd连接后端的Tomcat服务器,需要启用对应的模块。能够实现该功能的有两个模块:mod_proxy,mod_jk。mod_proxy是新出的模块,只有在apache 2.2及之后的版本上才可以使用,但是相对于mod_jk模块,它可以提供更丰富的功能和安全性。
实现过程
拓补图:
更多Tomcat相关教程见以下内容:
CentOS 6.6下安装配置Tomcat环境
RedHat Linux 5.5安装JDK+Tomcat并部署Java项目
Linux下使用Xshell查看Tomcat实时日志中文乱码解决方案
CentOS 64-bit下安装JDK和Tomcat并设置Tomcat开机启动操作步骤
实验环境:
httpd:192.168.1.116
Tomcat node1:192.168.1.106
Tomcat node2:192.168.1.127
在Tomcat node1和node2上安装JDK和tomcat,完成环境变量的配置(192.168.1.106和192.168.1.127上完成)。
安装jdk:
[root@node1 ~]# rpm -ivh jdk-7u9-linux-x64.rpm
[root@node1 ~]# cd /usr/java/
[root@node1 java]# ll
total 4
lrwxrwxrwx 1 root root 16 Sep 1 07:56 default -> /usr/java/latest
drwxr-xr-x 10 root root 4096 Sep 1 07:56 jdk1.7.0_09
lrwxrwxrwx 1 root root 21 Sep 1 07:56 latest -> /usr/java/jdk1.7.0_09
在/usr/java目录下有个latest链接文件指向最新的JDK。配置环境变量时直接使用此路径。
配置环境变量:
[root@node1 ~]# vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/latest
export PATH=$JAVA_HOME/bin:$PATH
#################################
[root@node1 ~]# . /etc/profile.d/java.sh
安装tomcat:
[root@node1 ~]# tar xf apache-tomcat-7.0.42.tar.gz -C /usr/local/
环境变量配置:
[root@node3 local]# cd /usr/local
[root@node3 local]# ln -sv apache-tomcat-7.0.42/ tomcat
`tomcat' -> `apache-tomcat-7.0.42/'
[root@node1 ~]# vim /etc/profile.d/tomcat.sh
export CATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA_HOME/bin:$PATH
####################################
[root@node1 ~]# . /etc/profile.d/tomcat.sh
为tomcat提供服务脚本:
#!/bin/sh
# Tomcat init script for Linux.
#
# chkconfig: 2345 96 14
# description: The Apache Tomcat servlet/JSP container.
# JAVA_OPTS='-Xms64m -Xmx128m'
JAVA_HOME=/usr/java/latest
CATALINA_HOME=/usr/local/tomcat
export JAVA_HOME CATALINA_HOME
case $1 in
start)
exec $CATALINA_HOME/bin/catalina.sh start ;;
stop)
exec $CATALINA_HOME/bin/catalina.sh stop;;
restart)
$CATALINA_HOME/bin/catalina.sh stop
sleep 2
exec $CATALINA_HOME/bin/catalina.sh start ;;
*)
echo "Usage: `basename $0` {start|stop|restart}"
exit 1
;;
esac
在代理服务器上编译安装apache2.4(192.168.1.116上)。
首先安装apr和apr-util:
[root@www ~]# tar xf apr-1.5.0.tar.bz2
[root@www ~]# cd apr-1.5.0
[root@www apr-1.5.0]# ./configure --prefix=/usr/local/apr-1.5.0
[root@www apr-1.5.0]# make && make install
#########################################
[root@www ~]# tar xf apr-util-1.5.3.tar.bz2
[root@www ~]# cd apr-util-1.5.3
[root@www apr-util-1.5.3]# ./configure --prefix=/usr/local/apr-util-1.5.3 --with-apr=/usr/local/apr-1.5.0/
[root@www apr-util-1.5.3]# make && make install
安装httpd-2.4:
[root@www ~]# tar xf httpd-2.4.9.tar.bz2
[root@www ~]# cd httpd-2.4.9
[root@www httpd-2.4.9]# yum install pcre-devel -y
[root@www httpd-2.4.9]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --e
nable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/l
ocal/apr-1.5.0/ --with-apr-util=/usr/local/apr-util-1.5.3/ --enable-mpms-shared=all --with-m
pm=event --enable-proxy --enable-proxy-http --enable-proxy-ajp --enable-proxy-balancer
--enable-lbmethod-heartbeat --enable-heartbeat --enable-slotmem-shm --enable-slotmem
-plain --enable-watchdog
[root@www httpd-2.4.9]# make && make install