Apache反向代理和tomcat集群实现负载均衡和session同步复制
A p a c h e反向代理和t o m c a t集群实现负载均
衡和s e s s i o n同步复制
---------------------------------------------------------配置者安渊璟索引目录
前言 (1)
一、软件环境 (2)
二、Apache的安装 (3)
三、Tomcat的安装 (3)
四、测试以及调试 (7)
前言
整个服务的搭建,我是在Linux的环境下,不是Windows。Windows的配置以及检测会简单很多,所以在下面的介绍中
都是关于Linux的。其实,无论是在那个环境下,思路基本
都是一样的,只要理解就会简单很多。当然我先前的发了一
个比较这个详细的大家可以看下,以下都是精简。
软件环境
Linux版本:Red Hat Enterprise Linux Server release 5.3
服务版本ip 软件安装环境
Apache 代理
服务httpd-2.2.6.tar.bz2 192.168.1.
12
rpm -qa|grep httpd
卸载之前系统自带
Tomcat1 解析
服务apache-tomcat-6.0.13
.tar.gz
192.168.1.
13
jdk-6u6-linux-i586.bi
n,tomcat运行环境
Tomcat2 解析
服务apache-tomcat-6.0.13
.tar.gz
192.168.1.
14
jdk-6u6-linux-i586.bi
n,tomcat运行环境
Apache的安装
# cd /usr/local
# tar -zvxf httpd-2.2.6.tar.gz
# cd httpd-2.2.6
# mkdir -p /usr/local/apache2
# ./configure --prefix=/usr/local/apache2 --enable-modules=so --enable-mods-shared=all --enable-proxy --enable-proxy-connect --enable-proxy-http --enable-proxy-ajp --enable-proxy-balancer --enable-proxy-balancer --enable-status
#make
#make install
# /usr/local/apache2/bin/apacheect1 start
访问http://192.168.1.12出现,It works 说明成功了Tomcat的安装
1)首先安装tomcat运行的环境jdk(必须)
#cd /usr/local
#chmod +x jdk-6u6-linux-i586.bin
#ls
#mv jdk1.6.0_06 jdk
2)设置环境变量
#vim /etc/profile
在最后添加
export JA V A_HOME=/usr/local/jdk
export CLASSPATH=/usr/local/jdk/lib:/usr/local/jdk/jre/lib export PATH=$PATH:$JA V A_HOME/bin:$JA V A_HOME/jre/bin export JRE=/usr/local/jdk/jre
#source /etc/profile
#echo $JA V A_HOME
如果得出上面设置的路径即:/usr/local/jdk说明环境配置正确
#java -version
3)正式安装tomcat(这个只需要解压即可,简单)
#cd /usr/local
#tar -zxvf apache-tomcat-6.0.13.tar.gz
#mv apache-tomcat-6.0.13 tomcat
#/usr/local/tomcat/bin/startup.sh
在本虚拟机的浏览器输入http://localhost:8080出现一只坏猫对着你傻笑,就说明tomcat解析成功了。第二台机器的方法同上。什么都不需要改动,要改动的在下面。
三、整体环境的整合以及配置
①首先配置tomcat1(也就是第一台tomcat机器)的主配置文件server.xml
#cd /usr/local/tomcat/conf
#ls
#cp server.xml server.xml.bak
#vim server.xml
把默认的
Ps:当然另一台虚拟机,也就是我的192.168.1.14写成tomcat2
去掉下面这句话前面和后面的注释(去掉前面的就行了)
当然这个是最简单开启集群的办法,如果需要更加详细的配置,可以到官网复制。
②在修改web.xml文件,添加distributable节点,session 复制支持。
#cd /usr/local/tomcat/webapps/ROOT/WEB-INF
#ls
#vim web.xml
然后在的前面添加
两台tomcat服务器都重启一下,要确保两台tomcat都能出现那只对着你傻笑的坏猫,这个是前提,也是排除错误的基本。
③修改httpd.conf即apache的主配置文件,当然你要到第一台机器上去修改。
#cd /usr/loca/apache2/conf/
#cp httpd.conf httpd.conf.bak
#vim httpd.conf
在文件的末尾添加如下代码,开启apache反向代理功能
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from all
#用来负载监控
SetHandler balancer-manager
Order Deny,Allow
Deny from all
Allow from all
ProxyRequests Off
ProxyPass /test balancer://tomcatcluster/ stickysession=jsessionid nofailover=On
BalancerMember ajp://192.168.1.13:8009 route=tomcat1 loadfactor=1 BalancerMember ajp://192.168.1.14:8009 route=tomcat2 loadfactor=1
配置好后,重新启动Apahce服务器
四、测试以及调试
1.访问http://192.168.1.12/balancer-manager,显示负载均衡有关信息,如下
当然更加详细的信息,我在我的博客上已经写好了,如果你遇到解决不了的问题请查看博客上的信息,看能否对你有所帮助哦。
安渊璟的新浪博客https://www.360docs.net/doc/6d3295026.html,/alloflove520
2.访问http://192.168.1.12/test试一试,如果出现下面tomcat默认解析的页面说明成功了一半。
3.测试session同步复制
分别在两个tomcat的服务器上新建testCluster.jsp测试文件,当然也可以用自己的应用程序。
#cd /usr/local/tomcat/webapps/ROOT
#vim testCluster.jsp
代码如下:
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<%
//HttpSession session = request.getSession(true);
System.out.println(session.getId());
out.println("
SESSION ID:" + session.getId()+"
");
// 如果有新的请求,则添加session属性
String name = request.getParameter("name");
if (name != null && name.length() > 0) {
String value = request.getParameter("value");
session.setAttribute(name, value);
}
out.print("Session List:");
Enumeration
while (names.hasMoreElements()) {
String sname = names.nextElement();
String value = session.getAttribute(sname).toString();
out.println( sname + " = " + value+"
");
System.out.println( sname + " = " + value);
}
%>
到第一台虚拟机,也就是装有apache的虚拟机,访问监控
1)访问http://192.168.1.12/test/testCluster.jsp
然后就刷新吧,再次访问监控
看到两台的tomcat服务器都参与了解析
最后一样有解析文件的大小
说明两台负载均衡成功
2)接下来测试session同步复制
下图看出,目前解析是tomcat2节点在负责解析,提交session 名称和值信息,然后提交
会得到如下页面
在tomcat1上出现了刚提交的session的名称和值信息。同步成功。