Liferay 集群 (fail-over)
按照上次的例子我们搭建了Liferay 下的集群之后,为了检验fail-over 容错性,我们去看下服务器的日志:
假定有以下配置:
node1配置的Group内的receiver 端口是5000(这里的receiver是相对其他集群节点同步session的接受者,因为集群内任何一个节点的session都会被多播出去)
- <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="5000"
- selectorTimeout="100"
- maxThreads="6"/>
而node2配置的Group内的receiver端口是5001
- <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"/>
所以,在启动node1的日志里面,可以清楚看到在启动Cluster集群过程中,它acccept了一个套接字在端口5000上
并且它的membership列表中有另外的集群节点node2 (5001接收端口)
同样,对比node2的日志,我们可以看到,在node2的启动过程中,也成功的将自己打开套接字于5001端口并且成员(membership)里面有node1 (5000端口)
这时候,如果我们将node1 shutdown 掉,那么node2就会探测到这个时间,因为heartbeat无法连到了node1,于是,它会去verify是否node1是否真的挂了:
最后校验完毕,node1 真的挂了 ,于是在我们双机集群的环境中,node2将自动配合apache 服务器,来接管所有本来和node1 有关的session.
本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/843374,如需转载请自行联系原作者