作者:聂勇 欢迎转载,请保留作者信息并说明文章来源!
说明:这里是用Apache做前端的负载分配器,一个tomcat和一个glassfish作后端的处理器。tomcat的AJP监听端口是8010,glassfish的AJP监听端口是8009。
预备
- Apache 1.3.33 (已经安装并配置好)
- Tomcat 6.0.18 / Glassfish V2 (已经安装并配置好)
配置
1、打开%APACHE_HOME/conf/httpd.conf。
2、打开%APACHE_HOME/conf/work_balance.properties(如果不存在,则新建此文件)。配置内容如下:
说明:
- worker.list=loadbalancer:设定工作的负载平衡器,各Tomcat节点不能加入此列表。
- worker.
.lbfactor :负载平衡的权重比,如果此权重比越大,则分配到此节点的请求越多,如以上两个节点的权重比为1:1,则为平均分配。 - worker.loadbalancer.balanced_workers=worker_glassfish,worker_tomcat:指定此负载平衡器负责的Glassfish节点和Tomcat节点。
- worker.loadbalancer.sticky_session =true:此处指定集群是否需要会话复制,如果设为true,则表明为会话粘性,不进行会话复制,当某用户的请求第一次分发到哪台Tomcat后,后继的请求会一直分发到此Tomcat服务器上处理;如果设为false,则表明需求会话复制。
- worker.loadbalancer.sticky_session_force =true:如果上面的sticky_session设为true时,建议此处也设为true,此参数表明如果负载均衡群中某台服务器在多次请求没有响应后,是否将当前的请求,转发到其它服务器上处理;此参数在sticky_session=true时,影响比较大,会导致转发到其它 服务器上的请求,找不到原来的session,所以如果此时请求中有读取session中某些信息的话,就会导致应用的null异常。
注意:sticky_session 和 sticky_session_force 设置为true时,还需要对Tomcat进行特别配置,仅对tomcat有效。
验证
打开浏览器,输入URL,进行多次请求,会发现有时请求被转发到Tomcat,有时被转发至Glassfish。如下面两个图的所示:
参考资料
1、http://tomcat.apache.org/connectors-doc/reference/workers.html