índice
- Balanceamento de carga Nginx
-
- 1. O balanceamento de carga Nginx é dividido por camada
- 2. Cenário de configuração de balanceamento de carga Nginx
- 3. Sintaxe de configuração upstream do Nginx
- 4. O 7º andar do experimento de planejamento ambiental
- 5. Status do servidor back-end de balanceamento de carga Nginx
- 6. Algoritmo de agendamento de balanceamento de carga Nginx
- 7. Configure o balanceamento de carga de quatro camadas
Balanceamento de carga Nginx
O servidor da web está voltado diretamente para os usuários e muitas vezes precisa carregar um grande número de solicitações simultâneas. Um único servidor é difícil de carregar. Eu uso um cluster de servidor WEB e balanceamento de carga Nginx no front end. As solicitações são distribuídas para nosso back- clusters de servidor final para obter distribuição de balanceamento de carga. Assim, ele melhorará muito o rendimento do sistema, solicitará o desempenho e aumentará a tolerância a desastres.
Balanceamento de carga LB
SLB servidor lb
1. O balanceamento de carga Nginx é dividido por camada
1.2 Os cenários de aplicação de balanceamento de carga são divididos por camada:
1.2.1. Balanceamento de carga de quatro camadas
Endereço IP
TCP / UDP
Número da porta
1.2.2. Balanceamento de carga de sete camadas
HTTP
HTTPS
FTP
SMTP
2. Cenário de configuração de balanceamento de carga Nginx
O Nginx precisa usar a configuração do módulo proxy proxy_pass para obter o balanceamento de carga.
O balanceamento de carga Nginx serve para enviar solicitações do cliente para um conjunto de pools de serviços virtuais upstream
3. Sintaxe de configuração upstream do Nginx
Sintaxe : nome do upstream {…}
Padrão:-
Contexto : http
// exemplo de upstream
upstream backend {
server backend1.example.com weight=5;
server backend2.example.com:8080;
server unix:/tmp/backend3;
server backend1.example.com:8080 backup;
}
server {
location / {
proxy_pass http://backend;
}
}
4. O 7º andar do experimento de planejamento ambiental
Funções | Extranet | Intranet | Nome da CPU |
---|---|---|---|
LB1 | ens33 : 192.168.154.41 | ens32 : 172.168.20.12 | bl01 |
web1 | 192.168.154.132 | 172.168.20.6 | web01 |
web2 | 192.168.154.133 | 172.168.20.7 | web02 |
4.1.configuração web1
[root@web01 www1]# echo "hellow 172.168.20.6" > index.html
[root@web01 www1]# cat /etc/nginx/conf.d/www1.conf
server {
listen 80;
server_name yan.www.com;
access_log /html/www1/log/access.log;
error_log /html/www1/log/error.log;
location / {
root /html/www1/;
index index.html;
}
}
[root@web01 www1]# systemctl reload nginx
4.2.web02 configuração
[root@web02 www1]# echo "hellow 172.168.20.7" > index.html
[root@web01 www1]# cat /etc/nginx/conf.d/www1.conf
server {
listen 80;
server_name yan.www.com;
access_log /html/www1/log/access.log;
error_log /html/www1/log/error.log;
location / {
root /html/www1/;
index index.html;
}
}
[root@web02 www1]# systemctl reload nginx
4.3.LB01 configuração
[root@bl01 nginx]# cat proxy_params
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
[root@bl01 conf.d]# cat upstream.conf
upstream web {
#创建及群组
server 172.168.20.6;
server 172.168.20.7;
}
server {
listen 80;
server_name yan.www.com;
location / {
proxy_pass http://web;
include proxy_params; #调用及群组
}
}
[root@bl01 conf.d]# systemctl restart nginx
4.4. Verificação
Use um navegador para visitar yan.www.com e atualize constantemente o teste
5. Status do servidor back-end de balanceamento de carga Nginx
O status do servidor da web de back-end no agendador de carregamento Nginx de front-end
status | Visão geral |
---|---|
baixa | A exibição do servidor atual não participa do balanceamento de carga |
cópia de segurança | Servidor de backup reservado |
max_fails | Permitir o número de solicitações com falha |
fail_timeout | Depois que max_fails falha, o tempo de suspensão do serviço |
max_conns | Limite o número máximo de conexões aceitas |
Caso de teste:
1. Teste o estado inativo, teste se o servidor não participa da programação de balanceamento de carga
upstream load_pass {
server 172.168.20.6 down;
}
2.测试backup及down状态
upstream load_pass {
server 172.168.20.6 down;
server 172.168.20.7 backup;
server 172.168.20.6 max_fails=1 fail_timeout=2s;
}
location / {
proxy_pass http://load_pass;
include proxy_params;
}
3. Teste o número de max_fail e fail_timeout com falha e marque para baixo
upstream load_pass {
server 172.168.20.6;
server 172.168.20.7 max_fail=2 fail_timeout=10s;
}
4. Teste o número máximo de conexões TCP para max_conns
upstream load_pass {
server 172.168.20.6;
server 172.168.20.7 max_conns=1;
}
6. Algoritmo de agendamento de balanceamento de carga Nginx
Algoritmo de escalonamento | Visão geral |
---|---|
votação | Alocar servidores back-end um por vez para encontrar as necessidades internas. Padrão (rr) |
peso | Sondagem ponderada, quanto maior o valor do peso, maior a probabilidade de atribuir visitas morais (wrr) |
ip_hash | Cada solicitação é alocada de acordo com o resultado do hash do ip de acesso, de forma que o servidor back-end seja acessado fixamente a partir do mesmo endereço ip |
url_hash | Distribua as solicitações de acordo com o resultado hash do URL visitado, e cada URL é direcionado ao mesmo servidor back-end |
least_conn | O menor número de conexões, a máquina com o menor número de conexões será distribuída (lc) |
wlc | Conexão mínima ponderada |
1. Configuração específica de sondagem de balanceamento de carga Nginx [rr]
upstream load_pass {
server 172.168.20.6;
server 172.168.20.7;
}
2. Configuração específica da pesquisa de peso do balanço [peso]
upstream load_pass {
server 172.168.20.6 weight=5;
server 172.168.20.7;
}
3. A configuração específica da balança de desastres de estoque Nginx ip_hash não pode ser usada com peso.
// Se o cliente usar o mesmo proxy, isso causará muitas conexões com um determinado servidor
upstream load_pass {
ip_hash;
server 172.168.20.6;
server 172.168.20.7;
}
7. Configure o balanceamento de carga de quatro camadas
7.1 Modifique o arquivo de configuração principal /etc/nginx/nginx.conf
[root@bl01 ~]# cat /etc/nginx/nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
#四层代理
include /etc/nginx/conf.c/*.conf; //添加代理目录
[root@bl01 ~]# mkdir /etc/nginx/conf.c //创建负载配置文件目录
[root@bl01 ~]# vim /etc/nginx/conf.c/lb.conf //配置四层负载文件
stream {
upstream ssh_web01 {
server 192.168.154.132:22;
}
upstream ssh_web02 {
server 192.168.154.133:22;
}
upstream mysql_01 {
server 192.168.154.135:3306;
}
server {
listen 5555;
proxy_pass ssh_web01;
proxy_connect_timeout 1s;
proxy_timeout 300s;
}
server {
listen 6666;
proxy_pass ssh_web01;
}
server {
listen 33061;
proxy_pass mysql_01;
}
}