upstream backend {
server backend1.example.com;
server backend2.example.com;
}
轮询说明:
轮询原理: 轮询是一种简单的负载均衡算法,每个请求按时间顺序逐一分配到不同的后端服务器。轮询算法的优点是简单、公平,缺点是不能根据后端服务器的负载情况分配请求。
upstream backend {
least_conn;
server backend1.example.com;
server backend2.example.com;
}
最少连接说明:
最少连接原理: 最少连接是一种基于后端服务器连接数的负载均衡算法,将请求分配到当前连接数最少的后端服务器。最少连接算法的优点是可以根据后端服务器的负载情况分配请求,缺点是需要维护后端服务器的连接数。
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
}
IP 哈希说明:
IP 哈希原理: IP 哈希是一种基于客户端 IP 地址的负载均衡算法,根据客户端 IP 地址的哈希值分配请求。IP 哈希算法的优点是可以实现会话保持,缺点是不能根据后端服务器的负载情况分配请求。
upstream backend {
hash $request_uri consistent;
server backend1.example.com;
server backend2.example.com;
}
哈希说明:
哈希原理: 哈希是一种基于自定义变量的负载均衡算法,根据自定义变量的哈希值分配请求。哈希算法的优点是可以根据特定需求分配请求,缺点是不能根据后端服务器的负载情况分配请求。
| 方法 | 说明 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|---|
round_robin | 轮询 | 通用 | 简单、公平 | 不能根据后端服务器的负载情况分配请求 |
least_conn | 最少连接 | 长连接 | 可以根据后端服务器的负载情况分配请求 | 需要维护后端服务器的连接数 |
ip_hash | IP 哈希 | 会话保持 | 可以实现会话保持 | 不能根据后端服务器的负载情况分配请求 |
hash | 自定义哈希 | 特定需求 | 可以根据特定需求分配请求 | 不能根据后端服务器的负载情况分配请求 |
选择负载均衡算法时,需要考虑以下因素: