Árvore de páginas

Consideraciones iniciales

  • El servicio de indexación (Solr) precisa ser único y compartido por todas las instancias, por lo tanto se debe aislar en otro ambiente - acceda más informaciones;
  • Todas las instancias deberán tener acceso a una misma carpeta compartida, donde será el repositorio de archivos del sistema;
  • El banco de datos debe ser único para todas las instancias;
  • Es preciso mantener afinidad de sesión, es decir, una vez que el usuario inicio sesión accediendo en una instancia, siempre será direccionado a la misma instancia.

Preparar Entorno...

Antes de comenzar la instalación, es preciso estar con el ambiente preparado. Haga lo siguiente:

  1. Instale el banco de datos y cree una instancia;
  2. Instale el memcached estándar de la distribución y si es necesario haga las configuraciones;
  3. Elija una carpeta y un servidor y hágala accesible a todas las máquinas que harán parte del Load Balancer.

Instalando el primer nudo

Para efectos de simplificación, ese tutorial considerará que: Los servidores Solr y Realtime que se usarán serán los instalados en ese nudo; la instalación se realizará en la carpeta estándar (“/opt/fluig”).

  1.  Instale la aplicación por el procedimiento normal, solamente tomando el cuidado de:
    1. Informe la URL correcta del banco de datos;
    2. Informe la URL correcta para el servidor memcached.


  2. Haga una copia de la carpeta “apps” (localizada en /opt/fluig/jboss) a otra llamada “appslb”;
    cp -Rp apps appslb

  3. Haga una copia de la carpeta “standalone” a otra llamada “standalone-node1”.
    cp -Rp standalone standalone-node1

  4. Edite el archivo standalone-node1/configuration/standalone.xml:
    1. En “<system-properties>”, agregue una nueva propiedad: 

      <property name="UseJK" value="true"/>
    2. En el subsystem “com.totvs.technology.wcm” agregue el atributo “dir” apuntando a la carpeta “nodelb”. Se verá así:

      <subsystem xmlns="urn:com.totvs.technology.wcm:1.0" refresh="15" dir="/opt/fluig/jboss/appslb"/
    3. Modifique el valor de la propiedad de binding “wcm/globalDataDir” para apuntar a la carpeta compartida entre las instancias:

      <simple name="java:global/wcm/globalDataDir" value="{pasta global}"/>
    4. La propiedad “wcm/applicationUploadDir” debe apuntar a la misma carpeta “nodelb”:

      <simple name="java:global/wcm/applicationUploadDir" value="/opt/fluig/jboss/appslb"/>
    5. En el sysbsystem “jboss:domain:web” agregar el atributo instance-id="${jboss.node.name:node0}"

    6. Aun en el sysbsystem “jboss:domain:web” agregar el conector AJP, justo debajo del conector http:

      <connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding="ajp" enabled="true"/>


  5. En la carpeta “/opt/fluig/jboss/bin”, cree el script “node1.sh”. En “ip-do-servidor” coloque la dirección IP del servidor donde el TOTVS Fluig Plataforma se está ejecutando;

    #!/bin/sh
    ./standalone.sh -c standalone.xml -b {ip-do-servidor} -Djboss.server.base.dir=../standalone-node1 -Djboss.node.name=node1 -Djboss.socket.binding.port-offset=100



  6. Excluya de la carpeta “appslb” el archivo “foundation-addon-indexer-web.war”, que es el servidor Solr;

  7. Excluya de la carpeta “apps” todos los archivos, EXCEPTO el archivo “foundation-addon-indexer-web.war”;

  8. Inicie el primer nudo por el script “node1.sh”:

    ./node1.sh



  9. Después de iniciado y conseguir iniciar sesión con el usuario “wcmadmin”, derribe el TOTVS Fluig Plataforma;

  10. Conecte en el banco de datos y establezca el valor del campo server_url, de la tabla wcm_configuration. La URL guardada contiene el puerto 8080, modifique el valor para no contener el puerto (o modifique para el puerto del apache, en el caso que no esté en el puerto 80);

  11. Inicie el Fluig nuevamente por el script “node1.sh”;

  12. Inicie el Fluig version Solr solamente por el script estándar “standalone.sh”;

Creando un segundo nudo en la misma instalación

  1. Haga una copia de la carpeta “standalone-node1” para otra llamada “standalone-node2”.
    cp -Rp standalone-node1 standalone-node2

  2. En la carpeta “/opt/fluig/jboss/bin”, cree el script “node2.sh”. En “ip-do-servidor” coloque la dirección IP del servidor donde el Fluig se está ejecutando.

    #!/bin/sh
    ./standalone.sh -c standalone.xml -b {ip-do-servidor} -Djboss.server.base.dir=../standalone-node2 -Djboss.node.name=node2 -Djboss.socket.binding.port-offset=200

     

Creando un tercer nudo en otra máquina

 

  1. Instale la aplicación por el procedimiento normal, solamente tomando el cuidado de:
    1. Informe la URL correcta del banco de datos;
    2. Informe la URL correcta para el servidor memcached.

  2. Edite el archivo standalone /configuration/standalone.xml:
    1. En “<system-properties>”, agregue una nueva propiedad:

       <property name="UseJK" value="true"/>


    2. Aun en “<system-properties>”, modifique la propiedad “totvs/solrURL” informando la URL del Solr de la primera instancia. Simplemente cambie el IP por el IP del servidor de la primera instancia.

    3. Modifique el valor de la propiedad de binding “wcm/globalDataDir” para apuntar a la carpeta compartida entre las instancias:       

       <simple name="java:global/wcm/globalDataDir" value="{pasta global}"/>
    4. Modifique el valor de la propiedad de binding “wcm/cacheServerAddress” para apuntar al memcached:       
       

       <simple name="java:global/wcm/cacheServerAddress" value="{ip servidor 1}:11211"/>



    5. Modificar las propiedades de binding “node.chat.url” y “node.realtime.url” para apuntar al IP de la primera instancia.

    6. En el sysbsystem “jboss:domain:web” agregar el atributo instance-id="${jboss.node. name:node0}"

    7. Aun en el sysbsystem “jboss:domain:web” agregar el conector AJP, justo debajo del conector http:

      <connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding="ajp" enabled="true"/>


       

  3. En la carpeta “/opt/fluig/jboss/bin”, cree es script “node3.sh”. En “ip-do-servidor” coloque la dirección IP del servidor donde el Fluig se está ejecutando

     #!/bin/sh      
     ./standalone.sh -c standalone.xml -b {ip-do-servidor} -Djboss.server.base.dir=../standalone-node3 -Djboss.node.name=node3


  4. Excluya de la carpeta “apps” el archivo “foundation-addon-indexer-web.war”, que es el servidor Solr.

  5. Inicie el primer nudo por el script “node3.sh”:

    ./node3.sh

Configurando el apache mod_proxy

Abra el archivo httpd.conf y agregue el siguiente código:

 

Header add Set-Cookie "FLUIGCOOKIE=%{UNIQUE_ID}e.%{BALANCER_WORKER_ROUTE}e; path=/" env=!VARCOOKIE
<Proxy balancer://mycluster>
Order deny,allow
Allow from all
BalancerMember http://{ip-servidor-1}:8180 route=node1
BalancerMember http://{ip-servidor-1}:8280 route=node2
BalancerMember http://{ip-servidor-2}:8080 route=node3
ProxySet stickysession=FLUIGCOOKIE
</Proxy>
<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass / balancer://mycluster/ stickysession=FLUIGCOOKIE nofailover=Off
DocumentRoot /var/www
<Directory /var/www>
Options -Indexes
Order allow,deny
Allow from all
</Directory>
</VirtualHost>



Qué es importante entender aquí:

  • Cada “BalancerMember” indica un servidor, debe apuntar al IP y puerto correctos.
  • Se crea un Cookie llamado “FLUIGCOOKIE”, usado para mantener la afinidad de la sesión. Sin eso, no funciona.