|
软件及环境:
apache-tomcat-6.0.29
nginx-0.8.15
centos5.5
nginx:192.168.1.251
tomat1:192.168.1.251
tomat2:192.168.1.252
tomcat安装目录为:/usr/local/tomcat
nginx安装目录为:/usr/local/nginx
jdk、tomcat、nginx安装过程省略!
Tomcat1配置如下:
修改为
在Engine字段中添加下cluster内容:
port="45564"
frequency="500"
dropTime="3000"/>
Tomcat2配置如下:
修改为:
在Engine字段中添加下cluster内容:
配置nginx负载:
使用nginx做负载很简单,只要在配置文件里面加
upstream www.tomcat.com {
# ip_hash; //启用这个的话,整个C类地址会防问同一个server
server 192.168.1.251:8080;
server 192.168.1.252:8080;
#两台负载的IP地址,这里默认的是RR
}
server
{
listen 80;
server_name _;
location / {
proxy_pass http://www.tomcat.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
到这里配置文件就OK了,服务器的启动顺序如下:
|-------------| |-------------| |-------------|
|tomcat1 | --à |tomcat2 | --à |nginx |
|-------------| |-------------| |-------------|
先启动tocmat1,等tomcat1启动完全的时候再启动tomcat2,等两个tocmat全启动之后,再启动nginx
测试一下我们的配置,测试页如下:
Cluster Test
0) {
String value = request.getParameter("value");
session.setAttribute(name, value);
}
out.print("Session List:");
Enumeration names = session.getAttributeNames();
while (names.hasMoreElements()) {
String sname = names.nextElement();
String value = session.getAttribute(sname).toString();
out.println( sname + " = " + value+"");
System.out.println( sname + " = " + value);
}
%>
名称:
值:
配置WEB-INF下的web.xml文件,在中加入
然后我们就可以用nginx来防问了!
先防问,然后随便关闭那一个,再开启,发现SESSION都是同步的!
PS:
负载的时候可以用APACHE或NGINX,如果什么都不用,两台一接防问了话,可能会出错极session不同步的问题,网上也很多人介意不要做seeeion同步,这样会降低机器的性能,有一个方法可以,就是NGINX的ip_hash,这样至少可以保证客户端去防问同一台TOCMAT,除非那台TOCMAT挂了!
|
|
|