Nginx负载均衡
Nginx作为一款高性能的Web服务器、和反向代理服务器,其负载均衡功能通过将客户端请求分发到多台后端服务器,
如下图所示:
当某个后端服务器发生故障时,Nginx 可以将请求转发到其他健康的服务器,保证服务的连续性。
以及, 通过将请求分发到多台服务器上,可以显著提高系统的并发处理能力和吞吐量,应对高并发场景。
而且,可以根据后端服务器的性能差异或当前负载情况,合理地分配请求,提高服务器资源的利用率。
Nginx负载均衡算法
Nginx 的负载均衡算法,会将客户端发送的请求分摊到多个后端服务器(upstream servers)上进行处理,而不是让单个服务器承担所有请求。
在upstream模块中配置server指令时,可以指定不同的负载均衡算法。
以下是常用的四种:
1.轮循(默认)
Nginx 默认采用轮询算法,按顺序将请求依次分发给各个后端服务器,每台服务器处理的请求数量大致相同。
文章预览
比如:
请求1→Server A
请求2→Server B
请求3→Server C
请求4→Server A
……循环继续
优点:
缺点:
- 不考虑服务器当前负载;
- 适用范围受限(对处理速度差异大的节点不友好);
加权模式加权轮询算法在轮循的基础上,为每个后端服务器设置一个权重值(通过weight参数指定)。
权重越高的服务器,在单位时间内接收到的请求数量越多,Nginx 会根据配置的权重比例来分配请求。
upstream backend {
server backend1.example.com weight=2;
server backend2.example.com weight=1;
server backend3.example.com weight=3;
}
server {
listen 80;
server_name example.com;
location /{
proxy_pass http://backend;
}
}
在这个例子中,backend1接收到请求的概率是backend2的两倍,backend3接收到请求的概率是backend2的三倍。
优点:
缺点:
- 权重静态配置,不支持自动调整;
- 实时性能变化无法感知;