负载均衡方法

轮询(默认)

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

轮询说明

  • 轮询是默认的负载均衡方法
  • 每个请求按时间顺序逐一分配到不同的后端服务器

轮询原理: 轮询是一种简单的负载均衡算法,每个请求按时间顺序逐一分配到不同的后端服务器。轮询算法的优点是简单、公平,缺点是不能根据后端服务器的负载情况分配请求。

最少连接

upstream backend {
    least_conn;
    server backend1.example.com;
    server backend2.example.com;
}

最少连接说明

  • 最少连接负载均衡方法将请求分配到当前连接数最少的后端服务器
  • 适用于长连接场景

最少连接原理: 最少连接是一种基于后端服务器连接数的负载均衡算法,将请求分配到当前连接数最少的后端服务器。最少连接算法的优点是可以根据后端服务器的负载情况分配请求,缺点是需要维护后端服务器的连接数。

IP 哈希

upstream backend {
    ip_hash;
    server backend1.example.com;
    server backend2.example.com;
}

IP 哈希说明

  • IP 哈希负载均衡方法根据客户端 IP 地址的哈希值分配请求
  • 同一客户端的请求会分配到同一个后端服务器
  • 适用于会话保持场景

IP 哈希原理: IP 哈希是一种基于客户端 IP 地址的负载均衡算法,根据客户端 IP 地址的哈希值分配请求。IP 哈希算法的优点是可以实现会话保持,缺点是不能根据后端服务器的负载情况分配请求。

哈希

upstream backend {
    hash $request_uri consistent;
    server backend1.example.com;
    server backend2.example.com;
}

哈希说明

  • 哈希负载均衡方法根据自定义变量的哈希值分配请求
  • 可以根据请求 URI、Cookie 等变量分配请求
  • 适用于特定需求场景

哈希原理: 哈希是一种基于自定义变量的负载均衡算法,根据自定义变量的哈希值分配请求。哈希算法的优点是可以根据特定需求分配请求,缺点是不能根据后端服务器的负载情况分配请求。

方法对比

方法说明适用场景优点缺点
round_robin轮询通用简单、公平不能根据后端服务器的负载情况分配请求
least_conn最少连接长连接可以根据后端服务器的负载情况分配请求需要维护后端服务器的连接数
ip_hashIP 哈希会话保持可以实现会话保持不能根据后端服务器的负载情况分配请求
hash自定义哈希特定需求可以根据特定需求分配请求不能根据后端服务器的负载情况分配请求

负载均衡算法选择

选择负载均衡算法时,需要考虑以下因素:

  1. 后端服务器性能:如果后端服务器性能不同,可以使用权重或最少连接算法
  2. 会话保持:如果需要会话保持,可以使用 IP 哈希或哈希算法
  3. 请求类型:如果是长连接,可以使用最少连接算法
  4. 特定需求:如果有特定需求,可以使用哈希算法