Como usar o nginx como um balanceador de carga HTTP no Linux

Como usar o nginx como um balanceador de carga HTTP no Linux

Quando se trata de configurar vários servidores de aplicativos para redundância, o balanceamento de carga é um mecanismo comumente usado para distribuir com eficiência solicitações de serviço ou tráfego de rede em um grupo de servidores de back-end.

O balanceamento de carga tem várias vantagens, incluindo maior disponibilidade de aplicativos por meio de redundância, maior confiabilidade e escalabilidade (mais servidores podem ser adicionados na mistura quando o tráfego aumenta). Também traz um melhor desempenho de aplicativos e muitos outros benefícios.

Leitura recomendada: O guia final para proteger, endurecer e melhorar o desempenho do Nginx Web Server

Nginx pode ser implantado como eficiente Balancer de carga HTTP Para distribuir tráfego de rede e carga de trabalho entre um grupo de servidores de aplicativos, em cada caso retornando a resposta do servidor selecionado ao cliente apropriado.

Os métodos de balanceamento de carga suportados por Nginx são:

  • Round-robin - que distribuem solicitações aos servidores de aplicativos de maneira redonda. É usado por padrão quando nenhum método é especificado,
  • menos conectado - Atribui a próxima solicitação a um servidor menos ocupado (o servidor com o menor número de conexões ativas),
  • IP-Hash - Onde uma função de hash é usada para determinar qual servidor deve ser selecionado para a próxima solicitação com base no endereço IP do cliente. Este método permite a persistência da sessão (amarre um cliente a um servidor de aplicativos específico).

Além disso, você pode usar pesos do servidor para influenciar Nginx Algoritmos de balanceamento de carga em um nível mais avançado. Nginx também suporta verificações de saúde para marcar um servidor como falhado (por uma quantidade configurável de tempo, o padrão é 10 segundos) se sua resposta falhar com um erro, evita a escolha desse servidor para solicitações subsequentes de recebimento por algum tempo.

Este guia prático mostra como usar Nginx Como um Balancer de carga HTTP Para distribuir solicitações de clientes de entrada entre dois servidores, cada um com uma instância do mesmo aplicativo.

Para fins de teste, cada instância do aplicativo é rotulado (na interface do usuário) para indicar o servidor em que está executando.

Configuração do ambiente de teste

Balanceador de carga: 192.168.58.7 servidor de aplicativos 1: 192.168.58.5 servidor de aplicativos 2: 192.168.58.8 

Em cada servidor de aplicativos, cada instância do aplicativo está configurada para ser acessada usando o domínio TecmintApp.LAN. Supondo que este seja um domínio totalmente registrado, adicionaríamos o seguinte nas configurações do DNS.

Um recorde @ 192.168.58.7 

Este registro diz às solicitações do cliente em que o domínio deve direcionar, neste caso, o balanceador de carga (192.168.58.7). O DNS A Os registros aceitam apenas os valores IPv4. Alternativamente, o /etc/hosts O arquivo nas máquinas clientes também pode ser usado para fins de teste, com a seguinte entrada.

192.168.58.7 TECMINTAPP.LAN 

Configurando o balanceamento de carga nginx no Linux

Antes de configurar o balanceamento de carga Nginx, você deve instalar Nginx em seu servidor usando o gerenciador de pacotes padrão para sua distribuição, como mostrado.

$ sudo apt install nginx [on Debian/Ubuntu] $ sudo yum install nginx [on CENTOS/RHEL] 

Em seguida, crie um arquivo de bloco de servidor chamado /etc/nginx/conf.D/LoadBalancer.conf (Dê um nome de sua escolha).

$ sudo vi/etc/nginx/conf.D/LoadBalancer.conf 

Em seguida, copie e cole a seguinte configuração nele. Essa configuração é padrão para Round-Robin, pois nenhum método de balanceamento de carga é definido.

 Upstream back -end servidor 192.168.58.5; Servidor 192.168.58.8;  servidor Ouça 80 default_server; Ouça [::]: 80 default_server; Server_name TecmintApp.LAN; localização / proxy_redirect off; proxy_set_header x-real-ip $ remote_addr; proxy_set_header x forwarded para $ proxy_add_x_forwarded_for; proxy_set_header host $ http_host; proxy_pass http: // backend;  

Na configuração acima, o proxy_pass Diretiva (que deve ser especificada dentro de um local, / nesse caso) é usado para passar uma solicitação para os servidores proxiados http referenciados usando o back -end da palavra, no Diretiva Upstream (usado para definir um grupo de servidores). Além disso, os pedidos serão distribuídos entre os servidores usando um mecanismo de balanceamento de robina redonda ponderada.

Para empregar o menor mecanismo de conexão, use a seguinte configuração

back -end upstream MEINE_CONN; Servidor 192.168.58.5; Servidor 192.168.58.8;  

E para ativar ip_hash Mecanismo de persistência da sessão, uso:

back -end upstream ip_hash; Servidor 192.168.58.5; Servidor 192.168.58.8;  

Você também pode influenciar a decisão de balanceamento de carga usando o servidor pesos. Usando a seguinte configuração, se houver seis solicitações de clientes, o servidor de aplicativos 192.168.58.5 será atribuído 4 solicitações e 2 irão 192.168.58.8.

Upstream back -end servidor 192.168.58.5 peso = 4; Servidor 192.168.58.8;  

Salve o arquivo e saia. Em seguida, verifique se a estrutura de configuração do NGINX está correta após a adição das mudanças recentes, executando o seguinte comando.

$ sudo nginx -t 

Se a configuração estiver bem, reinicie e permitir que o serviço Nginx aplique as alterações.

$ sudo systemctl reiniciar nginx $ sudo systemctl atable nginx 

Testando o balanceamento de carga nginx no Linux

Para testar o Nginx Balanceamento de carga, abra um navegador da web e use o seguinte endereço para navegar.

http: // tecmintapp.LAN 

Depois que a interface do site carregar, tome nota da instância do aplicativo que carregou. Em seguida, atualize continuamente a página. Em algum momento, o aplicativo deve ser carregado do segundo servidor, indicando balanceamento de carga.

Verifique o balanceamento de carga nginx no Linux

Você acabou de aprender a se configurar Nginx Como um balanceador de carga HTTP no Linux. Gostaríamos de saber seus pensamentos sobre este guia, e especialmente sobre o emprego do Nginx como balanceador de carga, através do formulário de feedback abaixo. Para obter mais informações, consulte a documentação do NGINX sobre o uso do NGINX como um balanceador de carga HTTP.