Siga com atenção antes as instruções descritas em Balanceamento de carga, alta disponibilidade e tolerância falha - cluster

Considerações iniciais

A configuração em Load Balance é a forma mais simples de se conseguir uma distribuição de carga e algum nível de alta disponibilidade.

A grande desvantagem é a necessidade de afinidade de sessão, ou seja, uma vez que o usuário logou acessando em uma instância, sempre será direcionado para a mesma instância (se essa instância cair, terá que logar novamente).

 

Instalando a primeira instância

Faça uma instalação normal, conforme Guia de instalação fluig. Mas não inicie o fluig ainda.

Abra em um editor de texto o arquivo FLUIG_HOME/appserver/domain/configuration/domain.xml e altere algumas configurações:

  1. Encontre a propriedade de binding "java:global/wcm/globalDataDir" e altere para apontar para a pasta compartilhada entre as instâncias;

    <simple name="java:global/wcm/globalDataDir" value="GLOBAL_DATA_DIR/wcmdir"/>
  2. Encontre o subsystem "urn:com.totvs.technology.wcm:1.0" e altere para apontar para a pasta compartilhada entre as instâncias;

    <subsystem xmlns="urn:com.totvs.technology.wcm:1.0" dir="GLOBAL_DATA_DIR/apps" refresh="15"/>

Abra em um editor de texto o arquivo FLUIG_HOME/repository/wcmdir/config/configuration.properties e altere algumas configurações:

  1. Encontre a chave "wcm/cacheServerAddress" e altere o valor para apontar para o servidor de cache configurado conforme recomendação [TODO: por Link].
  1. Mova o conteúdo da pasta FLUIG_HOME/repository/wcmdir para a pasta GLOBAL_DATA_DIR/wcmdir
  2. Mova o conteúdo da pasta FLUIG_HOME/appserver/apps para a pasta GLOBAL_DATA_DIR/apps.

Configure o fluig Indexer (Solr) para ser executado em servidor separado, confome instruções aqui.

  1. Inicie os serviços do cache, fluig_Indexer e fluig_RealTime e em seguida inicie o fluig.
  2. Acesse o fluig com o usuário "wcmadmin", crie o tenant e faça as configurações necessárias.
  3. Derrube o fluig e os serviços do fluig_RealTimefluig_Indexer e do cache.

 

Criando uma segunda instância na mesma instalação

O fluig permite executar uma segunda instância na mesma instalação, ou seja, sem a necessidade de instalar tudo novamente.

Abra em um editor de texto o arquivo FLUIG_HOME/appserver/domain/configuration/host.xml. Procure pela tag <servers>, dentro uma tag <server>. Adicione uma nova tag <server>, conforme exemplo:

        <server auto-start="true" group="fluig" name="fluig2">
            <socket-bindings port-offset="150" socket-binding-group="full-sockets"/>
            <jvm name="default">
                <heap max-size="4g" size="2g"/>
                <jvm-options>
                    <option value="-Dfile.encoding=utf8"/>
                    <option value="-Djsse.enableSNIExtension=false"/>
                    <option value="-XX:MaxMetaspaceSize=512m"/>
                    <option value="-Djavamelody.disabled=true"/>
                </jvm-options>
            </jvm>
        </server>

Certifique-se que o atributo "name" contenha um valor que nunca se repita em outra instância. A primeira instância sempre se chamará "fluig1", as demais são livres os nomes.

O atributo "auto-start" indica se a instância deve ser iniciada imediatamente quando o fluig for iniciado. Se informado "false", será preciso iniciá-la manualmente posteriormente usando o painel de controle do servidor de aplicação.

Caso desejar ou for necessário, altere o atributo "port-offset" da tag "socket-bindings". Cada nova instância precisa de um valor diferente (múltiplos de 150 são uma boa indicação).

Ajuste as configurações de memória na tag "heap".


É possível adicionar mais instâncias na mesma instalação. Basta replicar toda a seção "<server>" e tomar o cuidado de alterar pelo menos os atributos "port-offset" e "name".

 

Criando uma instância em outra máquina

Instale a aplicação pelo procedimento normal e siga as instruções até o procedimento antes de iniciar o servidor.

Abra em um editor de texto o arquivo FLUIG_HOME/appserver/domain/configuration/host.xml. Procure pela tag <servers>, dentro há uma tag <server>. Altere o atributo "name" dessa tag. O valor desse atributo precisa ser diferente em cada instância.



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.

 

 

 

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

猼慰瑳汹㵥昢湯⵴慦業祬洺湯獯慰散㸢猼慰瑳汹㵥昢湯⵴敷杩瑨戺汯㭤潣潬㩲㔣昴晦㭦慢正牧畯摮挭汯牯⌺晦晦晦∻☾瑬猻捯敫⵴楢摮湩獧㰠猯慰㹮猼慰瑳汹㵥昢湯⵴敷杩瑨戺汯㭤潣潬㩲㔣昴㕦㬴慢正牧畯摮挭汯牯⌺晦晦晦∻瀾牯⵴景獦瑥⼼灳湡㰾灳湡猠祴敬∽潣潬㩲〣〰〰㬰慢正牧畯摮挭汯牯⌺晦晦晦∻㴾⼼灳湡㰾灳湡猠祴敬∽潦瑮眭楥桧㩴潢摬挻汯牯⌺晦㐵晦戻捡杫潲湵ⵤ潣潬㩲昣晦晦㭦㸢ㄢ〵㰢猯慰㹮猼慰瑳汹㵥昢湯⵴敷杩瑨戺汯㭤潣潬㩲㔣昴晦㭦慢正牧畯摮挭汯牯⌺晦晦晦∻‾⼼灳湡㰾灳湡猠祴敬∽潦瑮眭楥桧㩴潢摬挻汯牯⌺㐵晦㐵戻捡杫潲湵ⵤ潣潬㩲昣晦晦㭦㸢潳正瑥戭湩楤杮札潲灵⼼灳湡㰾灳湡猠祴敬∽潣潬㩲〣〰〰㬰慢正牧畯摮挭汯牯⌺晦晦晦∻㴾⼼灳湡㰾灳湡猠祴敬∽潦瑮眭楥桧㩴潢摬挻汯牯⌺晦㐵晦戻捡杫潲湵ⵤ潣潬㩲昣晦晦㭦㸢昢汵⵬慨猭捯敫獴㰢猯慰㹮猼慰瑳汹㵥昢湯⵴敷杩瑨戺汯㭤潣潬㩲㔣昴晦㭦慢正牧畯摮挭汯牯⌺晦晦晦∻⼾朦㭴⼼灳湡㰾牢㰾猯慰㹮