apache jboss load-balancing mod-cluster

Clúster de equilibrio de carga no funciona con Apache HTTP Server 2.4.6 y JBoss EAP 7



load-balancing mod-cluster (1)

Estoy certificando mi aplicación en JBoss EAP 7. Mi aplicación funciona en modo independiente, pero en modo de clúster, mi aplicación se implementa pero no puedo iniciar sesión. Nuevamente, soy redirigido a la URL de inicio de sesión.
Tengo el clúster de configuración usando mod_cluster.

No hay registro de errores en los registros del servidor Load Balancer ni en los nodos individuales del clúster.
En mi entorno de prueba, mi equilibrador de carga y 2 nodos de servidor están en la misma máquina. He dado a los nodos JBoss diferentes puertos e identificadores de instancia para diferenciar los nodos.
Estoy compartiendo mis extractos mod_cluster.conf y JBoss standalone-ha.xml de uno de los nodos en el clúster. Gracias por adelantado..
No rechace la pregunta, envíe sugerencias en los comentarios para reformular la pregunta.

Los siguientes son los fragmentos en el archivo standalone-ha.xml:

La configuración de Modcluster es:

<subsystem xmlns="urn:jboss:domain:modcluster:2.0"> <mod-cluster-config advertise-socket="modcluster" proxies="proxy1" balancer="testcluster" advertise="true" connector="ajp"> <dynamic-load-provider> <load-metric type="busyness"/> </dynamic-load-provider> </mod-cluster-config> </subsystem>

Las configuraciones de resaca son:

<subsystem xmlns="urn:jboss:domain:undertow:3.1" instance-id="node1"> <buffer-cache name="default"/> <server name="default-server"> <ajp-listener name="ajp" socket-binding="ajp"/> <http-listener name="default" socket-binding="http" redirect-socket="https"/> <host name="default-host" alias="localhost"> <location name="/" handler="welcome-content"/> <filter-ref name="server-header"/> <filter-ref name="x-powered-by-header"/> </host> </server> <servlet-container name="default"> <jsp-config/> <websockets/> </servlet-container> <handlers> <file name="welcome-content" path="${jboss.home.dir}/welcome-content"/> </handlers> <filters> <response-header name="server-header" header-name="Server" header-value="JBoss-EAP/7"/> <response-header name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/> </filters> </subsystem>

Los contenidos de Socket Binding Group son:

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}"> <socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/> <socket-binding name="management-https" interface="management" port="${jboss.management.https.port:9993}"/> <socket-binding name="ajp" port="${jboss.ajp.port:8009}"/> <socket-binding name="http" port="${jboss.http.port:8080}"/> <socket-binding name="https" port="${jboss.https.port:8443}"/> <socket-binding name="jgroups-mping" interface="private" port="0" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45700"/> <socket-binding name="jgroups-tcp" interface="private" port="7600"/> <socket-binding name="jgroups-tcp-fd" interface="private" port="57600"/> <socket-binding name="jgroups-udp" interface="private" port="55200" multicast-address="${jboss.default.multicast.address:230.0.0.4}" multicast-port="45688"/> <socket-binding name="jgroups-udp-fd" interface="private" port="54200"/> <socket-binding name="modcluster" port="0" multicast-address="224.0.1.105" multicast-port="23364"/> <socket-binding name="txn-recovery-environment" port="4712"/> <socket-binding name="txn-status-manager" port="4713"/> <outbound-socket-binding name="mail-smtp"> <remote-destination host="localhost" port="25"/> </outbound-socket-binding> <outbound-socket-binding name="proxy1"> <!-- host and port number of the load-balancer. --> <remote-destination host="x.x.x.x" port="81"/> </outbound-socket-binding> </socket-binding-group>

El contenido de mod_cluster.conf es el siguiente:

LoadModule proxy_cluster_module modules/mod_proxy_cluster.so LoadModule cluster_slotmem_module modules/mod_cluster_slotmem.so LoadModule manager_module modules/mod_manager.so LoadModule advertise_module modules/mod_advertise.so MemManagerFile "//httpd2.4.6Home/var/cache/mod_cluster" <IfModule manager_module> Listen 81 <VirtualHost *:81> <Directory /> Require all granted </Directory> <Location /> Require all granted </Location> <Location /mod_cluster_manager> SetHandler mod_cluster-manager Require all granted </Location> KeepAliveTimeout 60 MaxKeepAliveRequests 0 ManagerBalancerName testcluster AdvertiseFrequency 5 ServerAdvertise on EnableMCPMReceive </VirtualHost> </IfModule>


Básicamente tiene dos opciones: crear un clúster utilizando el modo de domain propio de JBoss o extender su configuración independiente para contener los elementos necesarios para la replicación de sesión y sso.

En el modo de dominio, la mayoría de las configuraciones ya están presentes en EAP7, solo extienda el perfil de domain-full-ha .

Los cambios necesarios incluyen habilitar la marca distributable en su aplicación web web.xml , simplemente agregue <distributable/> a su web.xml. A continuación, agregue el inicio de sesión único en su sistema de resaca:

<host name="default-host" alias="localhost"> <location name="/" handler="welcome-content"/> <filter-ref name="server-header"/> <filter-ref name="x-powered-by-header"/> <single-sign-on/> <!-- FIXME: enable SSO here --> </host>

Y habilite el contenedor de caché requerido para que funcione el SSO agrupado; esto requiere el subsistema Infinishpan, que ahora podría tener, si solo extendió el perfil standalone-ha . Si no ve el subsistema Infinispan, eche un vistazo a los perfiles standalone-full-ha . Si aún no lo tiene, agregue caché web :

/subsystem=infinispan/cache-container=web/distributed-cache=concurrent:add /subsystem=infinispan/cache-container=web/distributed-cache=concurrent/store=file:add

Nuevamente, si usa un perfil completo de ha, ya sea en modo independiente o de dominio, probablemente ya los tenga.

Tampoco menciona si utiliza el dominio de seguridad JBoss para autorización o no. En caso de que use algún mecanismo de autenticación personalizado, asegúrese de configurar la cookie de sesión o los tokens correctamente, para el dominio y el contexto correctos, etc.