本公众号内容大多由平时操作整理记录,如果有错误的地方欢迎留言指正
nginx负载均衡
nginx的负载均衡功能是通过upstream命令实现的,由ngx_http_upstream_module模块支持,它的负载均衡实现机制比较简单,容易理解。相比LVS,nginx负载均衡默认后端服务器具有健康状检测功能,检测方式是基于端口检测,在后端服务器比较少的情况下性能突出,如果后端负载节点比较多,所有的请求都从一台代理服务器进出,容易造成请求阻塞,这种情况可以在nginx代理服务前端增加一层LVS进行分流,nginx代理做多节点来缓解。
nginx负载均衡算法
1:轮询(默认的模式),每个请求按时间顺序逐一分配到不同的服务器,如果后端某台服务器死机,自动剔除故障系统使用户使用不受影响。
2:权重(weight),指定轮询的权值,weigth值越大,分配到访问的概率就越高,只要用于后端服务器性能不均衡的情况下。
3:ip_hash,每个请求按访问ip的哈希结果分配,这样来自同一ip的访客固定访问一台后端服务器。能够有效解决动态网页存在的session共享问题。
4:least_conn 最少连接调度算法,同时考虑服务器的权重,当server拥有不同的权重时其为wlc,当所有后端主机连接数相同时,则使用wrr,适用于长连接
5:hash key [consistent] 基于指定的key的hash表来实现对请求的调度,此处的key可以直接文本、变量或二者组合
作用:将请求分类,同一类请求将发往同一个upstream server,key值可以用remote_addr,
当使用consistent参数时,将启用ketama一致性hash算法,适用于后端是Cache服务器(如varnish)时使用hashremote_addr consistent;
在http upstream模块中,可以通过server指令指定后端服务器的ip地址和端口,同时还可以设定每台后端服务器在负载均衡中的状态。
upstream中可附加指令
1:down,表示当前的server不参与负载均衡。
2:backup,预留的备份机,当其他所有非backup的机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。
3:max_fails,允许请求失败的次数,默认为1,当超过最大次数时,返回proxy_next_upstream模块定义的错误。
4: fail_timeout,在经历了max_fails次失败后,暂停服务的时间,max_fails可以和fail_timeout一起使用。
5: keepalive 连接数N; 为每个worker进程保留的空闲的长连接数量,可节约nginx端口,并减少连接管理的消耗
配置负载均衡
轮询负载
http段设置
server 段设置
测试
加权轮询
http段
将192.168.214.133 权重设为3
测试
ip_hash
测试
least_conn最少连接
测试
hash key:一致性hash
领取专属 10元无门槛券
私享最新 技术干货