6.3. Configuración de agrupamiento en Red Hat JBoss EAP
La información provista en esta sección es una fórmula de agrupamiento sencilla. Para obtener información sobre agrupamiento, consulte Red Hat JBoss EAP documentation.
Al utilizar agrupamiento de JBoss EAP , un controlador de dominio JBoss EAP existe con otros esclavos JBoss EAP se conectan como usuarios administrativos. La implementación de Business Central y dashbuilder puede hacerse como un usuario administrativo en controlador de dominio, y las implementaciones WAR se distribuirán a otros miembros del clúster JBoss EAP.
Para configurar agrupamiento en Red Hat JBoss EAP 6, siga el siguiente procedimiento:
- Instale su controlador JDBC como un módulo de núcleo: copie el JAR de controlador a
$EAP_HOME/modules/system/layers/base/y cree un archivomodule.xmlen el directorio. - Modifique el archivo
module.xmlcomo el módulo XSD respectivo.Ejemplo 6.6. El contenido del archivo module.xml para fuente de datos 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> - Configure los nodos de servidor individuales en el elemento
main-server-groupen el archivo$EAP_HOME/domain/configuration/host.xmlcon propiedades definidas en Tabla 6.1, “Propiedades de nodos de cĺúster”:Observe que al configurar un clúster de JBoss EAP con Zookeeper, se puede tener un número de nodos JBoss EAP diferentes a los nodos Zookeeper (tenga en cuenta que debe ser un número de nodos impar). Sin embargo, el tener el mismo conteo de nodos tanto para Zookeeper como JBoss EAP se considera una práctica más efectiva.Tabla 6.1. Propiedades de nodos de cĺúster
Nombre de propiedad Valor Descripción jboss.node.namenodeOneúnico nombre de nodo dentro de un clústerorg.quartz.properties/bpms/quartz-definition.propertiesruta absoluta al archivo de configuración quartzorg.uberfire.cluster.autostarttrueEste valor retarda el agrupamiento VFS hasta que la aplicación sea totalmente inicializada para evitar conflictos cuando todos los miembros de clúster crean clones locales.org.uberfire.cluster.idbpms-clusterNombre de clúster Helixorg.uberfire.cluster.local.idnodeOne_12345ID único del nodo de clúster HelixObserve que:se remplaza por_.org.uberfire.cluster.vfs.lockvfs-reponombre del recurso definido en el clúster Helixorg.uberfire.cluster.zkserver1:2181Zookeeper locationorg.uberfire.metadata.index.dir/home/jbpm/node[N]/indexsitio donde el índice de búsqueda debe ser creado (mantenido por Apache Lucene)org.uberfire.nio.git.daemon.hostnodeOneel nombre de la máquina de host de demonio en el clúster físico org.uberfire.nio.git.daemon.port9418puerto utilizado por el repositorio VFS para aceptar conexiones de clientesEl puerto debe ser único para cada miembro de clúster.org.uberfire.nio.git.dir/home/jbpm/node[N]/repoUbicación del repositorio Git (VFS) en node[N]org.uberfire.nio.git.ssh.hostnodeOneel nombre de la máquina de host SSH en el cĺúster físico org.uberfire.nio.git.ssh.port8003el único puerto de número de acceso ssh para el repositorio Git para ejecutar un clúster en máquinas físicas org.uberfire.nio.git.ssh.hostport and org.uberfire.nio.git.daemon.hostport8003 and 9418En un entorno virtualizado, el puerto externo a ser utilizado Ejemplo 6.7. Configuración de clúster 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.cluster.autostart" value="true" boot-time="true"/> <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>
Ejemplo 6.8. Configuración de clúster 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.cluster.autostart" value="true" boot-time="true"/> <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>
Ejemplo 6.9. Configuración de clúster 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.cluster.autostart" value="true" boot-time="true"/> <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>
- Agregue usuarios como se explica en la Guía de configuración y administración para Red Hat JBoss EAP y los usuarios de aplicaciones como se explica en la Guía de administración y configuración Red Hat JBoss BPM Suite .
- Inicie el servidor de aplicaciones:
]$ $JBOSS_HOME/bin/domain.sh
- Verifique si los nodos están disponibles
Implemente la aplicación Business Central para sus servidores
- Cambie la persistencia predefinida de la aplicación a la base de datos requerida (PostgreSQL): en
persistence.xml, aplique los siguientes cambios:- el nombre de la fuente jta-data-source para la fuente definida en el servidor de aplicaciones (
java:jboss/datasources/psbpmsDS) - hibernate dialect para que coincida el dialecto de fuente de datos (
org.hibernate.dialect.PostgreSQLDialect)
- Ingrese como usuario administrativo a la consola de administración de servidor de su dominio y agregue las nuevas implementaciones a través de la vista Runtime de la consola. Una vez la implementación es agregada al dominio, asígnela al grupo de servidor correcto (
main-server-group).
Nota
Es importante que los usuarios verifiquen la unidad de implementación con cada miembro de clúster
Cuando se crea una unidad de implementación en el nodo de clúster, se tarda un tiempo antes de que sea distribuida entre todos los miembros de clúster. El estatus de implementación puede verificarse a través de la UI y REST, sin embargo, si la solicitud va al nodo donde la implementación fue emitida originalmente, la respuesta es
deployed. Cualquier solicitud que se destine a esta unidad de implementación enviada a un miembro de clúster diferente falla con DeploymentNotFoundException.