9. Balanceamento de carga Nginx

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
Insira a descrição da imagem aqui

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;
        }
}

Acho que você gosta

Origin blog.csdn.net/weixin_43357497/article/details/113764162
Recomendado
Clasificación