Seleccionar página

Pérdida de la sticky session con Apache, mod_cluster y 2 servidores JBoss EAP

por | Mar 18, 2014 | JBoss AS / JBoss EAP / WildFly

En un cliente, teníamos la siguiente arquitectura Java EE montada sobre CentOS 6.5 en la que el servidor Apache redirecciona a través de mod_cluster a uno de los dos servidores JBoss EAP, montados en en modo domain y con soporte para Sticky Session :

  • 1 Apache y el módulo mod_cluster (apache1 con la IP 10.0.3.105).
  • 1 JBoss EAP 6 como controlador del domain (jboss1 con la IP 10.0.3.106).
  • 1 JBoss EAP 6 como host del domain (jboss2 con la IP 10.0.3.107).

 

En el servidor JBoss dónde Apache ha redirigido la llamada, se mantiene la vinculación al servidor asignado gracias a la Sticky Session pero aparecen en los logs (server.log) el siguiente warning :

23:57:57,825 WARN [org.jgroups.protocols.TP$ProtocolAdapter] (Incoming-11,shared=udp) dropping unicast message to wrong destination host2:invoice-server-one/web; my local_addr is host1:invoice-server-one/web

De forma aleatoria, la vinculación al servidor se pierde y la aplicación lanza al usuario a la página de inicio saltando al otro servidor JBoss (es decir, que pierde la Sticky Session).

En el servidor JBoss 1, teníamos la siguiente configuración en el fichero $JBOSS_HOME/configuration/host.xml :

  <domain-controller>
    <local/>
  </domain-controller>

  <interfaces>
    <interface name="management">
      <inet-address value="${jboss.bind.address.management:10.0.3.106}"/>
    </interface>
    <interface name="public">

<any-address/>

    </interface>
    <interface name="unsecure">
      <inet-address value="${jboss.bind.address.unsecure:10.0.3.106}"/>
    </interface>
  </interfaces>

… y tenemos que cambiar any-address (no funciona con JBoss en HA):

  <domain-controller>
    <local/>
  </domain-controller>

  <interfaces>
    <interface name="management">
      <inet-address value="${jboss.bind.address.management:10.0.3.106}"/>
    </interface>
    <interface name="public">

<inet-address value=»${jboss.bind.address:10.0.3.106}»/>

    </interface>
    <interface name="unsecure">
      <inet-address value="${jboss.bind.address.unsecure:10.0.3.106}"/>
    </interface>
  </interfaces>

En el servidor JBoss 2, también teníamos la siguiente configuración en $JBOSS_HOME/domain/configuration/host.xml :

  <domain-controller>
    <remote host="${jboss.domain.master.address:10.0.3.106}" port="${jboss.domain.master.port:9999}" security-realm="ManagementRealm"/>
  </domain-controller>

  <interfaces>
    <interface name="management">
      <inet-address value="${jboss.bind.address.management:10.0.3.107}"/>
    </interface>
    <interface name="public">

<any-address/>

    </interface>
    <interface name="unsecure">
      <inet-address value="${jboss.bind.address.unsecure:10.0.3.107}"/>
    </interface>
  </interfaces>

… por lo que se cambió a lo siguiente (creo que no es necesario puesto que consulta los ficheros del servidor controlador) :

  <domain-controller>
    <remote host="${jboss.domain.master.address:10.0.3.106}" port="${jboss.domain.master.port:9999}" security-realm="ManagementRealm"/>
  </domain-controller>

  <interfaces>
    <interface name="management">
      <inet-address value="${jboss.bind.address.management:10.0.3.107}"/>
    </interface>
    <interface name="public">

<inet-address value=»${jboss.bind.address:10.0.3.107}»/>

    </interface>
    <interface name="unsecure">
      <inet-address value="${jboss.bind.address.unsecure:10.0.3.107}"/>
    </interface>
  </interfaces>

 

La configuración de JBoss escuchando en todas las interfaces (<any-address/>) no funciona con el modo HA por lo que al eliminarlo, dejó de aparecer el error indicado y ya no se perdió la sesión del usuario.

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Blog de Neodoo Microsystems
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles. Puedes encontrar más información en nuestra Política de privacidad y Política de cookies.