Apache:2.4.25
web server:apache-tomcat-8.0.18
Jdk:1.8
操作系统:Windows7
官网下载:
http://httpd.apache.org/
找到Apache下conf目录中httpd.conf文件,进行以下调整:
#Define SRVROOT "/Apache24" 》Define SRVROOT "D:/MyTest/tomcat_cluster/Apache24" #指向安装目录
安装Apache主服务,管理员权限打开cmd,执行:httpd.exe -k install -n Apache24 ,Apache24为服务名可自定义
安装位置bin目录下双击ApacheMonitor.exe,打开界面窗口,选择服务,点击start开启服务
浏览器访问http://localhost,出现“IT WORKS”界面。
默认监听80端口,被占用无法启动
服务卸载,管理员权限打开cmd,执行:sc delete Apache24
</web-app>上面添加<distributable/>,表明集群下某一结点生成或改变session,将广播到集群下的其它节点
单机测试需要更改tomcat端口号,避免端口冲突
在Engine标签内添加jvmRoute属性,自定义节点名称,例如:tomcat1
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
将Cluster标签注释打开
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
mod_proxy_balancer、mod_jk两种方式,mod_jk的设置项更多。具体比较可参考:
引用
首先要在httpd.conf引入配置文件:
#include conf/mod_proxy_balancer.conf
include conf/mod_jk.conf
mod_proxy_balancer.conf
#AH01177: Failed to lookup provider 'shm' for 'slotmem': is mod_slotmem_shm loaded??
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
#AH02432: Cannot find LB Method: byrequests
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
<Proxy balancer://testCluster>
BalancerMember ajp://127.0.0.1:6009 loadfactor=3
BalancerMember ajp://127.0.0.1:7009 loadfactor=1
#BalancerMember http://127.0.0.1:6080 loadfactor=3
#BalancerMember http://127.0.0.1:7080 loadfactor=1
</Proxy>
ProxyPass / balancer://testCluster/
以上为mod_proxy_balancer方式的配置文件,需要加载所需的.so支持模块。前两个模块的注释为测试时遇到的错误发现需要增加的模块支持。Proxy balancer中支持ajp、http两种方式,建议ajp,两者对比分析:
引用
mod_jk.conf
#加载mod_jk Module
LoadModule jk_module modules/mod_jk.so
#指定workers.properties文件路径
JKWorkersFile conf/workers.properties
#指定请求交给tomcat处理,"controller"为在workers.propertise里负载分配控制器
JKMount /* controller
mod_jk.so为依赖的模块,都说在Apache官网上下载,没有找到。网上下了个,见附件。
JKMount /* 分流所有请求,可调整通配符分流指定请求,例如:/*.action
workers.properties
worker.list=controller,tomcat1,tomcat2
worker.tomcat1.port=6009 #ajp13 端口号
worker.tomcat1.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1 #server的加权比重,值越高,分得的请求越多
worker.tomcat2.port=7009
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor=1
worker.controller.type=lb
worker.controller.balance_workers=tomcat1,tomcat2 #指定分担请求的tomcat
worker.controller.sticky_session=false
配置了两个tomcat节点,节点名称分别为tomcat1、tomcat2,对应tomcat陪住中的jvmRoute。
sticky_session设置注意点,未验证
引用
worker.controller.sticky_session,设置为1或true使用粘着session,设置为0或false不使用粘着session。如果sticky_session设为true时,建议sticky_session_force设为false,此参数表明如果集群中某台服务器在多次请求没有响应后,将转发当前的请求到其它服务器上处理;sticky_session=false时,影响比较大,会导致转发到其它服务器上的请求,找不到原来的session,所以如果此时请求中有读取session中某些信息的话,就会导致应用的null异常。sticky_session、sticky_session_force的默认值分别为true,false。
sticky_session sticky_session_force 含义
true false SESSION会复制,有粘性
true true SESSION不复制,有粘性
false false SESSION会复制,无粘性
false true SESSION会复制,无粘性
原文地址:
http://www.linuxidc.com/Linux/2012-02/53270.htm
jeesite使用shiro,自定义sessionid,因此不依赖tomcat的session同步机制,只需要开启负载功能即可,即web.xml中不需要添加<distributable/>
分布式环境下需要实现session共享,jeesite自身提供ecache共享方案,切换ehcache-local为ehcache-rmi,只需要更改配置文件jeesite.properties中参数ehcache.configFile的路径为cache/ehcache-rmi.xml
ecache集群同步方案有Terracotta、RMI、JMS、JGroups、EhCache Server,本文中使用RMI,实际生产环境下可以使用EhCache Server搭建独立的缓存服务器
在实际测试时,每次切换节点shiro自定义的sessionid都会变好,花费了我很多时间,快奔溃了,各种查资料、看shiro源码。也猜测过可能是cache同步的问题,简单做了下测试,发现有进行同步。又去查其它的问题,走了很多弯路,最后发现还是cache的问题。jeesite下默认的ehcache-rmi.xml配置是需要进行调整的,activeSessionCache监听工厂的参数replicateAsynchronously=true、replicateUpdatesViaCopy=false需要调整,调整replicateAsynchronously=false、replicateUpdatesViaCopy=true,或者replicateUpdatesViaCopy=true、asynchronousReplicationIntervalMillis=200。原因在于cache节点间异步复制有时间间隔,切换节点时可能复制未完成。因此,应根据cache实际应用场景采用同步复制或者异步复制,异步复制时应注意间隔时间。
但在实际测试时,不关是同步,还是调整复制间隔时间,都存在登录瞬间切换节点获取不到cache的情况。但是使用nginx没有问题,没发现与apache的差异在哪里。当然,现在nginx用的比较多,ehcache也有更好的替换方案
深入探讨在集群环境中使用 EhCache 缓存系统
引用
一个项目两个web模块会导致shiro的session污染
引用
Shiro用ehcache缓存session,关于JSESSIONID失效报错问题
引用
Tomcat集群配置
引用
分享到:
相关推荐
负载均衡apache负载均衡apache负载均衡apache负载均衡apache负载均衡apache负载均衡apache负载均衡apache负载均衡apache负载均衡apache
Apache从软件上低投入实现访问请求分流,提高访问性能, 负载均衡就是把所有用户的访问压力分散到多台服务器上, 也可以分散到多个tomcat里
通过Apache的反向代理实现负载均衡,内有相应的安装包、操作文档(配详细图文)、配置文件、测试页面,应有尽有!
apache2.2.4 负载均衡.txtapache2.2.4 负载均衡.txtapache2.2.4 负载均衡.txt随着访问量的不断提高,以及对响应速度的要求,进行负载均衡设置就显得非常必要了。公司的系统在最初设计的时候就已经考虑到了负载均衡的...
反向代理负载均衡 Apache + Tomcat集群 多的我也不多说了 看文档
apache服务器负载均衡方案
Apache Tomcat 负载均衡配置说明
使用Apache Http Server作为负载均衡的详细配置方法,手册中详细记录了其作为反向代理服务器代理后端2台Web Server的过程。
Apache+tomcat负载均衡配置详解工具及文档
轻松实现Apache,Tomcat集群和负载均衡 轻松实现 Apache,Tomcat 集群和负载均衡 ...so 第一部分: 第一部分:负载均衡 负载均衡,就是 apache 将客户请求均衡的分给 tomcat1,tomcat2....去处理
Apache,Tomcat集群和负载均衡包括了apache-tomcat-5.5.29.zip,apache_2.2.4-win32-x86-no_ssl.msi,mod_jk-1.2.28-httpd-2.2.3.so,ApacheTomcat整合文档.doc,Apache,Tomcat集群和负载均衡教程.doc,Tomcat负载...
Nginx+Apache负载均衡
apachetomcat负载均衡整合文档
这是有关于如何实现Apache2.2和Tomcat7集成负载均衡的技术,需要学习的可以拿下来。
apache和weblogic共同配置负载均衡的详细步骤
apache+tomcat负载均衡apache+tomcat负载均衡apache+tomcat负载均衡apache+tomcat负载均衡
Weblogic的负载均衡可以通过软件和硬件的方式实现。硬件可以使用F5等设备,软件一般使用apache来实现。下面说明使用apache的具体方法。 Weblogic的负载均衡可以通过软件和硬件的方式实现。硬件可以使用F5等设备,...
配置安装Apache+Apache Tomcat实现tomcat负载均衡教程.doc
Apache+Jboss负载均衡加域名转发