Haproxy coopera com Nginx para construir um experimento de cluster da web

Um, agendador de cluster da web comum

No momento, o agendador de cluster da Web comum é dividido em software e hardware. O
software geralmente usa o código aberto LVS, Haproxy, Nginx
LVS, que tem o melhor desempenho, mas a construção é relativamente complicada; o módulo upstream do Nginx suporta o cluster função, mas a função de verificação de integridade do nó do cluster não é forte. Alta simultaneidade não é tão boa quanto Haproxy. O
hardware geralmente usado é F5, e muitas pessoas usam produtos domésticos, como Barracuda e NSFOCUS

Dois, análise de aplicativo Haproxy

O LVS tem uma forte capacidade anti-carregamento em aplicativos corporativos, mas existem algumas deficiências. O
LVS não oferece suporte ao processamento regular e não pode alcançar a separação dinâmica e estática.
Para grandes sites, a implementação e configuração do LVS são complexas e o sucesso da manutenção é relativamente alto.
Haproxy é um sistema de balanceamento de carga de alta disponibilidade. E software proxy baseado em aplicativos TCP e HTTP,
adequado para sites da Web muito carregados,
rodando em hardware, suportando dezenas de milhares de solicitações de conexão simultâneas

Três, princípio do algoritmo de escalonamento Haproxy

Haproxy suporta uma variedade de algoritmos de agendamento, os mais comumente usados ​​são três tipos de
RR (Round Robin). O
algoritmo RR é o algoritmo mais simples e mais comumente usado, ou seja, algoritmo de número mínimo de conexão
LC (Least Connections) de agendamento round-robin
, que é dinâmico de acordo com o número de conexões de nó de back-end. Alocar solicitações de front-end.
SH (Source Hashing) é
baseado no algoritmo de agendamento de acesso à origem. É usado em alguns cenários onde as sessões de sessão são gravadas no lado do servidor. O agendamento de cluster pode ser feito com base no IP de origem, Cookie, etc.

Quarto, Haproxy constrói um cluster da web

1. Configure o ambiente

Servidor Haproxy: 192.168.200.11

Servidor Nginx: 192.168.200.12

Servidor Nginx: 192.168.200.13

Cliente: 192.168.200.14

2. Implante o servidor Haproxy

① Desligue o firewall e transfira os pacotes de software necessários Haproxy instalados para o diretório / opt

systemctl stop firewalld
setenforce 0

②Compile e instale o Haproxy

yum install -y pcre-devel bzip2-devel gcc gcc-c ++ make

cd / opt
tar zxvf haproxy-1.5.19.tar.gz
cd /haproxy-1.5.19
make TARGET = linux2628 ARCH = x86_64
make install

#### Descrição do parâmetro
TARGET = linux2628 #kernel version
#Use uname -r para visualizar o kernel, como 2.6.18-371.e15, então use TARGET = linux26 para este parâmetro; use TARGET = linux2628
ARCH = se o kernel é maior que 2.6.28 x86_64 #System bits, sistema de 64 bits
Insira a descrição da imagem aqui

③ Configuração do servidor haproxy

mkdir / etc / haproxy
cp examples / haproxy.cfg / etc / haproxy

cd / etc /
haproxy vim haproxy.cfg
global
## 4 ~ 5 modificação de linha, registro de log de configuração, local0 é o dispositivo de log, é armazenado no log do sistema por padrão
log / dev / log local0 info
log / dev / log local0 aviso
#log loghost local0 info
maxconn 4096 # Número máximo de conexões, restrições ulimit-n precisam ser consideradas
## Comentário de 8 linhas, caminho de execução do chroot, é o diretório raiz definido pelo serviço, geralmente esta linha precisa ser comentada
# chroot / usr / share / haproxy
uid 99
#User UID gid 99 #User GID
daemon # Log de
padrões do modoDaemon
global #Defina o log como a definição de log no
modo de configuração global http
#O modo é http opção httplog #Use o http log formato para registrar o log
opção dontlognull #Não registrar as
novas tentativas de informações de log de verificação de integridade 3 #Verifique o número de falhas do servidor de nó. Se falhar três vezes consecutivas, o nó será considerado indisponível.
redispatch #Quando a carga do servidor é muito alto, a fila atual encerrará automaticamente a conexão que
foi processada por um longo tempo maxconn 2000
# Número máximo de conexões contimeout 5000 # Tempo limite da conexão
clitimeout 50000 #Client timeout time
srvtimeout 50000 #Server timeout time
## Exclua todos os seguintes itens -, adicione
listen webcluster 0.0.0.0:80 #Define um aplicativo chamado appli4-backup
option httpchk GET /test.html #Verifique o servidor O teste .html file
balance roundrobin #O algoritmo de agendamento de balanceamento de carga usa o servidor roundrobin inst1 192.168.200.12:80 check inter 2000 fall 3 #Define o servidor de
nó online
inst2 192.168.200.13:80 check inter 2000 fall 3 #
Descrição do
parâmetro balance roundrobin
#Load Algoritmo de agendamento de equilíbrio # Algoritmo de monitoramento: roundrobin; algoritmo de conexão mínima: leastconn; algoritmo de agendamento de acesso à fonte: origem, semelhante à
verificação ip_hash do nginx entre 2000 # indica uma frequência de pulsação entre o servidor haproxy e a
queda de 3 # indica
se a frequência de pulsação não é detectada três vezes consecutivas, o nó é considerado inválido.Se o nó estiver configurado com "backup", significa que o nó é apenas um nó de backup, e o nó só vai subir quando o nó primário falhar. Sem "backup", significa que o nó mestre fornece serviços junto com outros nós mestre.
Insira a descrição da imagem aqui

④ Adicionar serviço de sistema haproxy

cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
chmod + x haproxy
chkconfig --add /etc/init.d/haproxy
ln -s / usr / local / sbin / haproxy / usr / sbin / haproxy

serviço haproxy start 或 /etc/init.d/haproxy start

3. Configure o servidor Nginx (dois idênticos)

#Nginx Roteiro

#! / bin / bash

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
# 安装 Nginx


#Instalação do pacote dependente do ambiente yum -y install pcre-devel zlib-devel gcc gcc-c ++ make


#Create running user, group useradd -M -s / sbin / nologin nginx

# 编译 安装
cd / opt
tar zxvf nginx-1.12.0.tar.gz
cd nginx-1.12.0 /
./configure
–prefix = / usr / local / nginx
–user = nginx
–group = nginx
–with-http_stub_status_module
make - j 2 && make install

# Caminho de otimização
ln -s / usr / local / nginx / sbin / * / usr / local / sbin

# 添加 Nginx 系统 服务
cat> /lib/systemd/system/nginx.service << EOF
[Unit]
Descrição = nginx
After = network.target
[Service]
Type = bifurcação
PIDFile = / usr / local / nginx / logs / nginx. pid
ExecStart = / usr / local / nginx / sbin / nginx
ExecReload = / bin / kill -1 $ MAINPID
ExecStop = / bin / kill -3 $ MAINPID PrivateTmp
= true
[Instalar]
WantedBy = multi-user.target
EOF

chmod 754 /lib/systemd/system/nginx.service

systemctl start nginx.service
systemctl enable nginx.service
systemctl start nginx.service
if [$? -eq 0]
then
echo "Serviço Nginx iniciado com sucesso"
else
echo "Serviço Nginx falhou ao iniciar"
fi
systemctl enable nginx.service

Instale o Nginx e digite /usr/local/nginx/html/test.html
Insira a descrição da imagem aqui

4. Teste

Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/weixin_51615030/article/details/113128901
Recomendado
Clasificación