TL; DR - O nome do nó no sessionId não está sendo atualizado para o nome do nó atual no backup quando o principal fica inativo.
Versão do Tomcat - apache-tomcat-7.0.50
Eu tenho dois nós (2 instâncias do meu aplicativo em 2 tomcats separados) configurados, com a configuração de replicação de sessão (também usa sessão fixa) .Below é a configuração do cluster de server.xml, que está dentro da tag Engine. É semelhante em ambos os nós, exceto os números de porta:
<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="4050"
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"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>\
</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"/>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
No tomcat Manager, vejo que a sessão (Ex: D042A0C5E380EB9E500224C87233119C.myNode1) está sendo criada no nó primário no login e replicada corretamente no backup.
Mas, assim que o nó principal fica inativo, estou esperando que o sessionId no nó de backup seja atualizado com o nome do nó atual, por exemplo: D042A0C5E380EB9E500224C87233119C.myNode2
Exemplo:
Quando o usuário faz login:
Node 1 - Primary - jsessionIdSample.node1
Node 2 - Backup - jsessionIdSample.node1
Quando um nó 1 desce (esperado) :
Node 1 - - jsessionIdSample.node1 (NODE GOES DOWN)
Node 2 - Primary - jsessionIdSample.node2
Mas o que está acontecendo:
Node 1 - - jsessionIdSample.node1 (NODE DOWN)
Node 2 - Backup - jsessionIdSample.node1
Eu tenho duas perguntas:
1) O meu entendimento é que o sessionID deve ser atualizado no backup logo após o nó primário cair corretamente? Eu li os documentos do Tomcat, e parece que deveria.
2) Se puder, você pode me ajudar com a configuração para fazer isso funcionar?
Eu tentei soluções de outras perguntas sobre SO, mas nenhuma delas parece funcionar.
Obrigado antecipadamente!