Considerações iniciais

Preparando ambiente

Antes de começar a instalação, é preciso estar com o ambiente preparado. Faça o seguinte:

  1. Instale o banco de dados e crie uma instância;
  2. Instale o memcached padrão da distribuição e se necessário faça as configurações;
  3. Escolha uma pasta e um servidor e torne-a acessível para todas as máquinas que farão parte do Load Balancer.

Instalando primeiro nó

Para efeitos de simplificação, esse tutorial irá considerar que: 1) o servidor Realtime a ser usado será o instalado nesse nó; 2) a instalação será feita na pasta padrão (“/opt/fluig”).

O Fluig possui uma configuração especial para ser executado em cluster com Load Balancing. Essa configuração é habilitada durante a instalação.

Instale a aplicação, usando o procedimento normal, porém utilize a seguinte linha de comando:

sudo ./jdk-64/bin/java -jar -Dprofile=full-ha fluig-installer.jar
sudo .\jdk-64\bin\java.exe -jar -Dprofile=full-ha fluig-installer.jar

 

 

  1. apenas tomando o cuidado de:
    1. Informe a URL correta do banco de dados;
    2. Informe a URL correta para o servidor memcached.

  2. Faça uma cópia da pasta “standalone” para outra chamada “standalone-node1”.
    cp -Rp standalone standalone-node1

  3. Edite o arquivo standalone-node1/configuration/standalone.xml:
    1. Em “<system-properties>”, adicione uma nova propriedade: 

      <property name="UseJK" value="true"/>
    2. Altere o valor da propriedade de binding “wcm/globalDataDir” para apontar para a pasta compartilhada entre as instâncias:

      <simple name="java:global/wcm/globalDataDir" value="{pasta global}"/>
    3. No sysbsystem “jboss:domain:web” adicionar o atributo instance-id="${jboss.node.name:node0}"

    4. Ainda no sysbsystem “jboss:domain:web” adicionar o conector AJP, logo abaixo do conector http:

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


  4. Na pasta “/opt/fluig/jboss/bin”, crie o script “node1.sh”. Em “ip-do-servidor” coloque o endereço IP do servidor onde o Fluig está rodando;

    #!/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


  5. Certifique-se que na “apps” não exista o arquivo “foundation-addon-indexer-web.war”, que é o servidor Solr;

  6. Inicie o primeiro nó pelo script “node1.sh”:

    ./node1.sh


  7. Depois de iniciado e conseguir logar com o usuário “wcmadmin”, derrube o Fluig;

  8. Conecte no banco de dados e acerte o valor do campo server_url, da tabela wcm_configuration. A URL salva contém a porta 8080, altere o valor para não conter a porta (ou altere para a porta do apache caso não esteja na porta 80);

  9. Inicie o Fluig novamente pelo script “node1.sh”;

  10. Inicie o Fluig versão Solr apenas pelo script padrão “standalone.sh”;

Criando um segundo nó na mesma instalação

  1. Faça uma cópia da pasta “standalone-node1” para outra chamada “standalone-node2”.
    cp -Rp standalone-node1 standalone-node2

  2. Na pasta “/opt/fluig/jboss/bin”, crie o script “node2.sh”. Em “ip-do-servidor” coloque o endereço IP do servidor onde o Fluig está rodando.

    #!/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

Criando um terceiro nó em outra máquina

 

  1. Instale a aplicação pelo procedimento normal, apenas tomando o cuidado de:
    1. Informe a URL correta do banco de dados;
    2. Informe a URL correta para o servidor memcached.

  2. Edite o arquivo standalone /configuration/standalone.xml:
    1. Em “<system-properties>”, adicione uma nova propriedade:

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


    2. Ainda em “<system-properties>”, altere a propriedade “totvs/solrURL” informando a URL do Solr da primeira instância. Basta trocar o IP pelo IP do servidor da primeira instância.

    3. Altere o valor da propriedade de binding “wcm/globalDataDir” para apontar para a pasta compartilhada entre as instâncias:       

       <simple name="java:global/wcm/globalDataDir" value="{pasta global}"/>


    4. Altere as propriedades de binding “node.chat.url” e “node.realtime.url” para apontar para o IP da primeira instância.

    5. No sysbsystem “jboss:domain:web” adicionar o atributo instance-id="${jboss.node.name:node0}"

    6. Ainda no sysbsystem “jboss:domain:web” adicionar o conector AJP, logo abaixo do conector http:

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


  3. Na pasta “/opt/fluig/jboss/bin”, crie o script “node3.sh”. Em “ip-do-servidor” coloque o endereço IP do servidor onde o Fluig está rodando

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


  4. Certifique-se que a pasta "/app/fluig/jboss/apps" seja a mesma pasta compartilhada utilizada pelos node1 e node2.


  5. Inicie o primeiro nó pelo script “node3.sh”:

    ./node3.sh

Configurando o apache mod_proxy

Abra o arquivo httpd.conf e adicione o seguinte 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>



O que é importante entender aqui:

Altere a tag abaixo no arquivo $FLUIG_HOME/jboss/standalone/configuration/standalone.xml de cada servidor do Fluig para:

<subsystem xmlns="urn:jboss:domain:web:1.5" default-virtual-server="default-host" instance-id="${jboss.node.name:fluignd2}" native="false">
<connector name="http" protocol="HTTP/1.1" scheme="https" socket-binding="http" proxy-name="<url_virtual_host_fluig>" proxy-port="<porta_virtual_host_fluig>"/>
<connector name="httplog" protocol="HTTP/1.1" scheme="http" socket-binding="httplog"/>
<connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding="ajp" enabled="true"/>
<virtual-server name="default-host" enable-welcome-root="false">
<sso cache-container="web" cache-name="sso" reauthenticate="false"/>
</virtual-server>
</subsystem>

Onde:

  • <url_virtual_host_fluig>: é a URL definida no Apache para acessar o Fluig;
  • <porta_virtual_host_fluig>: é a porta definida no Apache para acessar o Fluig.