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: 14.632 ]

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

Instalando seu Quake III Arena no Linux

Instalação de um servidor de mensagens instantâneas Openfire na sua rede com clientes Microsoft Windows e cliente Jabber Exodus

Monitorando automaticamente o Docker com Zabbix

MySQL e PHPMyAdmin no Slackware

Instalando Carraro DashBoard

  
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