windows实现apache+tomcat集群+session共享
程序员文章站
2022-06-07 10:54:13
...
好消息,百度网盘专业搜索网站上线了
打开瞧一瞧:http://bitar.cn
使用tomcat内置的复制模式
DeltaManager实现all-to-all复制模式,BackupManager备份模式
适合小量集群,大量集群用primary-secondary将session备份模式一台
打开瞧一瞧:http://bitar.cn
使用tomcat内置的复制模式
DeltaManager实现all-to-all复制模式,BackupManager备份模式
适合小量集群,大量集群用primary-secondary将session备份模式一台
【集群后,session共享的处理】 session复制(session replication)机制将session发到其他所有结点上, 用户数量和集群数量导致性能瓶颈 参考资料:http://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.html 步骤:1)session对象都序列化 2)开启<Cluster 并有ReplicationValve 3)一台机器tomcat端口问题 4)web.xml添加<distributable/> 5)如果使用 mod_jk保证jvmRoute不同值 6)时间同步 ntp 7)配置apache sticky session mode 说明:DeltaManager实现all-to-all复制模式,BackupManager备份模式 适合小量集群,大量集群用primary-secondary将session备份模式一台 -----详细步骤-------- 1、配置完集群 2、Engine和Cluster配置如下, 注意:228.0.0.4固定的广播地址 Receiver port应该避免冲突 <Engine name="Catalina" //用于设置容器级别 <Engine name="Standalone" //用于集群和负载 <Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1"> <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6"> <Manager className="org.apache.catalina.ha.session.BackupManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true" mapSendOptions="6"/> <!-- <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="5001" selectorTimeout="100" 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"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/> </Channel> <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt"/> <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> </Cluster> 3、项目中web.xml 在display-name之后添加 <distributable/> 示该应用需要进行Session复制 4、启动tomcat和apache 有如下日志 Done sleeping, membership established, start level:8 Member[org.apache.catalina.tribes.membership.MemberImpl[tcp://{192, 168, 116, 1}:5001,{192, 168, 116, 1},5001, alive=229282, securePort=-1, UDP Port=-1, id={-43 -91 -15 8 -126 21 71 99 -119 -11 5 -66 -100 -96 -84 117 }, payload={}, command={}, domain={}, ]] disappeared. Related map entries will be relocated to the new node. 5、效果 //设定 服务器1+session.id 访问apache 打印:服务器1 sessionid tomcat1 关闭tomcat1,继续访问 打印 服务器2 sessionid tomcat1 总结:tomcat集群复制方式 用原sessionid+jvmroute 多台session复制一样 所以jvmroute不变 如果用memcached-session-manager 方式 sesionid+缓存节点+jvmroute
推荐阅读
-
spring boot整合redis实现shiro的分布式session共享的方法
-
SpringBoot2.x+Redis+nginx实现session共享和负载均衡
-
采用memcache在web集群中实现session的同步会话
-
Linux中如何挂载windows共享文件以实现文件传输
-
PHP实现cookie跨域session共享的方法分析
-
web服务器集群(多台web服务器)session同步、共享的3种解决方法
-
PHP实现分布式memcache设置web集群session同步的方法
-
SpringBoot开发案例之分布式集群共享Session
-
nginx+redis实现session共享
-
php实现session共享的实例方法