Nginx的负载均衡策略(4+2)
Nginx的负载均衡策略主要包括以下几种:
- 轮询(Round Robin):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。这是Nginx的默认策略,适合服务器配置相当、无状态且短平快的服务使用。
- 权重(Weight):指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。这种方式可以根据后端服务器的性能,为它们分配不同的权重,以达到更好的负载均衡效果。
- IP绑定(IP Hash):按照基于客户端IP的分配方式,确保相同的客户端的请求一直发送到相同的服务器,以保证session会话。这种方式适合有状态服务,比如session。
- 最少连接数(Least Connections):把请求转发给连接数最少的后端服务器。这种方式可以减少服务器的负载,使其更加均衡。
- 第三方策略:除了上述几种策略,还有一些第三方策略可以实现更复杂的负载均衡需求,这些策略需要安装第三方插件
- fair
按照服务器端的响应时间来分配请求,响应时间短的优先分配。 - url_hash
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,要配合缓存命中来使用。同一个资源多次请求,可能会到达不同的服务器上,导致不必要的多次下载,缓存命中率不高,以及一些资源时间的浪费。而使用url_hash,可以使得同一个url(也就是同一个资源请求)会到达同一台服务器,一旦缓存住了资源,再此收到请求,就可以从缓存中读取。
下面是一个基本的Nginx负载均衡配置示例,假设你有两个后端Web服务器(backend1.example.com
和backend2.example.com
),你想要在它们之间分配HTTP请求:
http {
# 定义后端服务器组
upstream backend {
# server指令定义后端服务器及其参数
server backend1.example.com;
server backend2.example.com;
# 可选的负载均衡算法,默认为轮询
# least_conn; # 最少连接数
# ip_hash; # 根据客户端IP进行哈希,实现会话保持
# 更多的服务器配置参数,如权重、备用状态等
# server backend1.example.com weight=3;
# server backend3.example.com backup; # 备用服务器
}
# 虚拟主机配置
server {
# 监听端口
listen 80;
# 域名或IP地址
server_name example.com;
# 位置块,用于匹配请求URI
location / {
# 将请求代理到后端服务器组
proxy_pass http://backend;
# 代理超时设置
proxy_connect_timeout 1s;
proxy_send_timeout 1s;
proxy_read_timeout 1s;
# 传递请求头和请求体
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 其他代理设置
proxy_http_version 1.1;
proxy_set_header Connection "";
}
# 可以添加更多的location块来处理特定的路径或模式
}
# 可以添加更多的server块来配置不同的虚拟主机
}
在这个配置中,upstream
块定义了一个名为backend
的后端服务器组,其中包含两个服务器。默认情况下,Nginx使用轮询算法将请求分发到这些服务器上。你可以在server
指令中使用weight
参数来指定服务器的权重,权重较高的服务器将接收更多的请求。使用backup
参数可以指定备用服务器,只有在所有非备用服务器都不可用时才会接收请求。
本文来自博客园,作者:dashery,转载请注明原文链接:https://www.cnblogs.com/ydswin/p/18049496