NGINX Open Source com Balanceamento de Carga e Persistência de Sessão

Atualmente, a maioria dos sistemas disponíveis na Internet são críticos e precisam ficar online todo o tempo. O Balanceamento de Carga é uma opção para que os serviços fiquem disponíveis com uma Alta Disponibilidade e o NGINX Open Source se mostra uma excelente escolha para tal cenário.

[ Hits: 13.623 ]

Por: Fabiano Furtado em 29/09/2016


Aumentando a segurança



Seguem algumas dicas para aumentarmos a segurança desta configuração proposta:
  • Utilizar um hash único para cada nome de backend nas diretivas map e split_clients ao invés dos nomes reais dos servidores backend. Como exemplo podemos substituir o nome backend1 por 5C1ED1EB3AC25804C4DB999FB7ADAD4C;
  • Utilização do cookie HttpOnly[11].

Vantagens e desvantagens desta proposta

Vantagens:
  • Utilização do NGINX[1] Open Source sem a necessidade de realizar a compilação de módulos de terceiros, aumentando a segurança e estabilidade deste serviço crítico;
  • Os servidores backend não precisam ser reconfigurados para utilizar este cenário;
  • Os nomes dos servidores backend podem ser trocados por hashes distintos, melhorando a segurança do ambiente;

Desvantagens:
  • A diretiva split_clients não faz o balanceamento exato dos clientes, pois é baseada em uma função randômica do sistema operacional, mas cumpre bem a sua função quando há uma grande quantidade de clientes se conectando;
  • Dependendo do objetivo, a configuração fica onerosa para colocar um servidor backend em manutenção;

NGINX Plus

O módulo sticky já vem por padrão na versão comercial do NGINX chamada de NGINX Plus[12]. Este módulo[13] consegue desempenhar a função de persistência de sessão com a desvantagem de ter que se obter uma licença comercial.

Conclusão

A partir da versão 1.7.2 do NGINX Open Source, podemos fazer LB com persistência de sessão de forma eficiente sem a utilização de módulos de terceiros. Por se tratar de um serviço crítico que pode ser disponibilizado na Internet, a utilização do NGINX sem a compilação de módulos adicionais tende a melhorar a estabilidade e segurança deste serviço.

Referências Bibliográficas


Página anterior    

Páginas do artigo
   1. Introdução
   2. Primeiro acesso do cliente: recebendo o cookie "route" do servidor
   3. Colocando o servidor backend em manutenção: Minimizando a perda de sessão
   4. Aumentando a segurança
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Encarando o DGuitar

A Vida em Preto e Branco I - Pebrot, MSN em modo texto

Usando o Linux como um studio de gravação (parte 1)

VirtualBox 2.1.0: Rede no VirtualBox agora é fácil!

Garantindo o funcionamento de serviços com o restartd

  
Comentários
[1] Comentário enviado por mpsnet em 30/09/2016 - 10:42h

Parabéns pelo artigo.
Pretendo utilizar seu artigo para aprimorar meu sistema. Mas desculpe minha ignorância;
- como configuro os outros backends (tem que instalar o nginx neles) ?
- como faço para configurar/gerar o hash nos backends ?

Grato

[2] Comentário enviado por fusca em 30/09/2016 - 13:06h

Obrigado mpsnet!

Olha... não existe ignorância. Ninguém nasce sabendo de nada. Basta um pouco de estudo, dedicação e compromisso com aquilo que se deseja alcançar que a sabedoria aparece.

Sobre a primeira pergunta, os backends não precisam do NGINX. Por se tratar de um proxy reverso, somente a borda precisa dele instalado. No NGINX, basta colocar mais backend na conf, exemplo... backend3, backend4, ....

Em relação à outra dúvida, o HASH é utilizado para "esconder" o nome real dos seus backends. Você pode usar qualquer nome (exemplo: b1, b2, b3, ...), mas, por questões de segurança, sugiro você usar um HASH, pois o mesmo aparece no cookie enviado para o cliente. No Linux, vc pode usar o comando "sha1sum" ou "sha224sum" ou "sha256sum" ou "sha384sum" ou "sha512sum" para gerar o HASH.

Espero ter ajudado.


[1] Comentário enviado por mpsnet em 30/09/2016 - 10:42h

Parabéns pelo artigo.
Pretendo utilizar seu artigo para aprimorar meu sistema. Mas desculpe minha ignorância;
- como configuro os outros backends (tem que instalar o nginx neles) ?
- como faço para configurar/gerar o hash nos backends ?

Grato

[3] Comentário enviado por mpsnet em 30/09/2016 - 13:37h

Ajudou sim
Obrigado

[4] Comentário enviado por rdgovieira em 16/06/2018 - 13:24h

Muito bom o artigo, consegui entender e aplicar na minha infraestrutura com sucesso.
Muito obrigado!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts