Seleccionar página

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.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies