Nginx 负载均衡配置

介绍:

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

负载均衡的常用方式

  1. 轮询(默认):每个请求会按时间顺序逐一分配到不同的后端服务器。如果服务器down掉了,会自动剔除该服务器。此策略适合服务器配置相当,无状态且短平快的服务使用。
  2. 权重:根据后端服务器的权重值来分配请求,权重值越高的服务器接收到的请求越多。此策略适合服务器配置不同,有状态且需要动态调整负载的情况。指令名称:weight=xxx
  3. IP哈希:根据客户端IP地址进行哈希计算,然后将请求分配到相应的后端服务器。此策略适合需要限制访问源IP地址的情况。指令名称:ip_hash,此方式支持HTTP。受weight指令影响。
  4. 最小连接:将请求分配到当前连接数最少的后端服务器。此策略适合需要保证后端服务器的稳定性和可靠性的情况。指令名称:least_conn。受weight指令影响。
  5. 基于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;  
}

 

posted @ 2023-08-21 14:14  TongXiaLi  阅读(438)  评论(0编辑  收藏  举报