| Informações |
|---|
|
Esta página foi revisada para considerar as configurações de server do TOTVS Fluig Plataforma para a atualização 1.6.3 ou superiores. |
| Índice |
|---|
| outline | true |
|---|
| exclude | .*ndice |
|---|
| style | none |
|---|
|
Pré-requisitos
...
Para atualizar os parâmetros de configuração, deve-se obedecer aos seguintes pré-requisitos:
- O usuário deve ser administrador da plataforma;
- O usuário deve ter acesso aos arquivos de configuração da plataforma;
- Possuir o NGINX na versão 1.20.1 ou superior instalado. Detalhes de instalação e configuração do NGINX estão disponíveis na documentação oficial;
- Possuir a configuração de proxy reverso;
- Possuir o nginx-sticky-module-ng (módulo externo), para implementar o comportamento de sticky sessions sem o uso do Nginx NGINX Plus, esse . Esse procedimento só é necessário realizar na versão open-source do NginxNGINX.
| Aviso |
|---|
|
Antes de prosseguir com as instruções descritas nessa página, siga com atenção as instruções contidas na documentação Alta disponibilidade e Balanceamento de carga. |
Considerações iniciais
...
A configuração de balanceamento de carga (load balance) é a forma mais simples de se obter distribuição de carga e algum nível de alta disponibilidade.
| Nota |
|---|
|
Em ambientes com load balance, é muito importante manter todos os servidores com o horário sincronizado. |
A grande desvantagem é a necessidade de afinidade de sessão, ou seja, uma vez que o usuário foi autenticado em uma instância, sempre será direcionado para a mesma instância. Nesse caso, se essa instância ficar indisponível, o usuário terá que logar se autenticar novamente na aplicação.
Instalando a primeira instância
...
Siga os procedimentos abaixo para realizar a instalação da primeira instância do Fluig em um ambiente load balance.
| Deck of Cards |
|---|
|
| Card |
|---|
| default | true |
|---|
| id | 1 |
|---|
| label | Passo 1 |
|---|
|
|
| Card |
|---|
|
- Abra em um editor de texto o arquivo arquivo [diretório_instalação]/appserver/domain/configuration/domain.xml e em um editor de texto e altere as seguintes configurações:Localize
Localize ;. | Bloco de código |
|---|
| <subsystem xmlns="urn:com.totvs.technology.wcm:1.0" dir="GLOBAL_DATA_DIR/apps" refresh="15"/> |
|
| Card |
|---|
|
- Mova o conteúdo da pasta [diretório_instalação]/repository/wcmdir para a pasta GLOBAL_DATA_DIR/wcmdir.
- Mova o conteúdo da pasta [diretório_instalação]/appserver/apps para a pasta GLOBAL_DATA_DIR/apps.
|
| Card |
|---|
|
- Configure o servidor de indexação (fluig Fluig Indexer) para ser executado em servidor separado, conforme instruções aquiinstruções descritas em Servidor de indexação único.
|
| Card |
|---|
|
- Inicie os serviços fluig_Indexer, fluig_RealTime e e em seguida, inicie o fluig Fluig.
- Acesse a plataforma com o usuário "wcmadmin", crie uma nova empresa (tenant) e realize as configurações necessárias.
- Pare o fluig Fluig e os serviços do fluig_RealTime e fluig_Indexer.
|
|
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 |
|---|
| history | false |
|---|
| id | SecondInstance |
|---|
|
| Card |
|---|
| default | true |
|---|
| id | 1 |
|---|
| label | Passo 1 |
|---|
|
- Abra em um editor de texto o arquivo arquivo [diretório_instalação]/appserver/domain/configuration/host.xml em um editor de texto.
- Localize a tag <servers>. Dentro dela haverão existem tags chamadas <server>.
- Adicione uma nova tag <server>, conforme o exemplo:
| Bloco de código |
|---|
| language | xml |
|---|
| theme | Eclipse |
|---|
| title | host.xml |
|---|
| <server auto-start="false" group="fluig" name="fluig2">
<socket-bindings port-offset="150" socket-binding-group="full-sockets"/>
<jvm name="default">
<heap max-size="12g" size="4g"/>
<jvm-options>
<option value="-Dfile.encoding=utf8"/>
<option value="-Djsse.enableSNIExtension=false"/>
<option value="-XX:MaxMetaspaceSize=1024m"/>
<option value="-Djavamelody.disabled=true"/>
</jvm-options>
</jvm>
</server> |
|
| Card |
|---|
|
- Certifique-se de que o atributo name contenha um valor que jamais será repetido em outra instância.
- A primeira instância sempre deverá se chamar "fluig1", enquanto as demais instâncias podem ter qualquer nome definido.
|
| Card |
|---|
|
- O atributo auto-start indica se a instância deve (true) ou não (false) ser iniciada imediatamente quando o Fluig for iniciado. Se informado false, será preciso iniciá-la manualmente posteriormente, usando a ferramenta jboss-cli.
A recomendação é que a primeira instância seja iniciada sozinha e posteriomente posteriormente sejam iniciadas as demais instâncias.
|
| Card |
|---|
|
- Caso Se 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 |
|---|
|
- Ajuste as configurações de memória na tag heap.
|
|
...
As instâncias que forem configuradas para não iniciar automaticamente (auto-start="false"), devem ser iniciadas manualmente utilizando a ferramenta jboss-cli, que se encontra em [diretório_instalação]/appserver/bin, com o seguinte comandocomando abaixo, de acordo com o sistema operacional:No
no Linux:
| Bloco de código |
|---|
|
./jboss-cli.sh --controller="<ip-da-maquina>:9990" --connect --command="/host=master/server-config=fluig2:start" |
...
no Windows:
| Bloco de código |
|---|
|
jboss-cli.bat --controller="<ip-da-maquina>:9990" --connect --command="/host=master/server-config=fluig2:start" |
Onde <ipOnde <ip-da-maquina> é o endereço IP/hostname configurado no arquivo host.xml (localizado em [diretório_instalação]/appserver/domain/configuration), na seção:
| Bloco de código |
|---|
<interface name="management">
<inet-address value="192.168.2.3"/>
</interface> |
Criando uma instância em outra máquina
...
| Deck of Cards |
|---|
| history | false |
|---|
| id | ThirdInstance |
|---|
|
| Card |
|---|
|
- Instale a aplicação pelo procedimento normal e siga as instruções até o procedimento antes de iniciar o servidor.
|
| Card |
|---|
|
- Abra em um editor de texto o arquivo arquivo [diretório_instalação]/appserver/domain/configuration/host.xml em um editor de texto.
- Localize a tag <servers>. Dentro dela haverão existem tags chamadas <server>.
- Altere o atributo name dessas tags. O valor desse atributo precisa ser diferente em cada instância.
|
| Card |
|---|
|
- Abra em um editor de texto o arquivo arquivo [diretório_instalação]/appserver/domain/configuration/domain.xml e em um editor de texto e altere as seguintes configurações:Localize
Localize ;. | Bloco de código |
|---|
| <subsystem xmlns="urn:com.totvs.technology.wcm:1.0" dir="GLOBAL_DATA_DIR/apps" refresh="15"/> |
|
|
Configurando o balanceador
...
O Fluig homologa o Nginx NGINX com o upstream para fazer o balanceamento de carga.
| Deck of Cards |
|---|
|
| Card |
|---|
| default | true |
|---|
| id | 1 |
|---|
| label | Passo 1 |
|---|
|
- Instale o servidor Nginx NGINX, versão 1.20.1 ou superior.
|
| Card |
|---|
|
proxy_temp_file_write_size 64k;
}
}| Aviso |
|---|
| | - Cada “BalancerMember” indica um servidor e deve apontar para o IP e porta corretos.
Um cookie chamado “FLUIGCOOKIE” é criado para manter a afinidade da sessão. Sem o cookie, o procedimento não irá funcionar.proxy_temp_file_write_size 64k;
}
} |
| Card |
|---|
| id | 4 |
|---|
| label | Passo 4 |
|---|
| title | Load Balance RealTime |
|---|
| | Avisonote |
|---|
| O procedimento abaixo deve ser realizado para utilizar o serviço de Realtime em Load balance. |
Passos para usar o Load Balance do Realtime
|
| Card |
|---|
| id | 5 |
|---|
| label | Passo 5 |
|---|
| title | Load Balance Bloco completo |
|---|
|
| | collapse | true |
|---|
upstream mycluster {
server {Ip do servidor 1}:{PORTA};
server {Ip do servidor 2}:{PORTA};
server {Ip do servidor 3}:{PORTA};
sticky name=FLUIGCOOKIE expires=1h path=/ domain=.exemplo.com;
}
server {
listen 80;
server_name fluig.exemplo.com;
server_tokens off;
add_header 'Access-Control-Allow-Origin' 'http://mycluster';
add_header 'Access-Control-Allow-Methods' 'GET, PUT, POST, OPTIONS, DELETE';
add_header 'Access-Control-Request-Method' 'GET, PUT, POST, OPTIONS, DELETE';
add_header 'Access-Control-Allow-Headers' 'Content-Type, X-Requested-With, accept-version';
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
location / {
proxy_pass http://mycluster;
add_header Set-Cookie "FLUIGCOOKIE=$request_id.$upstream_addr; Path=/";
proxy_pass_request_headers on;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 880m;
client_body_buffer_size 256k;
proxy_connect_timeout 800;
proxy_send_timeout 800;
proxy_read_timeout 800;
proxy_buffer_size 8k;
proxy_buffers 8 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
upstream nodeCluster1 {
sticky name=SERVERID expires=1h path=/ domain=exemplo.com httponly;
server {ip_servidor_realtime1}:8888;
server {ip_servidor_realtime2}:8888;
}
server {
listen 8888;
add_header Set-Cookie "SERVERID=sticky.$upstream_cookie_SERVERID; Path=/";
location / {
proxy_pass http://nodeCluster1;
proxy_cookie_path / "/; HTTPOnly; Secure";
}
}
upstream nodes_polling {
sticky name=SERVERID expires=1h path=/ domain=exemplo.com httponly;
server {ip_servidor_realtime1}:7777;
server {ip_servidor_realtime2}:7777;
}
upstream nodes_ws {
sticky name=SERVERID expires=1h path=/ domain=exemplo.com httponly;
server {ip_servidor_realtime1}:7777;
server {ip_servidor_realtime2}:7777;
}
server {
listen 7777;
add_header Set-Cookie "SERVERID=sticky.$upstream_cookie_SERVERID; Path=/";
location / {
set $upstream "nodes_polling";
if ($http_upgrade = "websocket") {
set $upstream "nodes_ws";
}
proxy_pass http://$upstream;
}
} |
|
Ambiente
...
HTTPS
...
Quando o Fluig estiver configurado em httpsHTTPS, é necessário que as flags de segurança "Secure" e "HttpOnly" dos cookies estejam habilitadas na sessão. Para isso, siga a instrução abaixo:
...