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:
  1. 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 archivo module.xml en el directorio.
  2. Modifique el archivo module.xml como 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>
    
  3. Configure los nodos de servidor individuales en el elemento main-server-group en el archivo $EAP_HOME/domain/configuration/host.xml con 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 propiedadValorDescripción
    jboss.node.namenodeOne
    único nombre de nodo dentro de un clúster
    org.quartz.properties/bpms/quartz-definition.properties
    ruta absoluta al archivo de configuración quartz
    org.uberfire.cluster.autostarttrue
    Este 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-cluster
    Nombre de clúster Helix
    org.uberfire.cluster.local.idnodeOne_12345
    ID único del nodo de clúster Helix
    Observe que : se remplaza por _.
    org.uberfire.cluster.vfs.lockvfs-repo
    nombre del recurso definido en el clúster Helix
    org.uberfire.cluster.zkserver1:2181
    Zookeeper location
    org.uberfire.metadata.index.dir/home/jbpm/node[N]/index
    sitio 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.port9418
    puerto utilizado por el repositorio VFS para aceptar conexiones de clientes
    El puerto debe ser único para cada miembro de clúster.
    org.uberfire.nio.git.dir/home/jbpm/node[N]/repo
    Ubicació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>
  4. 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 .
  5. Inicie el servidor de aplicaciones:
    ]$ $JBOSS_HOME/bin/domain.sh
  6. Verifique si los nodos están disponibles
Implemente la aplicación Business Central para sus servidores
  1. Cambie la persistencia predefinida de la aplicación a la base de datos requerida (PostgreSQL): en persistence.xml, aplique los siguientes cambios:
    1. el nombre de la fuente jta-data-source para la fuente definida en el servidor de aplicaciones (java:jboss/datasources/psbpmsDS)
    2. hibernate dialect para que coincida el dialecto de fuente de datos (org.hibernate.dialect.PostgreSQLDialect)
  2. 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.