Nginx的负载均衡策略

共六种: 轮询、权重、ip_hash、least_conn、fair、url_hash

1、轮询(Round Robin)负载均衡策略:这是一种基本的负载均衡策略,将请求顺序转发给每个后端服务器,每个后端服务器依次处理请求,而轮询正是按照这样的方式平均地为每个后端服务器分配请求。

http {
upstream backend {
   server backend1.example.com;
   server backend2.example.com;
   server backend3.example.com;
}

server {
   listen 80;
   server_name example.com;

   location / {
      proxy_pass http://backend;
   }
}

}

2、权重(Weight)负载均衡策略:通过为每个后端服务器分配不同的权重,将请求按照权重比例分配到不同的后端服务器,以实现负载均衡。例如,如果后端服务器A的权重是3,后端服务器B的权重是2,则在处理请求时,服务器A会收到3/(3+2)=60%的请求,而服务器B会收到 2/(3+2)=40%的请求。

http {
upstream backend {
   server backend1.example.com weight=5;
   server backend2.example.com weight=10;
   server backend3.example.com weight=5;
}

server {
   listen 80;
   server_name example.com;

   location / {
      proxy_pass http://backend;
   }
}
}

3、IP散列(ip_hash)负载均衡策略:使用客户端的IP地址来计算散列值,将同一个IP地址的请求发送到同一个后端服务器上,以实现会话保持(Session Persistence)。

http {
upstream backend {
   ip_hash;

   server backend1.example.com;
   server backend2.example.com;
   server backend3.example.com;
}

server {
   listen 80;
   server_name example.com;

   location / {
      proxy_pass http://backend;
   }
}

}

4、最少连接数(least_conn)负载均衡策略:将请求发送到当前连接数最少的后端服务器上,以达到最优的负载均衡效果。

http {
upstream backend {
   least_conn;

   server backend1.example.com;
   server backend2.example.com;
   server backend3.example.com;
}

server {
   listen 80;
   server_name example.com;

   location / {
      proxy_pass http://backend;
   }
}

}  

5、公平(fair)负载均衡策略:将请求基于当前后端服务器的处理速度,将请求发送到当前处理速度最快的后端服务器上,以充分利用服务器资源并提高响应速度。

http {
upstream backend {
  server backend1.example.com;
  server backend2.example.com;
  fair;
}

server {
  listen 80;
  location / {
    proxy_pass http://backend;
  }
}
}  

6、URL散列(url_hash)负载均衡策略:使用客户端请求中的URL地址计算散列值,并将同一个URL地址的请求发送到同一个后端服务器上,以实现会话保持(Session Persistence)和动态负载均衡(Dynamic Load Balancing)功能。

http {
upstream backend {
  server backend1.example.com;
  server backend2.example.com;
  hash $request_uri;
  hash_method crc32;
}

server {
  listen 80;
  location / {
    proxy_pass http://backend;
  }
}
} 
阅读如遇样式问题,请前往个人博客浏览: https://www.raokun.top
拥抱ChatGPT:https://ai.terramours.site
开源项目地址:https://github.com/firstsaofan/TerraMours