|
本文是接上面文章所做的tomcat群集,以及session的复制
环境:centos5.4 apache2.2 tomcat6.0 jk1.3
目的:单机上2个tomcat做到负载均衡并且session在多个tomcat之间复制
1 修改server.xml配置文件(直接贴我自己的)
2 http下配置
workers.properties配置
- worker.list=controller
-
- worker.worker1.type=ajp13
- worker.worker1.host=localhost
- worker.worker1.port=8009
- worker.worker1.lbfactor=1
- worker.worker1.cachesize=10
- worker.worker1.cache_timeout=600
- worker.worker1.socket_keepalive=1
- worker.worker1.socket_timeout=300
-
- worker.worker2.type=ajp13
- worker.worker2.host=localhost
- worker.worker2.port=18009
- worker.worker2.lbfactor=1
- worker.worker2.cachesize=10
- worker.worker2.cache_timeout=600
- worker.worker2.socket_keepalive=1
- worker.worker2.socket_timeout=300
-
- worker.controller.type=lb
- worker.retries=3
- worker.controller.balance_workers=worker1,worker2
worker.controller.method=B
# 如何选择最优的worker, B[usyness]: 选最不忙的, R[equest]: 缺省
worker.controller.sticky_session=0
- worker.controller.sticky_session_force=0
- #ticky_session sticky_session_force 含义
# true false SESSION会复制,有粘性
# true true SESSION不复制,有粘性
# false false SESSION会复制,无粘性
# false true SESSION会复制,无粘性
# *注意* worker.controller.sticky_session=1,等同于worker.controller.sticky_session=true.此处指定集群是否需要会话复制,
#如果设为true,则表明为会话粘性,不进行会话复制,当某用户的请求第一次分发到哪台Tomcat后,后继的请求会一直分发到此
#Tomcat服务器上处理;如果设为false,则表明需求会话复制。这就是说,如果你要想进行均衡负载,并在192.168.1.5和192.168.1.3
#两台机器的Tomcat实例上实现集群全局session复制,此处值要设置成false。
#sticky_session 1: True, otherwise False, 相同session id一直访问同一服务器
#sticky_session_force session id出错状态不返回500(Server Error), 由另一worker接手
配置uriworkermap.properties
- JkMount /servlet/* controller
- JkMount /*.jsp controller
配置httpd.vhost.conf
- NameVirtualHost *:80
-
- ServerAdmin webmaster@dummy-host.example.com
- DirectoryIndex index.html index.htm index.jsp
- DocumentRoot "/opt/webapps/test1"
- ServerName localhost
- ErrorLog "logs/dummy-host.example.com-error_log"
- CustomLog "logs/dummy-host.example.com-access_log" common
- Include /usr/local/apache/conf/uriworkermap.properties
-
- Options Indexes FollowSymLinks
- AllowOverride None
- Order allow,deny
- Allow from all
-
-
3 测试负载均衡
写一个 jsp 来进行测试
刷新这个页面(可以换浏览器刷新),然后查看
/usr/local/tomcat1/logs/catalina.out
/usr/local/tomcat2/logs/catalina.out
可以看到2边都会出现========== test ========
说明负载成功
4 测试session复制
建一个index.jsp
-
-
- Cluster App Test
-
- Server Info:
-
- 0) {
- String dataValue = request.getParameter("dataValue");
- session.setAttribute(dataName, dataValue);
- } out.print("Session 列表"); Enumeration e = session.getAttributeNames();
- while (e.hasMoreElements()) {
- String name = (String)e.nextElement();
- String value = session.getAttribute(name).toString();
- out.println( name + " = " + value+"");
- System.out.println( name + " = " + value);
- }
- %>
-
- 名称:
-
- 值:
-
-
-
-
-
注意:在应用的web.xml加入 即可
然后打开首页同时观察tomcat的日志,可以发现tomcat1在运行这个页面,同时记录了session,然后你停止
tomcat1,会刷新页面你会发现tomcat2依旧保存这个session,说明tomcat1和2session之间是复制了
|
|
|