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