6.2. Mise en cluster d'un ensemble générique
6.2.1. Paramétrer un cluster Copier lienLien copié sur presse-papiers!
- Téléchargez
jboss-bpmsuite-brms-VERSION-supplementary-tools.zip, qui contient Apache Zookeeper, Apache Helix et les scripts Quartz DDL. Après le téléchargement, décompressez l'archive : les répertoiresZookeeper($ZOOKEEPER_HOME) etHelix($HELIX_HOME) sont créés. - Veuillez maintenant configurer ZooKeeper :
- Dans le répertoire ZooKeeper, allez dans le répertoire
confet effectuez ce qui suit :cp zoo_sample.cfg zoo.cfg - Ouvrez
zoo.cfgpour effectuer des modifications et ajustez les paramètres dont :# the directory where the snapshot is stored. dataDir=$ZOOKEEPER_HOME/data/ # the port at which the clients connects clientPort=2181 server.1=server1:2888:3888 server.2=server2:2888:3888 server.3=server3:2888:3888Assurez-vous de l'existence et de l'accessibilité de l'emplacement dataDir. - Attribuez un ID de nœud à chaque membre qui exécutera ZooKeeper. Par exemple, utilisez 1, 2 et 3 pour le nœud 1, 2 et 3 respectivement. ZooKeeper doit avoir un nombre impair d'instances, au moins trois, pour pouvoir récupérer d'un échec.L'ID de nœud est spécifié dans un champ appelé
myidsous le répertoire de données de ZooKeeper sur chaque nœud. Par exemple, sur le nœud 1, exécutez :$ echo "1" > /zookeeper/data/myid
- Installez ZooKeeper afin de l'utiliser lors de la création du cluster avec Helix :
- Allez sur le répertoire
$ZOOKEEPER_HOME/bin/et démarrez ZooKeeper :./zkServer.sh startVous pouvez vérifier le journal de ZooKeeper dans le fichier$ZOOKEEPER_HOME/bin/zookeeper.out. Vérifiez ce journal pour vous assurer que « l'ensemble » (cluster) a bien été créé. Un des nœuds doit être élu comme nœud principal, suivi par les deux autres.
- Une fois l'ensemble ZooKeeper démarré, l'étape suivante consiste à configurer et démarrer Helix. Helix ne doit être configuré qu'une fois, à partir d'un nœud unique. La configuration est ensuite stockée par l'ensemble ZooKeeper et partagée si besoin.Installez le cluster avec le serveur ZooKeeper comme maître de la configuration :
- Créez le cluster en fournissant l'hôte ZooKeeper et importez en tant que liste séparée par des virgules :
$HELIX_HOME/bin/helix-admin.sh --zkSvr ZOOKEEPER_HOST:ZOOKEEPER_PORT --addCluster CLUSTER_NAME - Ajoutez vos nœuds au cluster :
$HELIX_HOME/bin/helix-admin.sh --zkSvr ZOOKEEPER_HOST:ZOOKEEPER_PORT --addNode CLUSTER_NAME NODE_NAMEUNIQUE_IDExemple 6.8. Ajouter trois nœuds de cluster
./helix-admin.sh --zkSvr server1:2181,server2:2181,server3:2181 --addNode bpms-cluster nodeOne:12345 ./helix-admin.sh --zkSvr server1:2181,server2:2181,server3:2181 --addNode bpms-cluster nodeTwo:12346 ./helix-admin.sh --zkSvr server1:2181,server2:2181,server3:2181 --addNode bpms-cluster nodeThree:12347
- Ajouter des ressources au cluster
Exemple 6.9. Ajouter vfs-repo comme ressource
./helix-admin.sh --zkSvr server1:2181,server2:2181,server3:2181 --addResource bpms-cluster vfs-repo 1 LeaderStandby AUTO_REBALANCE - Rééquilibrez le cluster avec les trois nœuds.
Exemple 6.10. Rééquilibrer le bpms-cluster
./helix-admin.sh --zkSvr server1:2181,server2:2181,server3:2181 --rebalance bpms-cluster vfs-repo 3Dans la commande ci-dessus,3fait référence à trois nœuds Zookeeper. - Démarrez le contrôleur Helix dans tous les nœuds du cluster.
Exemple 6.11. Démarrez le contrôleur Helix
./run-helix-controller.sh --zkSvr server1:2181,server2:2181,server3:2181 --cluster bpms-cluster 2>&1 > /tmp/controller.log &
Note
Arrêt de Helix et ZooKeeper
Procédure 6.1. Arrêt de Helix et ZooKeeper
- Arrêtez les processus du serveur JBoss EAP
- Arrêtez le processus Helix créé par
run-helix-controller.sh, par exemplekill -15 <pid of HelixControllerMain>. - Arrêtez le serveur ZooKeeper à l'aide de la commande
zkServer.sh stop
6.2.2. Installation de Quartz Copier lienLien copié sur presse-papiers!
Note
- Installez la base de données. Assurez-vous d'utiliser l'une des sources de données non JTA prises en charge. Veuillez noter que Quartz nécessite une source de données non JTA et que vous ne pouvez donc pas utiliser la source de données Business Central. Dans le code en exemple, PostgreSQL est utilisé avec l'utilisateur
bpmset le mot de passebpms. Cette base de données devra être connectée à votre serveur d'application, assurez-vous donc de noter les informations et détails d'authentification de la base de données. - Créez des tableaux Quartz sur votre base de données pour permettre une synchronisation d'événements de minuteur. Pour cela, veuillez utiliser le script DDL pour votre base de données, disponible dans l'archive zip supplémentaire disponible sur
$QUARTZ_HOME/docs/dbTables. - Créez le fichier de configuration Quartz
quartz-definition.propertiesdans le répertoire$JBOSS_HOME/PROFILE/configuration/et définissez les propriétés Quartz.Exemple 6.12. Fichier de configuration Quartz pour une base de données PostgreSQL
#============================================================================ # Configure Main Scheduler Properties #============================================================================ org.quartz.scheduler.instanceName = jBPMClusteredScheduler org.quartz.scheduler.instanceId = AUTO #============================================================================ # Configure ThreadPool #============================================================================ org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool org.quartz.threadPool.threadCount = 5 org.quartz.threadPool.threadPriority = 5 #============================================================================ # Configure JobStore #============================================================================ org.quartz.jobStore.misfireThreshold = 60000 org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreCMT org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate org.quartz.jobStore.useProperties=false org.quartz.jobStore.dataSource=managedDS org.quartz.jobStore.nonManagedTXDataSource=notManagedDS org.quartz.jobStore.tablePrefix=QRTZ_ org.quartz.jobStore.isClustered=true org.quartz.jobStore.clusterCheckinInterval = 20000 #============================================================================ # Configure Datasources #============================================================================ org.quartz.dataSource.managedDS.jndiURL=jboss/datasources/psbpmsDS org.quartz.dataSource.notManagedDS.jndiURL=jboss/datasources/quartzNotManagedDSVeuillez noter les sources de données configurées qui recevront les deux programmes Quartz à la fin du fichier.Important
L'intervalle recommandé pour la détection de cluster est de 20 secondes. Il est défini dans la propriété org.quartz.jobStore.clusterCheckinInterval du fichierquartz-definition.properties. Selon votre configuration, prenez en compte l'impact sur la performance et modifiez les paramètres en conséquence.Veuillez également noter la propriété org.quartz.jobStore.driverDelegateClass qui définit le dialecte DB à utiliser lors de la communication avec la base de données configurée (dans cet exemple,org.quartz.impl.jdbcjobstore.PostgreSQLDelegate. Si vous utilisez Oracle, utilisezorg.quartz.impl.jdbcjobstore.oracle.OracleDelegate).