Chapitre 6. Mise en cluster
- Le référentiel GIT : le référentiel VFS (virtual-file-system) détenant les ressources d'entreprise afin que tous les nœuds du cluster utilisent le même référentiel
- Serveur d'exécution et applications Web : le serveur runtime présent dans le conteneur (tel que Red Hat JBoss EAP) ainsi que les applications web Red Hat JBoss BRMS et Red Hat JBoss BPM Suite pour que les nœuds se partagent les mêmes données de runtime.Pour savoir comment mettre l'application en cluster, veuillez consulter la documentation relative à la mise en cluster du conteneur.
- Base de données d'arrière-plan : base de données avec les données de statut, telles que, entre autre, les instances de processus, sessions KIE et journal d'historique pour les basculements.
Figure 6.1. Schéma du système Red Hat JBoss BPM Suite avec composants de système individuel
Mécanisme de mise en cluster du référentiel GIT
- Apache Zookeeper regroupe toutes les parties.
- Apache Helix est le composant de gestion de cluster qui enregistre tous les détails du cluster (le cluster, les nœuds, les ressources).
- uberfire framework, qui fournit le pilier des applications web
Figure 6.2. Schéma de mise en cluster avec Helix et Zookeeper
- Installation du cluster avec Zookeeper et Helix
- Installation de la base de données d'arrière-plan avec une configuration et des tableaux Quartz
- Configuration de la mise en cluster sur votre conteneur (cette documentation ne fournit que des instructions relatives à la mise en cluster pour Red Hat JBoss EAP 6)
Mise en cluster des référentiels Maven
rsync
.
6.1. Mise en cluster avec JBoss EAP
6.1.1. Mise en cluster à l'aide du programme d'installation JAR
Note
business-central.war
, dashbuilder.war
, et kie-server.war
sont déployés. Pour personnaliser l'installation afin qu'elle correspondent à votre scénario, ou pour utiliser la mise en cluster avec le fichier ZIP déployable, veuillez consulter Section 6.1.2, « Configuration personnalisée (ZIP déployable) ». Vous pouvez également obtenir davantage d'informations dans la documentation JBoss EAP.
Note
Sélectionner le fournisseur JDBC
Sur cet écran, veuillez sélectionner le fournisseur JDBC dans la liste. Vous devrez fournir le ou les JAR correspondants de l'une des manières suivantes :- Sélectionnez un ou plusieurs fichiers sur le système de fichiers
- Veuillez fournir un ou plusieurs URL. Le programme d'installation télécharge les fichiers automatiquement.
Le programme d'installation copie ensuite le ou les JAR sur l'emplacement approprié sous le répertoire$EAP_HOME/modules
, où un fichiermodule.xml
correspondant est également créé automatiquement.Figure 6.3. Installation du pilote JDBC
Configurer la connexion Quartz
Sur l'écran suivant, veuillez fournir les données à la base de données pour Quartz. Le programme d'installation crée automatiquement le fichier de définition Quartz ($EAP_HOME/domain/configuration/quartz-definition.properties
) et deux sources de données Quartz dans le fichier de configuration du domaine$EAP_HOME/domain/domain.xml
. Vous pouvez modifier les fichiers après avoir terminé l'installation.Note
Pendant l'installation, les scripts DDL Quartz seront exécutés sur la base de données sélectionnée dans cette étape. Ces scripts rendent des changements nécessaires pour permettre à Quartz d'opérer (d'ajouter des tables, etc...), et se trouvent dans$EAP_HOME/jboss-brms-bpmsuite-6.3-supplementary-tools/ddl-scripts
comme référence (il n'est pas nécessaire de les modifier de quelque manière que ce soit).Figure 6.4. Installation de la base de données Quartz
- Cliquez sur Suivant pour lancer l'installation.
Important
Lors de l'utilisation du programme d'installation JAR, les archiveswar
sont automatiquement créées à partir des applications résidant dans$EAP_HOME/standalone/deployments/
. Cela signifie que de l'espace supplémentaire est nécessaire car les applications existent à la fois dans un état compressé et non-compressé dans le stockage pendant l'installation.Trois instances de ZooKeeper sont automatiquement créées dans$EAP_HOME/jboss-brms-bpmsuite-6.3-supplementary-tools/
(noms des répertoireszookeeper-one
,zookeeper-two
, etzookeeper-three
).Dans le répertoire$EAP_HOME/jboss-brms-bpmsuite-6.3-supplementary-tools/helix-core
, vous pourrez trouver la configuration Helix par défaut et les scripts pour lancer le cluster—startCluster.sh
pour UNIX etstartCluster.bat
pour Windows.Une fois l'installation terminée, veuillez NE PAS sélectionner d'exécuter le serveur immédiatement. Vous devrez d'abord lancer le cluster en déplaçant dans le répertoire$EAP_HOME/jboss-brms-bpmsuite-6.3-supplementary-tools/helix-core
le script de lancement mentionné ci-dessus et en l'exécutant :Sur les systèmes Unix :./startCluster.sh
Sur Windows :./startCluster.bat
Ce script lance le cluster Helix et les instances ZooKeeper. Uniquement après cela, lancez le serveur EAP en mode domaine en vous déplaçant sur le répertoire$EAP_HOME/bin
et en exécutant :Sur les systèmes Unix :./domain.sh
Sur Windows :./domain.bat
6.1.2. Configuration personnalisée (ZIP déployable)
- Configurer ZooKeeper et Helix selon Section 6.2.1, « Installer un Cluster ».
- Configurer Quartz selon Section 6.2.2, « Installation de Quartz ».
- Installez votre pilote JDBC comme module principal : copiez le jar du pilote sur
$EAP_HOME/modules/system/layers/base/
et créez un fichiermodule.xml
dans le répertoire. - Veuillez modifier le fichier
module.xml
d'après le module XSD correspondant.Exemple 6.1. Contenu de fichier
module.xml
pour la source de données PostgreSQL<module xmlns="urn:jboss:module:1.0" name="org.postgresql"> <resources> <resource-root path="postgresql-jdbc.jar"/> </resources> <dependencies> <module name="javax.api"/> <module name="javax.transaction.api"/> </dependencies> </module>
- Configurez la source de données pour le serveur : ouvrez le fichier
host.xml
oustandalone.xml
pour modification, selon le PROFIL utilisé situé dans$EAP_HOME/PROFILE/
, localisez le profilfull
et effectuez ce qui suit :- Ajoutez la définition de la source de données principale utilisée par Red Hat JBoss BPM Suite.
Exemple 6.2. La source de données PostgreSQL définie comme la source de données Red Hat JBoss BPM Suite principale
<datasource jndi-name="java:jboss/datasources/psbpmsDS" pool-name="postgresDS" enabled="true" use-java-context="true"> <connection-url>jdbc:postgresql://localhost:5432/jbpm</connection-url> <driver>postgres</driver> <security> <user-name>bpms</user-name> <password>bpms</password> </security> </datasource>
- Ajoutez la définition de la source de données pour le service Quartz.
Exemple 6.3. La source de données PostgreSQL définie comme la source de données Quartz principale
<datasource jta="false" jndi-name="java:jboss/datasources/quartzNotManagedDS" pool-name="quartzNotManagedDS" enabled="true" use-java-context="true"> <connection-url>jdbc:postgresql://localhost:5432/jbpm</connection-url> <driver>postgres</driver> <security> <user-name>bpms</user-name> <password>bpms</password> </security> </datasource>
- Définissez le pilote de la source de données.
Exemple 6.4. La définition du pilote PostgreSQL
<driver name="postgres" module="org.postgresql"> <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class> </driver>
- Configurer des nœuds de serveurs individuels dans l'élément
main-server-group
du fichier$EAP_HOME/domain/configuration/host.xml
dont les propriétés sont définies dans Tableau 6.1, « Propriétés de nœud Cluster » :Veuillez noter que lors de la configuration d'un cluster JBoss EAP avec Zookeeper, il est possible que le nombre de nœuds JBoss EAP soit différent de celui des nœuds de Zookeeper (Zookeeper doit avoir un nombre impaire de nœuds). Il est conseillé que Zookeeper et JBoss EAP aient le même nombre de nœuds.Tableau 6.1. Propriétés de nœud Cluster
Nom de propriété Valeur Description jboss.node.name
nodeOne
Nom de nœuds unique dans le clusterorg.quartz.properties
/bpms/quartz-definition.properties
chemin d'accès absolu vers le fichier de configuration Quartzorg.uberfire.cluster.id
bpms-cluster
Nom de cluster de Helixorg.uberfire.cluster.local.id
nodeOne_12345
ID unique du nœud de cluster HelixVeuillez noter que:
est remplacé par_
.org.uberfire.cluster.vfs.lock
vfs-repo
nom de la ressource défini sur le cluster Helixorg.uberfire.cluster.zk
server1:2181
Emplacement Zookeeperorg.uberfire.metadata.index.dir
/home/jbpm/node[N]/index
emplacement où l'index de recherche doit être créé (pris en charge par Apache Lucene)org.uberfire.nio.git.daemon.host
nodeOne
le nom de la machine d'hôte démon dans un cluster physique. org.uberfire.nio.git.daemon.port
9418
port utilisé par le référentiel VFS pour accepter les connexions clientLe port doit être unique pour chaque membre de cluster.org.uberfire.nio.git.dir
/home/jbpm/node[N]/repo
Emplacement du référentiel GIT (VFS) sur le nœud [N]org.uberfire.nio.git.ssh.host
nodeOne
le nom de la machine d'hôte SSH dans un cluster physique. org.uberfire.nio.git.ssh.port
8003
le numéro de port unique pour l'accès SSH au référentiel GIT pour un cluster exécuté sur des machines physiques. org.uberfire.nio.git.ssh.hostport and org.uberfire.nio.git.daemon.hostport
8003 and 9418
Dans un environnement virtualisé, le port externe à utiliser Exemple 6.5. Configuration du Cluster nodeOne
<system-properties> <property name="org.uberfire.nio.git.dir" value="/tmp/bpms/nodeone" boot-time="false"/> <property name="jboss.node.name" value="nodeOne" boot-time="false"/> <property name="org.uberfire.cluster.id" value="bpms-cluster" boot-time="false"/> <property name="org.uberfire.cluster.zk" value="server1:2181,server2:2181,server3:2181" boot-time="false"/> <property name="org.uberfire.cluster.local.id" value="nodeOne_12345" boot-time="false"/> <property name="org.uberfire.cluster.vfs.lock" value="vfs-repo" boot-time="false"/> <property name="org.uberfire.nio.git.daemon.host" value="nodeOne" /> <property name="org.uberfire.nio.git.daemon.port" value="9418" boot-time="false"/> <property name="org.uberfire.nio.git.daemon.hostport" value="9418" boot-time="false"/> <property name="org.uberfire.nio.git.ssh.port" value="8003" boot-time="false"/> <property name="org.uberfire.nio.git.ssh.hostport" value="8003" boot-time="false"/> <property name="org.uberfire.nio.git.ssh.host" value="nodeOne" /> <property name="org.uberfire.metadata.index.dir" value="/tmp/jbpm/nodeone" boot-time="false"/> <property name="org.uberfire.nio.git.ssh.cert.dir" value="/tmp/jbpm/nodeone" boot-time="false"/> <property name="org.quartz.properties" value="/tmp/jbpm/quartz/quartz-db-postgres.properties" boot-time="false"/> </system-properties>
Exemple 6.6. Configuration du Cluster nodeTwo
<system-properties> <property name="org.uberfire.nio.git.dir" value="/tmp/bpms/nodetwo" boot-time="false"/> <property name="jboss.node.name" value="nodeTwo" boot-time="false"/> <property name="org.uberfire.cluster.id" value="bpms-cluster" boot-time="false"/> <property name="org.uberfire.cluster.zk" value="server1:2181,server2:2181,server3:2181" boot-time="false"/> <property name="org.uberfire.cluster.local.id" value="nodeTwo_12346" boot-time="false"/> <property name="org.uberfire.cluster.vfs.lock" value="vfs-repo" boot-time="false"/> <property name="org.uberfire.nio.git.daemon.host" value="nodeTwo" /> <property name="org.uberfire.nio.git.daemon.port" value="9418" boot-time="false"/> <property name="org.uberfire.nio.git.daemon.hostport" value="9418" boot-time="false"/> <property name="org.uberfire.nio.git.ssh.port" value="8003" boot-time="false"/> <property name="org.uberfire.nio.git.ssh.hostport" value="8003" boot-time="false"/> <property name="org.uberfire.nio.git.ssh.host" value="nodeTwo" /> <property name="org.uberfire.metadata.index.dir" value="/tmp/jbpm/nodetwo" boot-time="false"/> <property name="org.uberfire.nio.git.ssh.cert.dir" value="/tmp/jbpm/nodetwo" boot-time="false"/> <property name="org.quartz.properties" value="/tmp/jbpm/quartz/quartz-db-postgres.properties" boot-time="false"/> </system-properties>
Exemple 6.7. Configuration du Cluster nodeThree
<system-properties> <property name="org.uberfire.nio.git.dir" value="/tmp/bpms/nodethree" boot-time="false"/> <property name="jboss.node.name" value="nodeThree" boot-time="false"/> <property name="org.uberfire.cluster.id" value="bpms-cluster" boot-time="false"/> <property name="org.uberfire.cluster.zk" value="server1:2181,server2:2181,server3:2181" boot-time="false"/> <property name="org.uberfire.cluster.local.id" value="nodeThree_12347" boot-time="false"/> <property name="org.uberfire.cluster.vfs.lock" value="vfs-repo" boot-time="false"/> <property name="org.uberfire.nio.git.daemon.host" value="nodeThree" /> <property name="org.uberfire.nio.git.daemon.port" value="9418" boot-time="false"/> <property name="org.uberfire.nio.git.daemon.hostport" value="9418" boot-time="false"/> <property name="org.uberfire.nio.git.ssh.port" value="8003" boot-time="false"/> <property name="org.uberfire.nio.git.ssh.hostport" value="8003" boot-time="false"/> <property name="org.uberfire.nio.git.ssh.host" value="nodeThree" /> <property name="org.uberfire.metadata.index.dir" value="/tmp/jbpm/nodethree" boot-time="false"/> <property name="org.uberfire.nio.git.ssh.cert.dir" value="/tmp/jbpm/nodethree" boot-time="false"/> <property name="org.quartz.properties" value="/tmp/jbpm/quartz/quartz-db-postgres.properties" boot-time="false"/> </system-properties>
- Ajoutez les utilisateurs de gestion comme indiqué dans le Guide d'Administration et de Configuration pour Red Hat JBoss EAP et les utilisateurs d'application comme indiqué dans le Guide d'Administration et de Configuration Red Hat JBoss BPM Suite.
- Déplacez-vous sur le répertoire
$EAP_HOME/bin
et exécutez le serveur d'applications en mode domaine :Sur les systèmes Unix :./domain.sh
Sur Windows :./domain.bat
- Vérifiez que les nœuds sont disponibles.
- Remplacez la persistance prédéfinie de l'application par la base de données requise (PostgreSQL) : appliquez les modifications suivantes dans
persistence.xml
:- nom jta-data-source de la source défini sur le serveur d'application (
java:jboss/datasources/psbpmsDS
) - dialecte hibernate doit correspondre au dialecte de la source de données (
org.hibernate.dialect.PostgreSQLDialect
)
- Connectez-vous en tant qu'utilisateur de gestion à la console Administration du serveur de votre domaine et ajoutez les nouveaux déploiements à l'aide de l'affichage Runtime de la console. Une fois le déploiement ajouté au domaine, attribuez-le au groupe de serveur approprié (
main-server-group
).
Note
déployé
. Toute requête ciblant cette unité de déploiement envoyé à un membre de cluster échoue avec DeploymentNotFoundException
.