Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

17.6.6. Configurer un nœud de worker de mod_cluster

Résumé

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 ».

Les noeuds de worker d'un domaine géré partage une configuration identique à travers un groupe de serveurs. Les nœuds de workers exécutant comme serveurs autonomes sont configurés individuellement. Les étapes de configuration, sinon, sont identiques.

Configuration d'un nœud de worker

  • Un serveur autonome devra démarrer avec le profil standalone-ha ou standalone-full-ha.
  • Un groupe de serveurs de domaine géré devra utiliser le profil ha ou full-ha, et le groupe de liaisons de sockets ha-sockets ou full-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

Quand vous avez des commandes d'interface CLI, celles-ci présument que vous utilisez un domaine géré. Si vous utilisez un serveur autonome, supprimez la portion /profile=full-ha des commandes.

Procédure 17.10. Configurez un nœud de worker

  1. Configurez les interfaces de réseau

    Les interfaces de réseau ont toutes la valeur 127.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.
    1. Démarrez le serveur JBoss EAP en utilisant le profil décrit plus haut dans cette section.
    2. Lancez la Management CLI, avec la commande EAP_HOME/bin/jboss-cli.sh dans Linux ou bien la commande EAP_HOME\bin\jboss-cli.bat dans le serveur Microsoft Windows. Saisir la commande connect pour connecter le contrôleur de domaine sur l'hôte local, ou connect IP_ADDRESS pour vous connecter à un contrôleur de domaines sur un serveur éloigné.
    3. Modifier l'adresse IP externe des interfaces management, public et unsecure en saisissant les commandes suivantes. Veillez bien à remplacer EXTERNAL_IP_ADDRESS qui se trouve dans la commande par l'adresse IP externe de l'hôte.
      /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
      Vous devriez voir le résultat suivant pour chaque commande.
       "outcome" => "success"
    4. 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.
      1. Démarrer l'hôte esclave JBoss EAP à l'aide de la syntaxe suivante :
        bin/domain.sh --host-config=HOST_SLAVE_XML_FILE_NAME
        Par exemple :
        bin/domain.sh --host-config=host-slave01.xml
      2. Lancer l'interface CLI.
      3. Utiliser la syntaxe suivante pour remplacer le nom d'hôte :
        /host=master:write-attribute(name="name",value=UNIQUE_HOST_SLAVE_NAME)
        Par exemple :
        /host=master:write-attribute(name="name",value="host-slave01")
        Vous devriez voir apparaître le résultat suivant.
         "outcome" => "success"
        Cela modifie le XML du fichier host-slave01.xml comme suit :
        <host name="host-slave01" xmlns="urn:jboss:domain:1.6">
    5. Pour les hôtes nouvellement configurés qui ont besoin de rejoindre un domaine géré, cherchez l'élément local et ajoutez l'attribut host de l'élement remote qui pointe en direction du contrôleur de domaine. Cette étape ne s'applique pas à un serveur autonome.
      1. Démarrer l'hôte esclave JBoss EAP à l'aide de la syntaxe suivante :
        bin/domain.sh --host-config=HOST_SLAVE_XML_FILE_NAME
        Par exemple :
        bin/domain.sh --host-config=host-slave01.xml
      2. Lancer l'interface CLI.
      3. Utilisez la syntaxe suivante en spécifiant le contrôleur de domaine :
        /host=UNIQUE_HOST_SLAVE_NAME/:write-remote-domain-controller(host=DOMAIN_CONTROLLER_IP_ADDRESS,port=${jboss.domain.master.port:9999},security-realm="ManagementRealm") 
        Par exemple :
        /host=host-slave01/:write-remote-domain-controller(host="192.168.1.200",port=${jboss.domain.master.port:9999},security-realm="ManagementRealm") 
        Vous devriez voir apparaître le résultat suivant.
         "outcome" => "success"
        Cela modifie le XML du fichier host-slave01.xml comme suit :
        <domain-controller>
            <remote host="192.168.1.200" port="${jboss.domain.master.port:9999}" security-realm="ManagementRealm"/>
        </domain-controller>
  2. 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 le ManagementRealm du contrôleur de domaine ou du master autonome. Sur le contrôleur de domaine ou sur le master autonome, exécutez la commande EAP_HOME/bin/add-user.sh. Ajouter un utilisateur avec le même nom d'utilisateur comme esclave, au ManagementRealm. Quand on vous demandera si cet utilisateur doit s'authentifier auprès d'une instance de JBoss EAP 6 externe, répondez Oui. 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 passe changeme.
    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=" />
    
  3. Copiez l'élément codé-Base64 <secret> à partir de la sortie add-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 sortie add-user.sh car vous en aurez besoin à l'étape suivante.
  4. 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.

      1. Lancez la Management CLI, avec la commande EAP_HOME/bin/jboss-cli.sh dans Linux ou bien la commande EAP_HOME\bin\jboss-cli.bat dans le serveur Microsoft Windows. Saisir la commande connect pour connecter le contrôleur de domaine sur l'hôte local, ou connect IP_ADDRESS pour vous connecter à un contrôleur de domaines sur un serveur éloigné.
      2. 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 sortie add-user.sh lors de l'étape précédente.
        /host=master/core-service=management/security-realm=ManagementRealm/server-identity=secret:add(value="SECRET_VALUE") 
        :reload
        Vous devriez voir le résultat suivant pour chaque commande.
         "outcome" => "success"
    • Configurez l'hôte pour obtenir un mot de passe de l'archivage sécurisé.

      1. 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.
      2. Lancez la Management CLI, avec la commande EAP_HOME/bin/jboss-cli.sh dans Linux ou bien la commande EAP_HOME\bin\jboss-cli.bat dans le serveur Microsoft Windows. Saisir la commande connect pour connecter le contrôleur de domaine sur l'hôte local, ou connect IP_ADDRESS pour vous connecter à un contrôleur de domaines sur un serveur éloigné.
      3. 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.
        /host=master/core-service=management/security-realm=ManagementRealm/server-identity=secret:add(value="${VAULT::secret::password::SECRET_VALUE}") 
        :reload
        Vous devriez voir le résultat suivant pour chaque commande.
         "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 utilisent server.identity.password comme nom de propriété de système pour le mot de passe.
      1. Spécifiez la propriété système pour le mot de passe dans le fichier de configuration du serveur par le CLI.
        1. Lancez la Management CLI, avec la commande EAP_HOME/bin/jboss-cli.sh dans Linux ou bien la commande EAP_HOME\bin\jboss-cli.bat dans le serveur Microsoft Windows. Saisir la commande connect pour connecter le contrôleur de domaine sur l'hôte local, ou connect IP_ADDRESS pour vous connecter à un contrôleur de domaines sur un serveur éloigné.
        2. Saisir la commande suivante pour configurer l'identité secrète pour utiliser la propriété système.
          /host=master/core-service=management/security-realm=ManagementRealm/server-identity=secret:add(value="${server.identity.password}") 
          :reload
          Vous allez voir le résultat suivant pour chaque commande.
           "outcome" => "success"
      2. 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 commande ps -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.
          1. Ajoutez la paire clé/valeur à un fichier de propriétés. Par exemple :
            server.identity.password=changeme
          2. Démarrez le serveur par les arguments de ligne de commande
            --properties=URL_TO_PROPERTIES_FILE
            .
  5. 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.
Résultat

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. ».