Compartilhamento de tecnologia

Haproxy constrói cluster web

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1: Análise de caso

1: Visão geral do caso

2: Conhecimento pré-caso

3: Ambiente do caso

2: Implementação do caso

1: Compile e instale o servidor nginx (as etapas para os dois sites nginx são exatamente as mesmas, apenas a página de teste é diferente)

[root@localhost ~]# yum -y instalar pcre-devel zlib-devel gcc*

[root@localhost ~]# useradd -M -s /sbin/nologin nginx

[root@localhost ~]# tar zxvf nginx-1.12.0.tar.gz

[root@localhost ~]# cd nginx-1.12.0/

[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

[root@localhost nginx-1.12.0]# fazer && fazer instalar

[root@localhost nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

[root@localhost nginx-1.12.0]# cd /usr/local/nginx/html/0

[root@localhost html]# echo "teste web01" > teste.html

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# nginx -t

[root@localhost ~]# nginx ##Inicie o processo nginx

[root@localhost ~]# netstat -anpt | grep nginx

2: Compile e instale o Haproxy

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# setenforce 0

[root@localhost ~]# yum -y instalar pcre-devel bzip2-devel gcc*

[root@localhost ~]# tar zxvf haproxy-1.5.19.tar.gz

[root@localhost ~]# cd haproxy-1.5.19/

[root@localhost haproxy-1.5.19]# faça TARGET=linux26

[root@localhost haproxy-1.5.19]# fazer instalação

Observação:

linux22 para Linux 2.2

linux24 para Linux 2.4 e superior (padrão)

linux24e para Linux 2.4 com suporte para um epoll funcional (> 0,21)

linux26 para Linux 2.6 e superior

solaris para Solaris 8 ou 10 (outros não testados)

freebsd para FreeBSD 5 a 8.0 (outros não testados)

openbsd para OpenBSD 3.1 a 4.6 (outros não testados)

cygwin para Cygwin

genérico para qualquer outro sistema operacional.

personalizado para ajustar manualmente cada configuração

3: Configuração do servidor Haproxy

(1) Criar arquivo de configuração haproxy

[root@localhost haproxy-1.5.19]# mkdir /etc/haproxy

[root@localhost haproxy-1.5.19]# exemplos de cp/haproxy.cfg /etc/haproxy/

(2) Criar script de serviço

[root@localhost haproxy-1.5.19]# exemplos de cp/haproxy.init /etc/init.d/haproxy

[root@localhost haproxy-1.5.19]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

[root@localhost haproxy-1.5.19]# chmod +x /etc/init.d/haproxy

[root@localhost ~]# chkconfig --add haproxy

(3) Introdução à configuração Haproxy

[root@localhost haproxy-1.5.19]# vi /etc/haproxy/haproxy.cfg

global

registro 127.0.0.1 local0

log 127.0.0.1 local1 aviso

#log loghost local0 informações

maxcon 4096

uid 99

guia 99

demônio

#depurar

#quieto

padrões

registro global

modo http

opção httplog

opção dontlognull

3 tentativas

# reexpedir

Maxcon 2000

contimeout 5000

tempo limite 50000

tempo limite srv 50000

ouvir webcluster 0.0.0.0:80

opção httpchk GET /index.html

equilíbrio roundrobin

servidor inst1 192.168.1.61:80 verificar inter 2000 queda 3

servidor inst2 192.168.1.62:80 verificar inter 2000 queda 3

Você pode adicionar peso após cada servidor para definir o valor do peso.

servidor inst1 192.168.1.61:80 verificar inter 2000 queda 3peso 1

servidor inst2 192.168.1.62:80 verificar inter 2000 queda 3peso 2

Explicação de cada afirmação

global

registro 127.0.0.1 local0 \configurar o registro,local0É o dispositivo de log, o padrão é o log do sistema

log 127.0.0.1 local1 aviso \O nível de registro éperceber

#log loghost local0 informações

maxconn 4096 \Número máximo de conexões

uid 99 \do utilizadoruid

guia 99 \do utilizadorcerto

daemon \Executar como um processo daemon

#depurar \Modo de depuração, saída de informações de inicialização para saída padrão

#quieto \Modo silencioso, sem saída na inicialização

padrões

registro global \usargloballog definido em

modo http \O modo éhttp

opção httplog \usarhttpO formato do registro

opção dontlognull \garantirHAProxyNão registre os pacotes de pulsação enviados pelo balanceador de carga de nível superior para detectar dados de status.

novas tentativas 3 \Verifique o número de falhas de conexão do nó, que excede3O nó é considerado indisponível

  # reexpedir\quando carregarQuando o valor for muito alto, as conexões que foram processadas na fila atual por muito tempo serão encerradas automaticamente.

maxconn 2000 \Número máximo de conexões

contimeout 5000 \Tempo limite de conexãoEM

tempo limite 50000Tempo limite do clienteEM

tempo limite srv 50000Tempo limite do servidorEM

ouvir webcluster 0.0.0.0:80 \Definir cluster e números de porta de escuta

opção httpchk GET /index.html \Verifique o servidoríndice.htmldocumento,Configurações de URL de detecção de pulsação

equilíbrio roundrobin \O algoritmo de agendamento de balanceamento de carga é round robin

servidor inst1 192.168.1.61:80 verificar inter 2000 queda 3 \Definir nós online

servidor inst2 192.168.1.62:80 verificar inter 2000 queda 3

verificar inter 2000é detectar a frequência dos batimentos cardíacos (a cada2000msDetectado uma vez),queda 3sim3O servidor é considerado indisponível em caso de falha

Na nova versão, as configurações de timeout foram ajustadas, conforme segue:

contimeout é substituído por timeout connect:Defina o período de tempo limite que o haproxy aguarda para encaminhar solicitações do cliente para o servidor back-end

clitimeout é substituído por cliente de tempo limite:O período de tempo limite para inatividade do cliente é o tempo que leva para o aplicativo se conectar ao haproxy

srvtimeout é substituído por servidor de tempo limite:Depois que o cliente estabelece uma conexão com o servidor, o tempo limite de espera do servidor é o tempo que leva para o haproxy se conectar ao servidor web back-end.

Observação:

haproxyExistem oito algoritmos de escalonamento

    1. equilíbrio leastconnNúmero mínimo de conexões
    2. equilíbrio roundrobinvotação
    3. fonte de equilíbrioDe acordo com o clientePropriedade IntelectualComo fazer hash
    4. estático-rrDe acordo com o peso
    5. vocêa pedidoURI
    6. url_parama pedidoURL (URL)parâmetro
    7. hdr(nome)de acordo comHTTPsolicitar cabeçalho para bloquear cada vezHTTPperguntar
    8. rdp-cookie(nome)de acordo combiscoito(nome)para bloquear e hash sempreTCPperguntar

chroot /usr/compartilhar/haproxy \Isso é para alterar o local do diretório raiz referenciado quando o programa é executado. Se você tiver esse código, será necessário criar esse diretório.

Sobre níveis de registro

Nível estático DEBUG

DEBUG Level aponta que eventos de informações refinadas são muito úteis para depuração de aplicativos.

Nível estático INFO

O nível INFO indica que a mensagem destaca o processo em execução do aplicativo em um nível granular.

Nível estático WARN

O nível WARN indica uma situação de erro potencial.

Nível estático ERRO

O nível ERROR indica que embora ocorra um evento de erro, ele ainda não afeta a operação contínua do sistema.

Nível estático FATAL

O nível FATAL indica que cada evento de erro grave fará com que o aplicativo seja encerrado.

Além disso, existem dois níveis de registro especiais disponíveis:

Nível estático TODOS

ALL Level é o nível mais baixo e é usado para ativar todos os registros.

Nível estático DESLIGADO

OFF Level é o nível mais alto e é usado para desligar todos os registros.

4: Iniciar

[root@localhost haproxy-1.5.19]# /etc/init.d/haproxy iniciar

5: Teste o cluster da web

http://192.168.1.60/teste.html

Atualize a página para testar

ou teste usando script

[root@localhost ~]# para i em $(seq 10); faça curl http://192.168.1.60/test.html ;feito

6: Registro Haproxy

O Haproxy não registra logs por padrão. Além de especificar a saída do log na seção global em haproxy.conf, você também precisa configurar o arquivo de configuração de log do sistema.

método um:

[root@localhost haproxy-1.4.24]# vi /etc/haproxy/haproxy.cfg

global

# registro 127.0.0.1 local0

# log 127.0.0.1 local1 aviso

#log loghost local0 informações

maxcon 4096

chroot /usr/compartilhar/haproxy

uid 99

guia 99

demônio

#depurar

#quieto

log /dev/log local0 informações

log /dev/log local0 aviso

[root@localhost haproxy-1.4.24]# toque em /etc/rsyslog.d/haproxy.conf

[root@localhost haproxy-1.4.24]# vi /etc/rsyslog.d/haproxy.conf

se ($programname == 'haproxy' e $syslogseverity-text == 'info') então -/var/log/haproxy/haproxy-info.log

& ~

se ($programname == 'haproxy' e $syslogseverity-text == 'notice') então -/var/log/haproxy/haproxy-notice.log

& ~

[root@localhost haproxy-1.4.24]# serviço rsyslog reiniciar

[root@localhost ~]#/etc/init.d/haproxy reiniciar

[root@localhost ~]# cat /var/log/haproxy/haproxy-info.log

Método dois:

(1) Edite /etc/haproxy/haproxy.conf

[root@localhost ~]# vi /etc/haproxy/haproxy.cfg

global

registro 127.0.0.1 local3

#local3 é o dispositivo, correspondente à configuração em /etc/rsyslog.conf, e o nível de informações do log é reciclado por padrão.

(2) Escreva o arquivo de log haproxy

[root@localhost ~]# vim /etc/rsyslog.d/haproxy.conf

$ModLoad imudp

$UDPServerRun 514

local3.* /var/log/haproxy.log

&~

Observação:

$ModLoad imudpProtocolo UDP para coleta de logs

$UDPServerRun 514Especifique o número da porta usada para coleta de logs

local3.* /var/log/haproxy.logEspecifique o local de armazenamento de log

(3) Configure o arquivo de configuração principal do rsyslog e habilite o registro remoto (opcional)

[root@localhost ~]# vim /etc/sysconfig/rsyslog

OPÇÕES_SYSLOGD=”-c 2 -r -m 0″

#-c 2 Use o modo de compatibilidade, o padrão é -c 5

#-r Ativar registro remoto

#-m 0 marca carimbo de data/hora.A unidade é minutos. Quando é 0, significa que a função está desabilitada.

(4) Reinicie os serviços haproxy e rsyslog

[root@localhost ~]# systemctl reiniciar rsyslog

[root@localhost ~]# systemctl reiniciar haproxy

(5) Verifique o log depois de visitar o site

[root@localhost ~]# gato /var/log/haproxy.log

Extensão: proxy mysql

ouvir mysql 0.0.0.0:3306

servidor mysql1 192.168.10.205:3306 verificar porta 3306 maxconn 300