nginx静态负载均衡与反向代理
服务的进化史:单机->集群->分布式集群
针对服务集群,分布式服务,我们通过负载均衡和反向代理来保证我们服务的高可用,高性能等特点
负载均衡:
DNS(将一个域名绑定多个ip) 负载均衡,一般由运营商进行管理,可根据ip分配就近服务器,提高响应速度
LVS 软件负载均衡,F5 硬件负载均衡(价格贵),一般交由系统运维工程师维护
Nginx 服务负载均衡,反向代理
客户端负载均衡:ribbon,feign,配合服务注册发现来实现,这样可以省去nginx等中间一层代理,提高响应速度。
作为一般软件开发人员,我们只需关注nginx即可,当然除了nginx还有其他可选。
对于nginx负载均衡我们需要关心几个方面:
服务器配置 : http - upstream
负载均衡算法 :轮询,加权轮询,ip_hash,fair,url_hash
失败重试机制
服务器心跳检测
nginx 的 upstream目前支持 4 种算法方式的分配
1)、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2)、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
2)、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
3)、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
4)、url_hash(第三方)
nginx负载均衡器调度状态:
1、down,表示当前的server暂时不参与负载均衡
2、backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的访问压力最低
3、max_fails,允许请求失败的次数,默认为1,当超过最大次数时,返回proxy_next_upstream模块定义的错误。
4、fail_timeout,请求失败超时时间,在经历了max_fails次失败后,暂停服务的时间。max_fails和fail_timeout可以一起使用。
nginx失败重试机制
max_fails和fail_timeout:当fail_timeout时间内失败了max_fails次后,则认为上游服务不可用,将会将该服务从列表中自动剔除,但是当fail_timeout后 该服务器会再次加入到服务列表中
反向代理:
全局配置
location配置:失败重试机制,请求方法,请求头配置
出处:https://home.cnblogs.com/u/hcy-fly/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。