GNU/Linux >> Linux Esercitazione >  >> Linux

Utilizzo di mod_cluster in Apache

Il modulo Apache recentemente scoperto mod_cluster sembra offrire molti vantaggi rispetto a mod_jk che potrebbe essere utilizzato nel nuovo ambiente Apache/Jboss.

Sono elencate le seguenti funzionalità:
– Configurazione dinamica dei lavoratori httpd
– Calcolo del fattore di bilanciamento del carico lato server
– Controllo granulare del ciclo di vita delle app Web
– AJP è opzionale
/>– Compatibile a partire da JBoss 4.2.x in poi

Altri link utili:
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/

Le istruzioni per l'avvio si trovano all'indirizzo:
http://docs.jboss.org/mod_cluster/1.2.0/html/Quick_Start_Guide.html#d0e357

PROVA Ambiente:
Elenco dei componenti di un ambiente di test:
1 VM con Apache e mod_cluster appena compilati
2 VM con applicazione JBoss identica

Create tre VM come segue:
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

Test manuale dell'accesso diretto ai backend:
http://backend1.mydomain.srv:6003/sysnode/
http://backend2.mydomain.srv:6003/sysnode/

Crea un nuovo vhost Apache come segue:
########################
# 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

Aggiunta al contenuto di /etc/hosts
192.168.100.1 vhost-01
Contenuto di 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>

I mod-cluster sono stati ora testati con le seguenti condizioni:
– Al termine dell'avvio di un'app, sono necessari circa 3-5 secondi prima che Apache registri l'APP
– Il le richieste inviate ad Apache sono state quindi ben bilanciate tra le APP registrate e inviate alle APP assegnate da vhost custer.

Aggiornamento in tempo reale di un server APP di back-end:
Registra tutte e 4 le APP nello stesso cluster e verifica le prestazioni della registrazione di nuove APP e dell'annullamento della registrazione delle APP in esecuzione.

Metodo suggerito per eseguire un aggiornamento dell'APP.
– Avvia le nuove app e attendi che siano tutte attive e funzionanti.
– Le nuove richieste verranno indirizzate alle vecchie e alle nuove app.
– Disabilita le vecchie app dall'interno della gestione consolle. Ciò impedirà alle nuove richieste di andare alle vecchie app.
– Da questo momento tutte le nuove richieste verranno inviate solo alle nuove app.
– Quindi il numero di connessioni ancora aperte alle vecchie app andrà in modo dinamico mostrato fino a quando le vecchie app non ricevono nuove richieste.
– Quando questi numeri per tutte le vecchie app sono scesi a "0", puoi rimuovere le vecchie app.

NOTA 1:
Durante il test abbiamo riscontrato problemi nel reindirizzare il vecchio SSID a nuovi nodi quando il vecchio nodo che serviva l'SSID non era più disponibile.
Il mod_cluster stava creando un errore "Servizio non disponibile".

Per risolvere questo problema sono state impostate le seguenti proprietà JBOSS (postSetEnv.sh):
export JAVA_OPTS="${JAVA_OPTS} -Djboss.mod_cluster.stickySessionRemove=true"
export JAVA_OPTS="${JAVA_OPTS} -Djboss.mod_cluster.stickySessionForce=false"

Ecco il set completo di proprietà relative a 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)

VALORI FISSI
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. Utilizzo di HTTPS come backend proxy in Apache 2.4

  2. Centos – Installa Apache 2.4 su Centos usando Yum?

  3. Come ricompilare Apache usando EasyApache da WHM?

  4. Disabilita la compressione HTTP sui server Apache

  5. eseguire richieste HTTP con cURL (usando PROXY)

Come bloccare XML-RPC in WordPress usando Nginx/Apache

Come abilitare il supporto HTTP/2.0 su Apache

Come configurare WebDAV utilizzando Apache su CentOS 7

Come abilitare HTTP/2 in Apache su Ubuntu

Come aggiornare Apache utilizzando EasyApache?

Come abilitare HTTP/2 con Apache in Ubuntu