介绍:
Nginx负载均衡的原理是把请求均匀地分摊给上游的应用服务器,这样即使某一个服务器宕机也不会影响请求的处理,或者当应用服务器扛不住了,可以随时进行扩容。Nginx在处理请求时,会根据负载均衡算法(如轮询、IP Hash等)将请求分发到不同的后端服务器上。Nginx支持多种负载均衡算法,可以根据实际需求进行选择。
负载均衡分类:HTTP负载均衡,TCP负载均衡,UDP负载均衡。HTTP负载均衡
在NGINX中配置如下:
upstream back{ server 192.168.1.1:80 weight=1;#默认权重1 server 192.168.1.2:8088 weight=2;#传输请求2倍 server 192.168.1.3:80 backup;#如果其它服务器不可用作为备份服务 } server { location / { proxy_pass http://back; } }
TCP负载均衡
nginx.config配置如下:stream与http同级,可以在其它文件目录导入配置。
stream { include /etc/nginx/stream.conf.d/*.conf; }
etc/nginx/stream.conf.d/socket.conf配置如下:
upstream socket_server { server 192.168.1.33:3306 weight=2; server 192.168.2.33:3306 backup; } server { listen 3306; proxy_pass socket_server; }
UDP负载均衡
注意:只需要添加udp标识。如果需要服务器来回传输多个数据包需要添加reuseport。
stream { upstream dns{ server dns.test.com:321 weight=1; server dns.test2.com:321 backup; } server { listen 321 udp reuseport; proxy_pass dns; } }
负载均衡的常用方式
- 轮询(默认):每个请求会按时间顺序逐一分配到不同的后端服务器。如果服务器down掉了,会自动剔除该服务器。此策略适合服务器配置相当,无状态且短平快的服务使用。
- 权重:根据后端服务器的权重值来分配请求,权重值越高的服务器接收到的请求越多。此策略适合服务器配置不同,有状态且需要动态调整负载的情况。指令名称:weight=xxx
- IP哈希:根据客户端IP地址进行哈希计算,然后将请求分配到相应的后端服务器。此策略适合需要限制访问源IP地址的情况。指令名称:ip_hash,此方式支持HTTP。受weight指令影响。
- 最小连接:将请求分配到当前连接数最少的后端服务器。此策略适合需要保证后端服务器的稳定性和可靠性的情况。指令名称:least_conn。受weight指令影响。
- 基于URI哈希:根据请求URI进行哈希计算,然后将请求分配到相应的后端服务器。此策略适合需要进行会话保持的情况。指令名称:hash,可选参数:consistent。受weight指令影响。
upstream backend{ least_conn; server backend.test.com; server backend.test2.com; }
被动健康检查
通过NGINX的max_fails指令超时重试次数(默认1次)和fail_timeout指令服务超时时间(默认10s),
upstream backend{ least_conn; server backend.test.com max_fails=3 fail_timeout=3s; server backend.test2.com max_fails=1 fail_timeout=5s; }
标签:负载,请求,weight,server,Nginx,均衡,服务器 From: https://www.cnblogs.com/Python-233/p/17631302.html