Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Informações
titleAtenção

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

Deck of Cards
idFirstNode
Card
defaulttrue
id1
labelPasso 1

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

Card
id2
labelPasso 2

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;

    Bloco de código
    languagehtml/xml
    <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;

    Bloco de código
    languagehtml/xml
    <subsystem xmlns="urn:com.totvs.technology.wcm:1.0" dir="GLOBAL_DATA_DIR/apps" refresh="15"/>
Card
id3
labelPasso 3

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].
Card
id4
labelPasso 4
  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.
Card
id5
labelPasso 5

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

Card
id6
labelPasso 6
  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.

Deck of Cards
idSecondInstance
Card
defaulttrue
id1
labelPasso 1

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:

Bloco de código
languagexml
        <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>
Card
id2
labelPasso 2

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.

Card
id3
labelPasso 3

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.

Card
id4
labelPasso 4

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).

Card
id5
labelPasso 5

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

Deck of Cards
idThirdInstance
Card
id1
labelPasso 1

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

Card
id2
labelPasso 2

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 balanceador - mod_proxy

O fluig homologa o Apache com o módulo mod_proxy para fazer um balanceamento de carga.

Deck of Cards
idModProxy
Card
defaulttrue
id1
labelPasso 1

Instale o servidor HTTP Apache, versão 2.4.x.

Card
id2
labelPasso 2

Configure o Apache para carregar os módulos necessários (comumente feito através do arquivo /etc/apache2/mods-enabled/mod_proxy.load), conforme abaixo (Obs.: a ordem é extremamente importante):

 

Bloco de código
languagetext
LoadModule lbmethod_bybusyness_module /usr/lib/apache2/modules/mod_lbmethod_bybusyness.so
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule slotmem_shm_module /usr/lib/apache2/modules/mod_slotmem_shm.so
LoadModule proxy_balancer_module /usr/lib/apache2/modules/mod_proxy_balancer.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
Informações

A primeira linha indica o tipo de balanceamento que será feito. No exemplo, por carga do servidor. Há outras formas, consultar o manual do Apache aqui.

Card
id3
labelPasso 3

Habilite o mod_proxy (comumente feito criando o arquivo /etc/apache2/sites-enabled/mod_proxy.conf).

Bloco de código
languagexml
<VirtualHost *:80>
                ProxyRequests Off
                ProxyPreserveHost On

                <Proxy balancer://mycluster>
                        BalancerMember http://{ip servidor 1}:8080 route=fluig1
                        BalancerMember http://{ip servidor 1}:8230 route=fluig2
                        BalancerMember http://{ip servidor 2}:8230 route=fluig3

                </Proxy>

                <Location /balancer-manager>
                        SetHandler balancer-manager
                        Order Deny,Allow
                        Allow from all
                </Location>
                <Location />
                        Order allow,deny
                        Allow from all
                </Location>

                ProxyPass / balancer://mycluster/ stickysession=FLUIGCOOKIE nofailover=Off
                ProxyPassReverse / balancer://mycluster/
</VirtualHost>
Aviso
titleAtenção
  • Cada “BalancerMember” indica um servidor, deve apontar para o IP e porta corretos.
  • É criado um Cookie chamado “FLUIGCOOKIE”, usado para manter afinidade da sessão. Sem isso, não funciona.