GNU/Linux >> Tutoriales Linux >  >> Linux

Usando mod_cluster en Apache

El módulo de Apache recientemente descubierto mod_cluster parece ofrecer muchas ventajas en comparación con mod_jk que podría usarse en el nuevo entorno Apache/Jboss.

Se enumeran las siguientes funciones:
– Configuración dinámica de trabajadores httpd
– Cálculo del factor de equilibrio de carga del lado del servidor
– Control detallado del ciclo de vida de la aplicación web
– AJP es opcional
– Compatible con JBoss 4.2.x en adelante

Otros enlaces útiles:
http://www.jboss.org/mod_cluster
http://anonsvn.jboss.org/repos/mod_cluster/tags/release/
http://docs.jboss.org /mod_cluster/1.2.0/html/

Las instrucciones de puesta en marcha se encuentran en:
http://docs.jboss.org/mod_cluster/1.2.0/html/Quick_Start_Guide.html#d0e357

Entorno de PRUEBA:
Lista de componentes de un entorno de prueba:
1 VM con Apache recién compilado y mod_cluster
2 VM con aplicación JBoss idéntica

Se crearon tres máquinas virtuales de la siguiente manera:
Hostname Function IP HTTP-Port AJP-Port
testweb APACHE 192.168.100.1 80 n/a
backend1 JVM1 192.168.100.2 6003 6001
backend2 JVM2 192.168.100.3 6003 6001

Pruebas manuales de acceso directo a backends:
http://backend1.mydomain.srv:6003/sysnode/
http://backend2.mydomain.srv:6003/sysnode/

Cree un nuevo vhost de Apache de la siguiente manera:
########################
# Relevant part of httpd.conf
#######################
# Extra modules needed for mod_cluster
LoadModule proxy_cluster_module modules/mod_proxy_cluster.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule slotmem_module modules/mod_slotmem.so
LoadModule manager_module modules/mod_manager.so
LoadModule advertise_module modules/mod_advertise.so

Agregar al contenido de /etc/hosts
192.168.100.1 vhost-01
Contenido de vhosts.conf
LogLevel debug
Listen vhost-01:80
NameVirtualHost vhost-01:80
#
#------------ Directives for mod_cluster only---------------
<ifmodule proxy_cluster_module>
# Displays the first 100 sessions IDs in manager interface
# Turn on the session ID display of 100 in the mod_cluster-manager page
MaxsessionId 10000
CreateBalancers 2
MaxContext 10000
</ifmodule>
#
# ------ Build the MCPM Connector and advertize connector on Web server
<ifmodule manager_module>
Listen vhost-01:8081
<Virtualhost vhost-01:8081>
# MCPM configuration
KeepAliveTimeout 60
MaxKeepAliveRequests 0
EnableMCPMReceive
#
CustomLog /www/http_logs/MCPM_connector_acc.log j_common
ErrorLog /www/http_logs/MCPM_connector_err.log
</virtualhost>
</ifmodule>
#
#---------- Managemant console interface ----------------------
<ifmodule manager_module>
Listen vhost-01:8000
<Virtualhost vhost-01:8000>
# mod_cluster Manager interface
<Location /mcm>
SetHandler mod_cluster-manager
Order deny,allow
Deny from all
Allow from env=IP_ALLOWED
# Displays verbose extra info about the mod_cluster config
AllowDisplay On
</Location>
CustomLog /www/http_logs/cluster_manager_acc.log j_common
ErrorLog /www/http_logs/cluster_manager_err.log
</virtualhost>
</ifmodule>
#
# --------------------- CLIENT Virtual Host 1----------------------------
#
# http://test1.mydomain.srv
<Virtualhost vhost-01:80>
ServerName test1.mydomain.srv
DocumentRoot /www/htdocs1
#
#------------ Directives for mod_cluster ---------------
<ifmodule proxy_cluster_module>
ProxyRequests Off
UseCanonicalName On
ProxyPreserveHost On
# Allowing all proxy requests
<proxy balancer://jboss.web1>
AddDefaultCharset off
Order deny,allow
Allow from All
</proxy>
ProxyPass / balancer://jboss.web1/ stickysession=JSESSIONID|jsessionid nofailover=On
ProxyPassReverse / balancer://jboss.web1/
</ifmodule>
#
CustomLog /www/http_logs/test1.mydomain.srv_acc.log j_common
ErrorLog /www/http_logs/test1.mydomain.srv_err.log
</virtualhost>
#
# --------------------- CLIENT Virtual Host 2----------------------------
# http://test2.mydomain.srv
<virtualhost vhost-01:80>
ServerName test2.mydomain.srv
DocumentRoot /www/htdocs2
#
#------------ Directives for mod_cluster ---------------
<ifmodule proxy_cluster_module>
ProxyRequests Off
UseCanonicalName On
ProxyPreserveHost On
# Allowing all proxy requests
<proxy balancer://jboss.web2>
AddDefaultCharset off
Order deny,allow
Allow from All
</proxy>
ProxyPass / balancer://jboss.web2/ stickysession=JSESSIONID|jsessionid nofailover=On
ProxyPassReverse / balancer://jboss.web2/
</ifmodule>
#
CustomLog /www/http_logs/test2.mydomain.srv_acc.log j_common
ErrorLog /www/http_logs/test2.mydomain.srv_err.log
</virtualhost>

El mod-cluster ahora ha sido probado con las siguientes condiciones:
– Cuando una aplicación termina de iniciarse, tarda entre 3 y 5 segundos antes de que Apache haya registrado la APLICACIÓN
– El Las solicitudes enviadas a Apache se equilibraron bien entre las aplicaciones registradas y se enviaron al cliente de aplicaciones asignadas por vhost.

Actualización en vivo de servidores de aplicaciones back-end:
Registre las 4 aplicaciones en el mismo clúster y pruebe el rendimiento del registro de aplicaciones nuevas y la cancelación del registro de aplicaciones en ejecución.

Método sugerido para realizar una actualización de la aplicación.
– Inicie las nuevas aplicaciones y espere hasta que todas estén funcionando correctamente.
– Las nuevas solicitudes se dirigirán a las aplicaciones antiguas y nuevas.
– Deshabilite correctamente las aplicaciones antiguas desde la administración consola. Esto evitará que las solicitudes nuevas vayan a las aplicaciones antiguas.
– Desde este punto, todas las solicitudes nuevas solo se enviarán a las aplicaciones nuevas.
– Luego, la cantidad de conexiones aún abiertas a las aplicaciones antiguas aumentará dinámicamente se muestra hasta que las aplicaciones antiguas no reciben ninguna solicitud nueva.
– Cuando estos números para todas las aplicaciones antiguas se reducen a '0', entonces puede eliminar las aplicaciones antiguas.

NOTA 1:
Durante la prueba, tuvimos problemas para redirigir el antiguo SSID a los nuevos nodos cuando el antiguo nodo que servía al SSID ya no estaba disponible.
Mod_cluster estaba creando un error de "Servicio no disponible".

Para corregir esto, se han establecido las siguientes propiedades de JBOSS (postSetEnv.sh):
export JAVA_OPTS="${JAVA_OPTS} -Djboss.mod_cluster.stickySessionRemove=true"
export JAVA_OPTS="${JAVA_OPTS} -Djboss.mod_cluster.stickySessionForce=false"

Aquí está el conjunto completo de propiedades relacionadas con mod_cluster:
export JAVA_OPTS="${JAVA_OPTS} -Djboss.mod_cluster.balancer=jboss.web1"
(value here has to be modified to a node name variable)
export JAVA_OPTS="${JAVA_OPTS} -Djboss.mod_cluster.proxyList=192.168.100.1:8081"
(values to be set to the proper web server's internal LAN IP)

VALORES FIJOS
export JAVA_OPTS="${JAVA_OPTS} -Djboss.mod_cluster.enable=true"
export JAVA_OPTS="${JAVA_OPTS} -Djboss.mod_cluster.advertise=false"
export JAVA_OPTS="${JAVA_OPTS} -Djboss.mod_cluster.excludedContexts="
export JAVA_OPTS="${JAVA_OPTS} -Djboss.mod_cluster.stickySessionRemove=true"
export JAVA_OPTS="${JAVA_OPTS} -Djboss.mod_cluster.stickySessionForce=false"


Linux
  1. Uso de HTTPS como servidor proxy en Apache 2.4

  2. ¿Cómo redirigir http a https usando .htaccess?

  3. Cómo agregar encabezados http usando Plesk

  4. Usando WGET para ejecutar un cronjob PHP

  5. realizando solicitudes HTTP con cURL (usando PROXY)

Cómo bloquear XML-RPC en WordPress usando Nginx/Apache

Cómo habilitar la compatibilidad con HTTP/2.0 en Apache

Cómo configurar WebDAV usando Apache en CentOS 7

Cómo habilitar HTTP/2 en Apache en Ubuntu

¿Cómo actualizar Apache usando EasyApache?

Cómo habilitar HTTP/2 con Apache en Ubuntu