Menu Close
Settings Close

Language and Page Formatting Options

19.5.6. Configurer un nœud de worker de mod_cluster

Résumé

Un worker node 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 dans JBoss EAP 6, et gère tous les nœuds du cluster. C'est ce qu'on appelle le master. Pour plus d'informations conceptuelles sur les worker nodes, consulter Section 19.1.4, « Nœud de worker ». Pour une vue d'ensemble de l'équilibrage de la charge du serveur web, consulter Section 19.1.3, « Connecteurs HTTP - Aperçu général ».

Le maître n'est configuré qu'une fois, par l'intermédiaire du sous-système de mod_cluster. Pour configurer le sous-système mod_cluster, reportez-vous à Configure the mod_cluster Subsystem dans Administration and Configuration Guide. Chaque nœud de worker est configuré séparément, alors répétez cette procédure pour chaque nœud que vous souhaitez ajouter au cluster.
Si vous utilisez un domaine géré, chaque serveur de groupe de serveurs est un noeud de worker qui partage une configuration identique. Par conséquent, la configuration s'effectue sur un groupe de serveurs dans son entier. Dans un serveur autonome, la configuration s'effectue sur une seule instance de JBoss EAP 6. Les étapes de configuration sont sinon identiques.

Configuration d'un nœud de worker

  • Si vous utilisez un serveur autonome, il devra être démarré par le profil standalone-ha.
  • Si vous utilisez un domaine géré, votre groupe de serveurs 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 19.9. 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. Saisissez 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. Ajoutez 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 AS 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. Saisissez 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.
        /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 pourrez trouver plus d'informations sur l'archivage sécurisé dans Password Vaults de la section Sensitive Strings de ce guide, ici : Section 11.13.1, « Sécurisation des chaînes confidentielles de fichiers en texte clair ».
      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. Saisissez 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.
        /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. Saisissez 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. Saisissez la commande suivante pour configurer l'identité secrète pour utiliser la propriété système.
          /core-service=management/security-realm=ManagementRealm/server-identity=secret:add(value="${server.identity.password}") 
          :reload
          Vous devriez 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 worker nodes 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 19.5.2, « Configurer le sous-système mod_cluster ». Pour configurer le serveur Apache HTTP, reportez-vous à Section 19.3.5, « Utiliser un serveur web externe comme Web frontal pour les applications JBoss EAP 6. ».