17.6.6. Configurer un nœud de worker de mod_cluster
Un noeud de worker de mod_cluster se compose d'un serveur JBoss EAP 6. Ce serveur peut faire partie d'un groupe de serveurs dans un domaine géré ou un serveur autonome. Un processus distinct s'exécute sur JBoss EAP 6, qui gère tous les nœuds de workers du cluster. C'est ce qu'on appelle le master. Pour plus d'informations conceptuelles sur les noeuds, consulter Section 17.2.4, « Types de noeuds ». Pour une vue d'ensemble de l'équilibrage de la charge du serveur web, consulter Section 17.2.3, « Connecteurs HTTP - Aperçu général ».
Configuration d'un nœud de worker
- Un serveur autonome devra démarrer avec le profil
standalone-ha
oustandalone-full-ha
. - Un groupe de serveurs de domaine géré devra utiliser le profil
ha
oufull-ha
, et le groupe de liaisons de socketsha-sockets
oufull-ha-sockets
. JBoss EAP 6 est fourni avec un groupe de serveurs à clusterisation activée, nomméother-server-group
qui remplit ces prérequis.
Note
/profile=full-ha
des commandes.
Procédure 17.10. Configurez un nœud de worker
Configurez les interfaces de réseau
Les interfaces de réseau ont toutes la valeur127.0.0.1
par défaut. Chaque hôte physique, qui accueille un serveur autonome ou bien un ou plusieurs serveurs au sein d'un groupe de serveurs, a besoin d'interfaces configurées pour utiliser son adresse IP, que les autres serveurs peuvent apercevoir.Pour changer l'adresse IP d'un hôte de JBoss EAP 6, vous devrez le fermer et modifier son fichier de configuration directement. C'est parce que l'API de gestion qui actionne la console de gestion et le CLI dépendent d'une adresse de gestion stable.Suivez ces étapes pour changer l'adresse IP sur chaque serveur de votre cluster par votre adresse IP publique de master.- Démarrez le serveur JBoss EAP en utilisant le profil décrit plus haut dans cette section.
- Lancez la Management CLI, avec la commande
EAP_HOME/bin/jboss-cli.sh
dans Linux ou bien la commandeEAP_HOME\bin\jboss-cli.bat
dans le serveur Microsoft Windows. Saisir la commandeconnect
pour connecter le contrôleur de domaine sur l'hôte local, ouconnect IP_ADDRESS
pour vous connecter à un contrôleur de domaines sur un serveur éloigné. - Modifier l'adresse IP externe des interfaces
management
,public
etunsecure
en saisissant les commandes suivantes. Veillez bien à remplacerEXTERNAL_IP_ADDRESS
qui se trouve dans la commande par l'adresse IP externe de l'hôte.
Vous devriez voir le résultat suivant pour chaque commande./interface=management:write-attribute(name=inet-address,value="${jboss.bind.address.management:EXTERNAL_IP_ADDRESS}"
/interface=public:write-attribute(name=inet-address,value="${jboss.bind.address.public:EXTERNAL_IP_ADDRESS}"
/interface=unsecure:write-attribute(name=inet-address,value="${jboss.bind.address.unsecure:EXTERNAL_IP_ADDRESS}"
:reload
"outcome" => "success"
- Pour les hôtes qui participent à un domaine géré, mais qui ne sont pas master, vous devrez modifiez le nom d'hôte du
master
par un nom unique. Ce nom devra être unique (parmi les noms d'esclave) et sera utilisé par l'esclave pour s'authentifier au cluster, donc notez bien le nom que vous utilisez.- Démarrer l'hôte esclave JBoss EAP à l'aide de la syntaxe suivante :
Par exemple :bin/domain.sh --host-config=HOST_SLAVE_XML_FILE_NAME
bin/domain.sh --host-config=host-slave01.xml
- Lancer l'interface CLI.
- Utiliser la syntaxe suivante pour remplacer le nom d'hôte :
Par exemple :/host=master:write-attribute(name="name",value=UNIQUE_HOST_SLAVE_NAME)
Vous devriez voir apparaître le résultat suivant./host=master:write-attribute(name="name",value="host-slave01")
"outcome" => "success"
Cela modifie le XML du fichierhost-slave01.xml
comme suit :<host name="host-slave01" xmlns="urn:jboss:domain:1.6">
- Pour les hôtes nouvellement configurés qui ont besoin de rejoindre un domaine géré, cherchez l'élément
local
et ajoutez l'attributhost
de l'élementremote
qui pointe en direction du contrôleur de domaine. Cette étape ne s'applique pas à un serveur autonome.- Démarrer l'hôte esclave JBoss EAP à l'aide de la syntaxe suivante :
Par exemple :bin/domain.sh --host-config=HOST_SLAVE_XML_FILE_NAME
bin/domain.sh --host-config=host-slave01.xml
- Lancer l'interface CLI.
- Utilisez la syntaxe suivante en spécifiant le contrôleur de domaine :
Par exemple :/host=UNIQUE_HOST_SLAVE_NAME/:write-remote-domain-controller(host=DOMAIN_CONTROLLER_IP_ADDRESS,port=${jboss.domain.master.port:9999},security-realm="ManagementRealm")
Vous devriez voir apparaître le résultat suivant./host=host-slave01/:write-remote-domain-controller(host="192.168.1.200",port=${jboss.domain.master.port:9999},security-realm="ManagementRealm")
"outcome" => "success"
Cela modifie le XML du fichierhost-slave01.xml
comme suit :<domain-controller> <remote host="192.168.1.200" port="${jboss.domain.master.port:9999}" security-realm="ManagementRealm"/> </domain-controller>
Configurez l'authentification pour chaque serveur esclave.
Chaque serveur esclave a besoin d'un nom d'utilisateur et d'un mot de passe créé dans leManagementRealm
du contrôleur de domaine ou du master autonome. Sur le contrôleur de domaine ou sur le master autonome, exécutez la commandeEAP_HOME/bin/add-user.sh
. Ajouter un utilisateur avec le même nom d'utilisateur comme esclave, auManagementRealm
. Quand on vous demandera si cet utilisateur doit s'authentifier auprès d'une instance de JBoss EAP 6 externe, répondezOui
. Vous trouverez un exemple de l'entrée et de la sortie de la commande ci-dessous, pour un esclave appeléslave1
, et un mot de passechangeme
.user:bin user$ ./add-user.sh What type of user do you wish to add? a) Management User (mgmt-users.properties) b) Application User (application-users.properties) (a):
a
Enter the details of the new user to add. Realm (ManagementRealm) : Username :slave1
Password :changeme
Re-enter Password :changeme
About to add user 'slave1' for realm 'ManagementRealm' Is this correct yes/no?yes
Added user 'slave1' to file '/home/user/jboss-eap-6.0/standalone/configuration/mgmt-users.properties' Added user 'slave1' to file '/home/user/jboss-eap-6.0/domain/configuration/mgmt-users.properties' Is this new user going to be used for one AS process to connect to another AS process e.g. slave domain controller? yes/no? yes To represent the user add the following to the server-identities definition <secret value="Y2hhbmdlbWU=" />Copiez l'élément codé-Base64
<secret>
à partir de la sortieadd-user.sh
.Si vous prévoyez de spécifier un mot de passe codé Base64 pour l'authentification, copiez l'élément<secret>
à partir de la dernière ligne de la sortieadd-user.sh
car vous en aurez besoin à l'étape suivante.Modifiez le domaine de sécurité de l'hôte esclave pour la nouvelle authentification.
Vous pourrez spécifier la valeur secrète d'une des manières suivantes :Spécifier le mot de passe codé-Base64 dans le fichier de configuration du serveur par le CLI.
- Lancez la Management CLI, avec la commande
EAP_HOME/bin/jboss-cli.sh
dans Linux ou bien la commandeEAP_HOME\bin\jboss-cli.bat
dans le serveur Microsoft Windows. Saisir la commandeconnect
pour connecter le contrôleur de domaine sur l'hôte local, ouconnect IP_ADDRESS
pour vous connecter à un contrôleur de domaines sur un serveur éloigné. - Spécifiez la valeur secrète en saisissant la commande suivante. Veillez bien à remplacer
SECRET_VALUE
par la valeur secrète retournée de la sortieadd-user.sh
lors de l'étape précédente.
Vous devriez voir le résultat suivant pour chaque commande./host=master/core-service=management/security-realm=ManagementRealm/server-identity=secret:add(value="SECRET_VALUE")
:reload
"outcome" => "success"
Configurez l'hôte pour obtenir un mot de passe de l'archivage sécurisé.
- Utilisez le script
vault.sh
pour générer un mot de passe masqué. Cela génèrera une chaîne comme la suivante :VAULT::secret::password::ODVmYmJjNGMtZDU2ZC00YmNlLWE4ODMtZjQ1NWNmNDU4ZDc1TElORV9CUkVBS3ZhdWx0
.Vous pouvez trouver plus d'informations sur les archivages de mots de passe dans le guide Security Architecture et dans les autres documents pertinents à la sécurité de JBoss EAP. - Lancez la Management CLI, avec la commande
EAP_HOME/bin/jboss-cli.sh
dans Linux ou bien la commandeEAP_HOME\bin\jboss-cli.bat
dans le serveur Microsoft Windows. Saisir la commandeconnect
pour connecter le contrôleur de domaine sur l'hôte local, ouconnect IP_ADDRESS
pour vous connecter à un contrôleur de domaines sur un serveur éloigné. - Spécifiez la valeur secrète en saisissant la commande suivante. Veillez bien à remplacer
SECRET_VALUE
par le mot de passe masqué généré lors de l'étape précédente.
Vous devriez voir le résultat suivant pour chaque commande./host=master/core-service=management/security-realm=ManagementRealm/server-identity=secret:add(value="${VAULT::secret::password::SECRET_VALUE}")
:reload
"outcome" => "success"
Note
Quand vous créez un mot de passe dans l'archivage sécurisé, celui-ci devra être spécifié en texte brut, et non pas codé Base64.
Spécifiez le mot de passe en tant que propriété système.
Les exemples suivants utilisentserver.identity.password
comme nom de propriété de système pour le mot de passe.- Spécifiez la propriété système pour le mot de passe dans le fichier de configuration du serveur par le CLI.
- Lancez la Management CLI, avec la commande
EAP_HOME/bin/jboss-cli.sh
dans Linux ou bien la commandeEAP_HOME\bin\jboss-cli.bat
dans le serveur Microsoft Windows. Saisir la commandeconnect
pour connecter le contrôleur de domaine sur l'hôte local, ouconnect IP_ADDRESS
pour vous connecter à un contrôleur de domaines sur un serveur éloigné. - Saisir la commande suivante pour configurer l'identité secrète pour utiliser la propriété système.
Vous allez voir le résultat suivant pour chaque commande./host=master/core-service=management/security-realm=ManagementRealm/server-identity=secret:add(value="${server.identity.password}")
:reload
"outcome" => "success"
- Quand vous spécifiez le mot de passe en tant que propriété système, vous pouvez configurer l'hôte d'une des manières suivantes :
- Démarrez le serveur en saisissant le mot de passe en texte brut comme argument de ligne de commande, comme par exemple :
-Dserver.identity.password=changeme
Note
Le mot de passe doit être saisi en texte brut et sera visible par quiconque lance la commandeps -ef
. - Mettez le mot de passe dans un fichier de propriétés et passez l'URL du fichier de propriétés sous forme d'argument de ligne de commande.
- Ajoutez la paire clé/valeur à un fichier de propriétés. Par exemple :
server.identity.password=changeme
- Démarrez le serveur par les arguments de ligne de commande
--properties=URL_TO_PROPERTIES_FILE
.
Redémarrez le serveur.
L'esclave va maintenant authentifier le master en utilisant son nom d'hôte comme nom d'utilisateur et le string codifié comme mot de passe.
Votre serveur autonome, ou les serveurs au sein d'un groupe de serveurs d'un domaine géré, sont désormais configurés en tant que noeuds de worker du mod_cluster. Si vous déployez une application en cluster, ses sessions seront répliquées sur tous les nœuds de cluster de basculement, et seront en mesure d'accepter les demandes provenant d'un serveur web externe ou d'un équilibreur de charges. Chaque nœud du cluster détecte les autres nœuds à l'aide d'automatic discovery, par défaut. Pour configurer la détection automatique et les autres paramètres spécifiques du sous-système mod_cluster
, reportez-vous à Section 17.6.2, « Configurer le sous-système mod_cluster
». Pour configurer le serveur Apache HTTP, reportez-vous à Section 17.4.5, « Utiliser un serveur web externe comme Web frontal pour les applications JBoss EAP 6. ».