Le module Apache nouvellement découvert mod_cluster semble offrir de nombreux avantages par rapport à mod_jk qui pourrait être utilisé dans le nouvel environnement Apache/Jboss.
 Les fonctionnalités suivantes sont répertoriées :
– Configuration dynamique des travailleurs httpd
– Calcul du facteur d'équilibrage de charge côté serveur
– Contrôle précis du cycle de vie des applications Web
– AJP est facultatif
 />– Compatible à partir de JBoss 4.2.x
 Autres liens utiles : 
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/
 Les instructions de démarrage se trouvent à : 
http://docs.jboss.org/mod_cluster/1.2.0/html/Quick_Start_Guide.html#d0e357
 Environnement de test : 
Liste des composants d'un environnement de test :
1 VM avec Apache et mod_cluster nouvellement compilés
2 VM avec une application JBoss identique
 Créé trois VM comme suit : 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 manuel de l'accès direct aux backends : 
http://backend1.mondomaine.srv:6003/sysnode/
http://backend2.mondomaine.srv:6003/sysnode/
 Créez un nouvel hôte virtuel Apache comme suit : ######################## 
# 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
Ajout au contenu de /etc/hosts 192.168.100.1 vhost-01 
Contenu 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>
Le mod-cluster a maintenant été testé avec les conditions suivantes :
– Lorsqu'une application a fini de démarrer, il faut environ 3 à 5 secondes avant qu'Apache n'enregistre l'APP
– Le les requêtes envoyées à Apache étaient alors bien équilibrées entre les applications enregistrées et envoyées au client d'applications vhost.
 Mise à niveau en direct d'un serveur d'application principal : 
Enregistrez les 4 APP sur le même cluster et testez les performances de l'enregistrement des nouvelles APP et de la désinscription des APP en cours d'exécution.
 Méthode suggérée pour effectuer une mise à niveau de l'APP. 
– Démarrez les nouvelles applications et attendez qu'elles soient toutes opérationnelles.
– Les nouvelles demandes seront dirigées vers les anciennes et les nouvelles applications.
– Désactivez les anciennes applications avec élégance depuis la gestion console. Cela empêchera les nouvelles requêtes d'être envoyées aux anciennes applications.
– À partir de ce moment, toutes les nouvelles requêtes ne seront envoyées qu'aux nouvelles applications.
– Ensuite, le nombre de connexions encore ouvertes vers les anciennes applications augmentera dynamiquement affiché jusqu'à ce que les anciennes applications ne reçoivent plus de nouvelles demandes.
– Lorsque ces chiffres pour toutes les anciennes applications sont réduits à '0', vous pouvez supprimer les anciennes applications.
 REMARQUE 1 : 
Pendant le test, nous avons eu des problèmes pour rediriger l'ancien SSID vers de nouveaux nœuds lorsque l'ancien nœud servant le SSID n'était plus disponible.
Le mod_cluster créait une erreur "Service indisponible".
 Pour résoudre ce problème, les propriétés JBOSS suivantes (postSetEnv.sh) ont été définies :export JAVA_OPTS="${JAVA_OPTS} -Djboss.mod_cluster.stickySessionRemove=true" 
export JAVA_OPTS="${JAVA_OPTS} -Djboss.mod_cluster.stickySessionForce=false"
Voici l'ensemble complet des propriétés liées à 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)
VALEURS FIXES 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"