还是要先说明下: 以下内容,为总结归整,以及给自己留个笔记!
负载均衡集群
这里使用apache+tomcat负载均衡集群
这里也简单的写下他们的配置,方式很多,写下我项目中的配置;有问题可以一起交流!
apache配置!
KeepAlive on
KeepAliveTimeout 3 这个算一个优化配置吧!详情了解可以参考这篇文章
ProxyRequests Off
<Proxy balancer://myCluster>
BalancerMember http://localhost:8080/test loadfactor=2 route=tomcat8
BalancerMember http://localhost:9080/test loadfactor=1 route=tomcat81
</Proxy>
<VirtualHost *:80>
ServerName 192.168.1.35
<!--其他配置可以参考apache官网-->
ProxyPass / balancer://myCluster/ stickysession=JSESSIONID|jsessionid nofailover=On
ProxyPassReverse / balancer://myCluster/
ProxyPassReverseCookiePath /sufulo /
</VirtualHost>
tomcat配置其他就不多说,这是需要增加的
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="8">
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4001"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=""/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<!-- tocmat8是没有这个属性的 <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>-->
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
项目中使用到登录,所以存在session辅助和黏贴的问题:
使用的第一个方案是apache自己的,可是问题有点严重,请求频率过高,切换tomcat的时候倒置session改变!找了一会发现这个问题网上资料太少,自己又不是大牛,就放弃了。
想到了另外一种解决方案session共享
第一次本打算使用tomcat8+redis
结果tomcat-redis-session-manager暂时不支持tmcat8的session共享,支持tomcat8一下的!网上资料也很多!就不总结它了。
后来选择memcache来做session共享
应为系统版本centos
先检查是否安装过memcache
memcached -h
然后安装
yum -y install memcached
通过systemctl start/stop/restart memcached.service命令来完成启动、关闭、重启memcached服务
重启服务器!
执行memcached-tool 127.0.0.1:11211 stats
检查是否安装成功
然后就是修改context.xml文件了。
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:127.0.0.1:11211"
sticky="false"
sessionBackupAsync="false"
lockingMode="none"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"/>
配置都OK了,就差最后一步了!导入jar包呗。
我这边已经上传了一份了哈哈需要分才可以下载《<->》可以提供下地址
那个如果不嫌麻烦我截图下大家可以自己去找找找。