按照上次的例子我们搭建了Liferay 下的集群之后,为了检验fail-over 容错性,我们去看下服务器的日志:

假定有以下配置:

node1配置的Group内的receiver 端口是5000(这里的receiver是相对其他集群节点同步session的接受者,因为集群内任何一个节点的session都会被多播出去)

 

  1. <Channel className="org.apache.catalina.tribes.group.GroupChannel"> 
  2.     <Membership className="org.apache.catalina.tribes.membership.McastService" 
  3.     address="228.0.0.4" 
  4.     port="45564" 
  5.     frequency="500" 
  6.     dropTime="3000"/> 
  7.     <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" 
  8.       address="auto" 
  9.     port="5000" 
  10.     selectorTimeout="100" 
  11.     maxThreads="6"/> 

而node2配置的Group内的receiver端口是5001

 

  1. <Channel className="org.apache.catalina.tribes.group.GroupChannel"> 
  2.     <Membership className="org.apache.catalina.tribes.membership.McastService" 
  3.     address="228.0.0.4" 
  4.     port="45564" 
  5.     frequency="500" 
  6.     dropTime="3000"/> 
  7.     <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" 
  8.       address="auto" 
  9.     port="5001" 
  10.     selectorTimeout="100" 
  11.     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.