Como configurar o Haproxy como balanceador de carga para o nginx no CentOS 8
- 4192
- 30
- Howard Fritsch
Para garantir a máxima disponibilidade de aplicativos da web, escalabilidade e alto desempenho, agora é comum implementar tecnologias que introduzem redundância, como agrupamento de servidores e balanceamento de carga. Por exemplo, configurando um cluster de servidores que executam os mesmos aplicativos e depois implantando o (s) balanceador (s) de carga (s) na frente deles para distribuir o tráfego.
Haproxy é uma alta disponibilidade de código aberto, poderoso, de alto desempenho, confiável, seguro e amplamente usado TCP/HTTP Balanceador de carga, servidor proxy e terminador SSL/TLS construído para sites de tráfego muito alto. Funciona de maneira confiável em Linux, Solaris, FreeBSD, OpenBSD bem como sistemas operacionais AIX.
Este guia mostra como configurar um balanceador de carga de alta disponibilidade dedicado com Haproxy sobre CENTOS 8 Para controlar o tráfego em um conjunto de Nginx Servidores da Web. Também demonstra como configurar SSL/TLS terminação em Haproxy.
Pré -requisitos:
Um total de 4 servidores com instalação mínima do CentOS 8.
Configuração do ambiente de teste
----------- Configuração do servidor Haproxy ----------- HA Proxy Server - HostName: Haproxy -Server.Tecmint.LAN; IP: 10.42.0.247 Domínio do local de teste: www.Tecmint.LAN ----------- Configuração de servidores da web cliente ----------- Servidor da web #1 - nome do host: webSrv1.Tecmint.LAN; IP: 10.42.0.200 servidor da web #2 - nome do host: websrv2.Tecmint.LAN; IP: 10.42.0.21 Web Server #3 - nome do host: WebSRV3.Tecmint.LAN; IP: 10.42.0.34
Etapa 1: Configurando o servidor HTTP nginx nas máquinas clientes
1. Faça login em todos os seus CENTOS 8 máquinas clientes e instalar o Nginx servidor da web usando o gerenciador de pacotes DNF, como mostrado.
# dnf install nginx
2. Em seguida, inicie o Nginx Serviço, por enquanto, permita que ele inicie automaticamente na inicialização do sistema e confirme que está em funcionamento verificando seu status, usando os comandos SystemCTL (faça isso em todas as máquinas clientes).
# SystemCtl Iniciar nginx # SystemCtl Ativar nginx # Systemctl Status nginx
3. Além disso, se o serviço Firewalld estiver em execução em todas as máquinas clientes (que você pode verificar executando o SystemCTL START Firewalld), você deve adicionar o Http e Https Serviços na configuração do firewall para permitir solicitações do balanceador de carga passam pelo firewall para o Nginx Servidores da Web. Então recarregue o Firewalld Serviço para efetuar as novas alterações (faça isso em todas as máquinas clientes).
# firewall-cmd-zone = public --permanent --add-service = http # firewall-cmd --zone = public --permanent --add-service = https # firewall-cmd--reload
4. Em seguida, abra um navegador da web em suas máquinas locais e teste se o Nginx A instalação está funcionando bem. Use os IPs do cliente para navegar, depois de ver o Nginx Página de teste, significa que o servidor da web instalado na máquina cliente está funcionando corretamente.
Teste a instalação do NGINX em todas as máquinas clientes do CentOS 85. Em seguida, precisamos criar páginas de teste nas máquinas clientes que usaremos posteriormente para testar o Haproxy configurar.
----------- Servidor da web #1 ----------- # cp/usr/share/nginx/html/index.html/usr/share/nginx/html/index.html.orig # echo "mostrando site da websrv1.Tecmint.LAN ">/usr/share/nginx/html/index.html ----------- Servidor da web #2 ----------- # cp/usr/share/nginx/html/index.html/usr/share/nginx/html/index.html.orig # echo "mostrando site da websrv2.Tecmint.LAN ">/usr/share/nginx/html/index.html ----------- Servidor da web #3 ----------- # cp/usr/share/nginx/html/index.html/usr/share/nginx/html/index.html.orig # echo "mostrando site da websrv3.Tecmint.LAN ">/usr/share/nginx/html/index.html
Etapa 2: Instalando e configurando o servidor Haproxy no CentOS 8
6. Agora instale o Haproxy pacote no Haproxy servidor executando o seguinte comando.
# dnf install haproxy
7. Em seguida, inicie o Haproxy Serviço, Ative-o para iniciar automaticamente na inicialização do sistema e verifique seu status.
# SystemCtl Iniciar haproxy # SystemCtl Ativar haproxy # SystemCtl Status HaProxyVerifique o status de haproxy no CentOS 8
8. Agora vamos configurar o haproxy usando o seguinte arquivo de configuração.
# vi/etc/haproxy/haproxy.cfg
O arquivo de configuração é dividido em quatro seções principais.
- Configurações globais - Define parâmetros em todo o processo.
- padrões - Esta seção define parâmetros padrão para todas as outras seções seguindo sua declaração.
- front-end - Esta seção descreve um conjunto de soquetes de escuta que aceitam conexões do cliente.
- Processo interno - Esta seção descreve um conjunto de servidores aos quais o proxy se conectará às conexões de entrada encaminhadas.
Para entender as opções em Configurações globais e padrões, Leia a documentação do Haproxy (link fornecido no final do artigo). Para este guia, usaremos os padrões.
Configurando o Loging Haproxy
9. Haproxy Quando implantado, desempenhará um papel significativo em sua infraestrutura de TI, configurando assim o registro para ele é um requisito básico; Isso permite que você obtenha informações sobre cada conexão com os servidores da Web de back -end.
O parâmetro de log (destacado na captura de tela a seguir) declara um global Syslog servidor (como rsyslog o padrão no CentOS) que receberá mensagens de log. Mais de um servidor pode ser declarado aqui.
A configuração padrão aponta para o LocalHost (127.0.0.1) e Local2 é o código da instalação padrão usado para identificar as mensagens de log do Haproxy em rsyslog.
Parâmetro de log padrão do haproxy10. Em seguida, você precisa dizer o rsyslog servidor como receber e processar Haproxy mensagens de log. Abra o arquivo de configuração do RSYSLOG para /etc/rsyslog.conf ou criar um novo arquivo dentro do /etc/rsyslog.d diretório, por exemplo /etc/rsyslog.D/Haproxy.conf.
# vi /etc /rsyslog.D/Haproxy.conf
Copie e cole a seguinte configuração para coletar log com UDP Na porta padrão 514.
$ Modload imudp $ udpServeraddress 127.0.0.1 $ UDPSERVERRUN 514
Adicione também essas linhas para instruir rsyslog Para escrever em dois arquivos de log separados com base na gravidade, onde Local2 é o código da instalação definido na configuração Haproxy acima.
Local2.*/var/log/haproxy-traffic.Log Local2.aviso/var/log/haproxy-admin.registro
11. Salve o arquivo e feche-o. Em seguida, reinicie o rsyslog Serviço para aplicar as mudanças recentes.
# SystemCtl Reiniciar rsysLog
Configurando o front-end e back-ends do Haproxy
12. Nesta seção, demonstraremos como configurar os proxies front-end e back-end. Voltar para o Haproxy Arquivo de configuração e modifique as seções de front-end e back-end padrão da seguinte forma, da seguinte forma. Não entraremos em uma explicação detalhada de cada parâmetro, você sempre pode consultar a documentação oficial.
A configuração a seguir define um ouvir seção usada para servir o HAPROXY STATS página. O vincular O parâmetro atribui um ouvinte a um determinado endereço IP (*
para todos neste caso) e porta (9000).
As estatísticas habilitar A configuração permite a página de estatísticas que serão acessadas usando o URI /STATS (eu.e http: // server_ip: 9000/estatísticas
).
As estatísticas Auth A configuração é usada para adicionar uma autenticação básica ao acessar a página (substitua Haproxy e [Email protegido] com um nome de usuário e senha de sua escolha).
Ouça as estatísticas Bind *: 9000 estatísticas Ativar estatísticas estatísticas de oculto-versão URI /STATS STATS Admin se estatísticas de localhost STATS AUTH HAPROXY: [Email Protected]
13. A próxima configuração define uma seção de front -end chamada Tl (você pode dar um nome ao seu gosto). O modo O parâmetro define o modo que o Haproxy opera em.
O ACL (Lista de controle de acesso) O parâmetro é usado para tomar uma decisão com base no conteúdo extraído da solicitação. Neste exemplo, o pedido é considerado claro Http Se não for feito Ssl.
Então o HTTP-REQUEST CAPETO A configuração é usada para adicionar um cabeçalho HTTP à solicitação. Isso ajuda a informar Nginx que o pedido inicial foi feito sobre Http (ou via porta 80).
O default_backend ou use_backend a diretiva define os servidores de back -end, neste caso, referenciados por Tl_web_servers.
Observe que Haproxy Vai retornar um “503 Erro indisponível de serviço“Se uma solicitação não for roteada por um use_backend ou default_backend diretivo.
frontend tl bind *: 80 modos http acl http ssl_fc, não http-request cetweer x forwarded-protocol http se http default_backend tl_web_servers
14. Então precisamos definir uma seção de back -end onde o equilíbrio A configuração define como Haproxy Seleciona os servidores de back-end para processar uma solicitação se nenhum método de persistência substituir essa seleção.
O biscoito Diretiva Ativa à base de biscoitos persistência, instrui Haproxy Para enviar um biscoito chamado ServerID para o cliente e associá -lo ao EU IA do servidor que deu a resposta inicial.
O servidor A diretiva é usada para definir os servidores a montante no formato Sever_name (e.g WebSrv1), Server_ip: porta e opções.
Uma opção chave é verificar que diz Haproxy Para continuar checando a disponibilidade de um servidor e relatório na página de estatísticas.
back -end tl_web_servers Modo http balance redondrobin opção httpchk cabeça / cookie serveruid inserir indireto nocache server webSrv1 10.42.0.200: 80 cookie websrv1 check server webSrv2 10.42.0.21:80 Cookie WebSrv2 Verifique o servidor WebSRV3 10.42.0.34:80 Cookie webSrv3 Verificação
Comente qualquer outra seção de front -end e back -end, conforme mostrado na captura de tela que segue. Salve o arquivo e feche-o.
Configurando o front-end e back-ends do Haproxy15. Agora reinicie o Haproxy Serviço para aplicar as novas mudanças.
# SystemCtl Reiniciar haproxy
16. Em seguida, verifique se o Http (porta 80) e Https (porta 433) Os serviços são abertos no firewall para aceitar solicitações de clientes da seguinte forma. Além disso, porta aberta 9000 No firewall por acessar a página de estatísticas e recarregar as configurações do firewall.
# firewall-cmd-zone = public --permanent --add-service = http # firewall-cmd --zone = public --permanent -add-service = https # firewall-cmd-zone = public --permanent- -Add-port = 9000/tcp # firewall-cmd--reload
Etapa 3: Testando a configuração do haproxy e as estatísticas de visualização
17. Agora é hora de testar o HAPRXOY configurar. Na máquina de desktop local de onde você está acessando todos os servidores, adicione a seguinte linha no /etc/hosts arquivo para nos permitir usar o domínio do site fictício.
10.42.0.247 www.Tecmint.LAN
18. Em seguida, abra um navegador e navegue usando o endereço do servidor ou o domínio do site.
http: // 10.42.0.247/ou http: // www.Tecmint.lan/Verifique a configuração do haproxy
19. Para acessar o Haproxy Página de estatísticas, use o seguinte endereço.
http: // 10.42.0.247: 9000/estatísticas
Em seguida, use o nome de usuário e a senha que você definiu no arquivo de configuração do Haproxy (consulte o parâmetro de autenticação das estatísticas).
Página de login de estatísticas HaproxyApós um login bem -sucedido, você pousará no Haproxy Página de estatísticas que mostra métricas que cobrem a saúde de seus servidores, taxas de solicitação atuais, tempos de resposta e muito mais.
Para demonstrar como o relatório de status funciona sobre os códigos de cores funcionam, colocamos um dos servidores de back-end.
Relatório de estatísticas de HaproxyEtapa 4: Configurando HTTPs em Haproxy usando um certificado SSL autoassinado
20. Nesta seção final, demonstraremos como configurar SSL/TLS Para garantir todas as comunicações entre o servidor Haproxy e o cliente. Haproxy suporta quatro maiores Https modos de configuração, mas para este guia, usaremos SSL/TLS descarregamento.
Em SSL/TLS modo de descarga, Haproxy Decifra o tráfego no lado do cliente e fica conectado em tráfego claro aos servidores de back-end.
Vamos começar criando o certificado e chave Conforme mostrado (responda às perguntas de acordo com os detalhes da sua empresa durante a criação de certificado, conforme destacado na captura de tela).
# mkdir/etc/ssl/tecmint.LAN # CD/etc/SSL/Tecmint.LAN/ # OpenSSL Req -x509 -Nodes -Days 365 -NewKey RSA: 2048 -Keyout/etc/ssl/Tecmint.LAN.chave --out/etc/ssl/tecmint.LAN.CRT # CD/etc/SSL/TECMINT.LAN/ # CAT Tecmint.Crt Tecmint.Chave> Tecmint.PEM # LS -LCrie SSL para Haproxy
21. Em seguida, abra o Haproxy arquivo de configuração (/etc/haproxy/haproxy.cfg) e edite a seção front-end.
frontend tl bind *: 80 bind *: 443 ssl crt/etc/ssl/tecmint.LAN/TECMINT.Esquema de redirecionamento do PEM https se !ssl_fc modo http acl http ssl_fc, não acl https ssl_fc http-request cabeçalho x-forwarded-protocol httpppwsTPSTPSTBSFAUNTS _FTTPSTPSTPSFAUNTS DEFTTPSTPSTPSTPTPSTPSTPSTPSTPSTPSTPSTPTPS °Configure o front-end Haproxy com SSL
Salve o arquivo e feche-o.
22. Em seguida, reinicie o serviço Haproxy para aplicar as novas alterações.
# SystemCtl Reiniciar haproxy.serviço
23. Em seguida, abra um navegador da web e tente acessar o site mais uma vez. O navegador mostrará um erro por causa do certificado autoassinado, clique Avançado para prosseguir.
Erro de conexão SSL Haproxy Prossiga com a conexão Site de acesso ao HTTPSÉ tudo por agora! Todo aplicativo da web tem seu próprio conjunto de requisitos, você precisa projetar e configurar o balanceamento de carga para atender à sua infraestrutura de TI e requisitos do aplicativo.
Para obter mais informações sobre algumas das opções de configuração usadas neste guia e geralmente como usar Haproxy, Veja a documentação oficial da Haproxy Community Edition ou Haproxy Enterprise Version. Você pode postar quaisquer perguntas ou pensamentos através do formulário de feedback abaixo.
- « Como atualizar para o Ubuntu 20.04 do Ubuntu 18.04 e 19.10
- Como redefinir uma senha raiz esquecida no Fedora »