3.2.8. Changements au clustering
3.2.8.1. Changements à votre application pour le clustering
Démarrez JBoss EAP 6 avec le clustering activé
Pour activer le clustering dans JBoss EAP 5.x, vous devrez démarrer vos instances de serveur avec le profilall
ou undérivé, comme :$ EAP5_HOME/bin/run.sh -c all
Dans JBoss EAP 6, la méthode d'activation du clustering dépend si les serveurs sont autonomes ou s'ils exécutent dans un domaine géré.Activer le clustering pour les serveurs qui exécutent dans un domaine géré
Pour activer le clustering pour les serveurs déjà démarrés, qui utilisent le contrôleur de domaines, mettez à jour votredomain.xml
et désignez un groupe de serveurs qui utilise le profilha
et un groupe de liaisons de socketsha-sockets
. Par exemple :<server-groups> <server-group name="main-server-group" profile="ha"> <jvm name="default"> <heap size="64m" max-size="512m"/> </jvm> <socket-binding-group ref="ha-sockets"/> </server-group> </server-group>
Activer le clustering pour les serveurs autonomes
Afin d'activer le clustering dans les serveurs autonomes, démarrez le serveur par le fichier de configuration qui convient comme suit :$ EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=UNIQUE_NODE_NAME
Indiquer l'adresse de liaison
Dans JBoss EAP 5.x, vous devez normalement indiquer l'adresse de liaison utilisée pour le clustering avec l'argument de ligne de commande-b
comme suit :$ EAP5_HOME/bin/run.sh -c all -b 192.168.0.2
JBoss EAP 6 relie les sockets aux adresses IP et aux interfaces contenues dans les éléments<interfaces>
des fichiersstandalone.xml
,domain.xml
ethost.xml
. Les configurations standards fournies dans JBoss EAP incluent deux configurations d'interface :<interfaces> <interface name="management"> <inet-address value="${jboss.bind.address.management:127.0.0.1}"/> </interface> <interface name="public"> <inet-address value="${jboss.bind.address:127.0.0.1}"/> </interface> </interfaces>
Ces configurations d'interface utilisent les valeurs des propriétés systèmejboss.bind.address.management
etjboss.bind.address
. Si ces propriétés système ne sont pas définies, la valeur par défaut127.0.0.1
sera utilisée pour chaque valeur.Vous pouvez également spécifier l'adresse de liaison en argument de ligne de commande lorsque vous démarrez le serveur ou vous pouvez la définir explicitement dans le fichier de configuration du serveur JBoss EAP 6.- Spécifier l'argument de liaison en ligne de commande quand vous démarrez le serveur JBoss EAP autonome.L'exemple suivant explique comment indiquer l'adresse de liaison en ligne de commande pour un serveur autonome :
EAP_HOME/bin/standalone.sh -Djboss.bind.address=127.0.0.1
Note
Vous pouvez également faire usage de l'argument-b
, un raccourci de-Djboss.bind.address=127.0.0.1
:EAP_HOME/bin/standalone.sh -b=127.0.0.1
Le format de syntaxe JBoss EAP 5 est également pris en charge :
Notez que l'argumentEAP_HOME/bin/standalone.sh -b 127.0.0.1
-b
ne fait que changer l'interfacepublique
. Il n'affecte pas l'interface demanagement
. - Indiquer l'adresse de liaison dans le fichier de configuration du serveur.Pour les serveurs qui exécutent en domaines gérés, indiquer les adresses de liaison dans le fichier
domain/configuration/host.xml
. Pour les serveurs autonomes, indiquer les adresses de liaison dans le fichierstandalone-ha.xml
.Dans l'exemple suivant, l'interfacepublic
est spécifiée comme interface par défaut pour tous les sockets au sein du groupe de liaison de socketha-sockets
.<interfaces> <interface name="management"> <inet-address value="192.168.0.2"/> </interface> <interface name="public"> <inet-address value="192.168.0.2"/> </interface> </interfaces>
<socket-binding-groups> <socket-binding-group name="ha-sockets" default-interface="public"> <!-- ... --> </socket-binding-group> </socket-binding-groups>
Note
Si vous spécifiez l'adresse de liaison sous forme de valeur codée en dur et non pas sous forme de propriété système de configuration, vous ne pourrez pas remplacer cette valeur codée par un argument en ligne de commande.
Configurer
jvmRoute
pour supporter mod_jk et mod_proxyDans JBoss EAP 5, le serveur webjvmRoute
a été configuré à l'aide d'une propriété dans le fichierserver.xml
. Dans JBoss EAP 6, l'attributjvmRoute
est configuré dans le sous-système web du fichier de configuration de serveur à l'aide de l'attributinstance-id
comme suit :<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false" instance-id="{JVM_ROUTE_SERVER}">
{JVM_ROUTE_SERVER} ci-dessus doit être remplacé par l'ID du serveur jvmRoute.instance-id
peut également être défini par le biais de la console de gestion.Indiquer l'adresse multidiffusion et le port
Dans JBoss EAP 5.x, vous pouvez spécifier l'adresse multidiffusion et le port utilisés pour les communications intra-cluster par les arguments de ligne de commande-u
et-m
, respectivement, comme ceci :$ EAP5_HOME/bin/run.sh -c all -u 228.11.11.11 -m 45688
Dans JBoss EAP 6, vous pouvez spécifier l'adresse multidiffusion et le port utilisés pour la communication entre les cluster par la liaison de socket référencée par la pile de protocoles JGroup qui convient.<subsystem xmlns="urn:jboss:domain:jgroups:1.0" default-stack="udp"> <stack name="udp"> <transport type="UDP" socket-binding="jgroups-udp"/> <!-- ... --> </stack> </subsystem>
<socket-binding-groups> <socket-binding-group name="ha-sockets" default-interface="public"> <!-- ... --> <socket-binding name="jgroups-udp" port="55200" multicast-address="228.11.11.11" multicast-port="45688"/> <!-- ... --> </socket-binding-group> </socket-binding-groups>
Si vous voulez spécifier l'adresse de multidiffusion et le port dans la ligne de commande, vous pouvez définir l'adresse de multidiffusion et les ports comme des propriétés système et ensuite utiliser ces propriétés sur la ligne de commande lorsque vous démarrez le serveur. Dans l'exemple suivant,jboss.mcast.addr
est le nom de la variable pour l'adresse de multidiffusion etjboss.mcast.port
est le nom de la variable pour le port.<socket-binding name="jgroups-udp" port="55200" multicast-address="${jboss.mcast.addr:230.0.0.4}" multicast-port="${jboss.mcast.port:45688}"/>
Vous pouvez alors démarrer votre serveur en utilisant les arguments de ligne de commande suivants :$ EAP_HOME/bin/domain.sh -Djboss.mcast.addr=228.11.11.11 -Djboss.mcast.port=45688
Utiliser une pile de protocoles différente
Dans JBoss EAP 5.x, vous pouviez manipuler la pile de protocoles par défaut utilisée pour tous les services de clustering qui utilisaient la propriété systèmejboss.default.jgroups.stack
.$ EAP5_HOME/bin/run.sh -c all -Djboss.default.jgroups.stack=tcp
Dans JBoss EAP 6, la pile de protocoles par défaut est définie par le sous-système JGroups dansdomain.xml
oustandalone-ha.xml
:<subsystem xmlns="urn:jboss:domain:jgroups:1.0" default-stack="udp"> <stack name="udp"> <!-- ... --> </stack> </subsystem>
Remplacer la réplication de Buddy
JBoss EAP 5.x utilise JBoss Cache Buddy Replication pour supprimer la réplication des données dans toutes les instances d'un cluster.Dans JBoss EAP 6, la réplication de Buddy a été remplacée par le cache distribué d'Infinispan, connu également sous le nom modeDIST
. La distribution est un mode de gestion de clusters puissant qui permet à Infinispan de mettre à échelle en linéaire lorsque un certain nombre de serveurs sont ajoutés au cluster. Voici un exemple sur la façon de configurer le serveur pour utiliser le mode de mise en cache de DIST.- Ouvrir une ligne de commandes et démarrer le serveur avec un Profil HA ou un FUll Profile, comme par exemple :
EAP_HOME/bin/standalone.sh -c standalone-ha.xml
- Ouvrir une nouvelle ligne de commandes et connectez-vous au Management CLI.
- Dans Linux, saisir ce qui suit au niveau de la ligne de commande :
$ EAP_HOME/bin/jboss-cli.sh --connect
- Dans Windows, saisir ce qui suit au niveau de la ligne de commande :
C:\>EAP_HOME\bin\jboss-cli.bat --connect
Vous devriez voir apparaître le résultat suivant :Connected to standalone controller at localhost:9999
- Lancer les commandes suivantes :
/subsystem=infinispan/cache-container=web/:write-attribute(name=default-cache,value=dist) /subsystem=infinispan/cache-container=web/distributed-cache=dist/:write-attribute(name=owners,value=3) :reload
Vous devriez voir la réponse suivante après chaque commande :"outcome" => "success"
Ces commandes modifient l'élémentdist
<distributed-cache>
dans la configurationweb
<cache-container>
du sous-systèmeinfinispan
du fichierstandalone-ha.xml
comme suit :<cache-container name="web" aliases="standard-session-cache" default-cache="dist" module="org.jboss.as.clustering.web.infinispan"> <transport lock-timeout="60000"/> <replicated-cache name="repl" mode="ASYNC" batching="true"> <file-store/> </replicated-cache> <replicated-cache name="sso" mode="SYNC" batching="true"/> <distributed-cache name="dist" owners="3" l1-lifespan="0" mode="ASYNC" batching="true"> <file-store/> </distributed-cache> </cache-container>
Pour plus d'informations, voir le chapitre intitulé Clustering in Web Applications du Development Guide de JBoss EAP 6 qui se situe dans le Portail clients https://access.redhat.com/site/documentation/JBoss_Enterprise_Application_Platform/.