Mettre des serveurs MDM en cluster - 6.1

Talend Data Fabric Guide d'installation

EnrichVersion
6.1
EnrichProdName
Talend Data Fabric
task
Installation et mise à niveau
EnrichPlatform
Studio Talend
Talend Activity Monitoring Console
Talend Administration Center
Talend Artifact Repository
Talend CommandLine
Talend DQ Portal
Talend ESB
Talend Identity Management
Talend Installer
Talend JobServer
Talend Log Server
Talend MDM Server
Talend MDM Web UI
Talend Project Audit
Talend Repository Manager
Talend Runtime
Talend SAP RFC Server

Le clustering est le processus de regroupement d'un ensemble de systèmes physiques similaires afin d'assurer un certain niveau de continuité opérationnelle et de minimiser les risques d'arrêt non planifié, notamment en tirant parti des fonctionnalités de répartition de charge et de failover.

Cette section fournit une vision d'ensemble concernant la configuration d'un cluster de serveurs MDM pour MDM de Talend ainsi que des informations au sujet de la gestion du failover dans un cluster de serveurs MDM.

Configurer un cluster de serveurs MDM

Prérequis :

  • Télécharger et installer Apache httpd et son support mod_jk. Assurez-vous qu'il s'exécute correctement. Pour plus d'informations concernant l'installation et l'exécution d'Apache httpd, consultez la documentation officielle d'Apache (en anglais).

  • Télécharger et installer la distribution standard Apache ActiveMQ et l'exécuter. Pour plus d'informations concernant l'installation et l'exécution d'ActiveMQ de votre plateforme, référez-vous à la documentation Apache ActiveMQ.

Pour configurer un cluster de serveurs MDM, procédez comme suit.

  1. Installez le premier serveur MDM comme pour une installation sur une seule machine.

  2. Dupliquez cette première instance sur autant de machines que vous souhaitez inclure dans votre cluster. Dans ce cas, dupliquer signifie recommencer un processus d'installation avec exactement les même paramètres à chaque fois.

    Notez que vous pouvez également travailler avec plusieurs instances sur le même serveur physique, en utilisant différents numéros de ports. Dans ce cas, vous n'avez pas le même niveau de protection contre les défaillances physiques d'une machine.

  3. Modifiez le fichier <$INSTALLDIR>/conf/mdm.conf sur chaque instance de serveur MDM comme suit :

    • Ajoutez la ligne system.cluster=true dans la section System Settings afin d'activer la configuration de la mise en cluster.

    • Changez la valeur de mdm.routing.engine.broker.url en tcp://AMQHOST:AMQPORT, par exemple, tcp://localhost:61616. Ici, AMQHOST est le nom du serveur hébergeant ActiveMQ et AMQPORT est le port TCP OpenWire qu'écoute ActiveMQ.

      Note

      Par défaut, un serveur MDM utilise un broker Apache ActiveMQ embarqué comme fournisseur JMS. Afin d'assurer une communication correcte entre les noeuds, le broker JMS doit être externalisé et partagé par chaque nœud du cluster. Pour un exemple de configuration spécifique, consultez l'article How to set up a shared full-text index (en anglais).

    • Ajoutez les deux lignes suivantes afin de laisser MDM créer des connexions authentifiées au serveur ActiveMQ.

      mdm.routing.engine.broker.userName=<USERNAME>
      mdm.routing.engine.broker.password=<PASSWORD>
  4. Dans le fichier <TomcatPath>/conf/server.xml, localisez l'élément <Engine> et ajoutez un attribut pour jvmRoute.

    <Engine name="jboss.web" defaultHost="localhost" jvmRoute="mdm_node1">

    Ici, la valeur de jvmRoute représente l'identifiant unique de chaque nœud du serveur MDM compris dans le cluster et doit correspondre au nom du Worker dans le fichier worker.properties.

    Pour un exemple spécifique sur la configuration d'une solution de répartition de charge utilisant Apache httpd avec le support de mod_jk, consultez Exemple de configuration d'une solution de répartition de charge utilisant Apache httpd et mod_jk.

    Répétez cette étape pour chaque instance du serveur.

  5. Redémarrez tous les nœuds du cluster MDM.

Une fois que vous avez installé et configuré toutes les instances requises des serveurs MDM, vous devez explicitement les connecter dans un cluster. Il existe différentes solutions pour le faire, des solutions matérielles et des solutions logicielles.

L'exemple suivant montre l'une de ces solutions, en configurant une solution de répartition de charge utilisant mod_jk avec Tomcat. Cela nécessite un peu d'expérience avec httpd et des connaissances de Tomcat ainsi que des connecteurs Tomcat (mod_jk).

Ce cluster se compose d'un serveur Apache répartissant les requêtes entrantes dans le cluster, ainsi que deux "nœuds" , qui sont les différentes instances des serveurs MDM installés sur la même machine.

Exemple de configuration d'une solution de répartition de charge utilisant Apache httpd et mod_jk

Pour déclarer un cluster de serveurs MDM sur le serveur Apache qui gère les tâches de répartition de charge, procédez comme suit, dans le répertoire <Apache_home>/conf/. Notez que l'emplacement du répertoire Apache_home/conf/ dépend du système d'exploitation utilisé et de l'installation d'Apache.

  1. Modifiez le fichier de configuration httpd.conf et ajoutez les lignes suivantes :

    JkMount /talendmdm/* loadbalancer
    JkMountCopy all
  2. Créez un nouveau fichier et nommez-le worker.property. Collez le code suivant dans ce fichier.

    Assurez-vous que les workers listés dans l'option worker.loadbalancer.balance_workers correspondent aux noms spécifiés pour jvmRoute dans le fichier <TomcatPath>/conf/server.xml car le serveur Apache répartit les requêtes en se basant sur le fichier worker.property.

    # Define mdm_node1
    worker.mdm_node1.port=8109
    worker.mdm_node1.host=127.0.0.1
    worker.mdm_node1.lbfactor=1
    worker.mdm_node1.type=ajp13
    
    # Define mdm_node2
    worker.mdm_node2.port=8009
    worker.mdm_node2.host=127.0.0.1
    worker.mdm_node2.lbfactor=1
    worker.mdm_node2.type=ajp13
    
    # Declare the load balancer itself and all the worker nodes
    worker.loadbalancer.type=lb
    worker.loadbalancer.balance_workers=mdm_node1,mdm_node2
    worker.list=mdm_node1,mdm_node2,loadbalancer
    worker.loadbalancer.sticky_session=true

    Note

    Vous pouvez trouver le port AJP de chaque nœud du serveur MDM dans le fichier <TomcatPath>/conf/server.xml. Voici un exemple :

    <!-- Define an AJP 1.3 Connector on port 8109 -->
    <Connector port="8109" protocol="AJP/1.3" redirectPort="8543" />
  3. Redémarrez le serveur Apache afin que la configuration soit prise en compte.

Gérer le failover

Dans un cluster de serveurs MDM, chaque instance (chaque nœud) de serveur MDM est indépendante. En tant que telle, lorsqu'une session est initialisée sur un nœud défini, elle reste sur ce nœud, les requêtes HTTP provenant du même utilisateur étant toujours envoyées au même nœud.

Le tableau suivant décrit ce qu'il se passe lorsqu'un nœud individuel présente une défaillance.

SourceAvec déclenchement du failoverLimitations

Talend MDM Web User Interface

Les utilisateurs connectés sur des nœuds en fonctionnement ne constatent aucune différence.

Les nouveaux utilisateurs peuvent se connecter manuellement.

Les utilisateurs connectés sur le nœud en échec sont déconnectés de leur session et redirigés vers la page de connexion, comme lorsque la session expire.

Jobs en cours d'exécution

Les Jobs connectés à des nœuds en fonctionnement finissent normalement.

Les Jobs connectés au nœud en échec échouent également, s'ils utilisent le composant tMDMConnection. Cependant, Talend Administration Center peut à nouveau exécuter les Jobs immédiatement et les router vers un autre nœud.

Pour les Jobs n'utilisant pas le composant tMDMConnection seul un enregistrement est rejeté.

Déclencheurs

La file de l'Event Manager assure que tous les déclencheurs asynchrones s'exécutent.

Les déclencheurs synchrones s'exécutant sur le nœud en échec échouent également.

Processus beforeSaving/beforeDeleting

Tous les Processus connectés à des nœuds en fonctionnement s'exécutent normalement.

Les Processus sur le nœud en échec échouent également, ce qui crée le rejet de l'action de création, mise à jour ou suppression.