负载均衡配置
负载均衡是用在多应用服务中来优化资源使用、最大化吞吐量、减少延迟、保证系统容错能力的策略。
Nginx通过ngx_http_upstream_module 模块实现反向代理服务器的负载均衡功能。
http {
upstream backend {
server backend1.example.com weight=5;
server backend2.example.com;
server 192.0.0.1 backup;
keepalive 32;
}
server {
location / {
proxy_pass http://backend;
}
}
}
upstream name { ... }
指定一组名称为name的代理服务器。
server address [parameters]
指定服务器地址,可以是ip或域名,未指定端口时默认80。服务器可以配置的参数主要有:
- weight=number 轮询权重
- max_conns=number 最大连接数
- max_fails=number 不可访问错误次数
- fail_timeout=time 不可访问时间,错误次数时间间隔
(如果在fail_timeout时间内错误次数超过max_fails次,则服务器不可访问fail_timeout时长) - backup 指定为备用服务器
- slow_start=time 慢启动时长,权重从0到full的时间
- down 服务器不可访问
keepalive connections
每个worker进程的缓存的空闲连接数,采用LRU策略,
负载均衡策略
- 轮询,默认策略,通过weight=number指定权重
- least_conn:最小连接数策略,根据权重配置,将新的请求分配给当前活动连接数最少的server,连接数相同时轮询分配。
- least_time header | last_byte[inflight]:最快响应策略。
- ip_hash 根据ip的哈希值进行分配,取ipv4地址前三段
- hash key [consistent]:根据key指定的值进行哈希运算,分配请求。