windows下的tomcat集群
方案一:mod_proxy_balance
下载资料:http://download.csdn.net/detail/senssic/6695019
1.配置apache
打开httpd.conf文件,取消下面四行的注释,用以打开代理所需的.so支持模块
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_module modules/mod_proxy_blancer.so
在httpd.conf文件最后添加以下代码
ProxyPass / balancer://proxy/ lbmethod=bytraffic #lbmethod=bytraffic表示服务器负载请求和响应的字节数,处理字节数的多少是以权值的方式来表示的
<Proxy balancer://proxy>
BalancerMember http://127.0.0.1:8080/ loadfactor=3 #BalancerMember 及其后面的URL表示要配置的后台服务器、test表示该服务器下的项目名称
BalancerMember http://127.0.0.1:8081/ loadfactor=1 #参数”loadfactor”表示后台服务器负载到由Apache发送请求的权值,该值默认为1
BalancerMember http://127.0.0.1:8082/ loadfactor=2
</Proxy>
2.配置tomcat
tomcat最好是绿色半,如果启动一闪而过需要修改javahome等环境变量
将资料中的tomcat分成三份tomcat在同一目录下
依次修改tomcat中的server.xml配置文件
tomcat1
tomcat2
tomcat三默认不变
分别在tomcat1,2,3的webapp下创建test文件夹,并创建test.jsp和WEB-INF目录下创建web.xml
在web.xml中添加如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<display-name>Tomcat Manager Application</display-name>
<distributable/>
</web-app>
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Cluster App Test</title></head>
<body>
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
<%
out.println("<br> ID " + session.getId()+"<br>");
// 如果有新的 Session 属性设置
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.println("<b>Session 列表</b><br>");
System.out.println("============================");
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value = session.getAttribute(name).toString();
out.println( name + " = " + value+"<br>");
System.out.println( name + " = " + value);
}
%>
<form action="test.jsp" method="POST">
名称:<input type=text size=20 name="dataName">
<br>
值:<input type=text size=20 name="dataValue">
<br>
<input type=submit>
</form>
</body>
</html>
启动apache,依次启动tomcat1,2,3观察session以及后台打印看是否实现session复制和负载均衡(最好将配置文件中的中文注释全部去掉以免出错)
会发现被均衡到各个服务器并且实现了session复制
而且其优点是当其中一台服务器垮掉后session不会消失,而且当此服务器重新上线会被apache自动检测到并自动加入到集群中,一般就是用它了
方案二:mod_jk
将下载资料中的mod_jk-1.2.31-httpd-2.2.3.so放到对应apache2\modules文件夹中
1.修改apache配置文件
在文件的最末尾添加一行
include "D:/senssic/program/apache2/conf/mod_jk.conf"
保存
然后新建mod_jk.conf
添加:
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so
JkWorkersFile conf/workers.properties
#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器名
JkMount /*.jsp controller
保存
新建workers.properties
添加:
worker.list = controller,tomcat1,tomcat2,tomcat3, status #server 列表
#worker.list = controller, status #server 列表
#========tomcat1========
worker.tomcat1.port=8010 #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat1.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.type=ajp13 #定向包协议
worker.tomcat1.lbfactor = 1 #server的加权比重,值越高,分得的请求越多
#worker.tomcat1.redirect = tomcat2 #如果启用是一种备份模式,即:只有a失效时,才起作用
#worker.tomcat2.activation = able
#========tomcat2========
worker.tomcat2.port=8011 #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat2.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat2.type=ajp13 #定向包协议
worker.tomcat2.lbfactor = 2 #server的加权比重,值越高,分得的请求越多
#worker.tomcat2.redirect = tomcat1 #如果启用是一种备份模式,即:只有a失效时,才起作用
#worker.tomcat2.activation = able
#========tomcat3========
worker.tomcat3.port=8009
worker.tomcat3.host=localhost
worker.tomcat3.type=ajp13
worker.tomcat3.lbfactor=3
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2,tomcat3
worker.controller.sticky_session=false #stickysesssion 不启动
worker.controller.sticky_session_force=1
#worker.controller.sticky_session=1
worker.status.type=status
保存
修改tomcat配置文件
tomcat1
tomcat2
启动apache,依次启动tomcat1,2,3观察session以及后台打印看是否实现session复制和负载均衡(最好将配置文件中的中文注释全部去掉以免出错)
会发现被均衡到各个服务器并且实现了session复制