简介
随着互联网的日新月异,为其提供的服务端更是数不胜数但在其各自的特性下服务于各自的领域。由于互联网的普及下造成流量提升在这样的情况下就需要加强其服务的稳定性不在是一台机器搞定所有而是根据自身业务场景定制其强大的服务关系网,那么接下来我们一起来了解nginx的关系网----‘负载均衡’。
前期准备
,虚拟机【Vmware】
,3台linux服务器【centos7】
,服务器安装nginx,相互ping通,相关端口放开
Nginx 配置
,自定义配置请求头
,proxy_set_header Access-Token $http_access_token
attention:
,header默认不支持 _变量名,若一定要增加 可在 http / server 模块内进行配置 underscores_in_headers on;
,Access-Token:你所要增加的变量名,首字母需要大写
,$http_access_token:$http_ 固定前缀,access_token 端上传的变量
,常用负载策略【】
,轮询:
每个请求都按照时间顺序分配到不同的机器中,如果负载机器出现故障,nginx自动移除
,权重【weight】
给予轮询策略上增加某台及其的负载比例,权重越大,机器负载比例越高
e g :
upstream tong_server {
server 192.168.116.12:8080 weight=2;
server 192.168.116.13:8080 weight=1;
}
,ip_hash哈希负载【不能使用backup】
每个请求按照Ip_hash分配,由于hash值为不重复的唯一值,因此每个ip都固定访问同一个后端服务机器,该策略可保持session不变,
解决session同步问题
e g :
upstream tong_server {
ip_hash
server 192.168.116.12:8080;
server 192.168.116.13:8080;
}
,fair负载【第三方】
根据后端服务器的响应时间来分配请求,响应时间短的优先分配
,url_hash 负载【第三方】
与ip_hash负载类似,是对每一个请求按url的hash结果分配,使每个URL定向到同一个后端服务器,但是也会造成分配不均的问题,
这种模式后端服务器为缓存时比较好
,相关参数
参数 | 含义 | 示例 |
---|---|---|
down | 标识该参数的服务器不支持资源请求 | server 127.0.0.1:7001 down; |
weight | 集群中请求服务的权重值,weight比重越大,请求概率越高 | server 127.0.0.1:7001 weight=2; |
max_fails | 设置请求时服务出错的次数,默认为1,当出错次数大于当前值时,后面的请求暂时不会转发到该服务 | server 127.0.0.1:7001 max_fails=2; |
fail_timeout | 当服务处理请求发生错误的次数超过max_fails后,nginx会暂时不往该服务发送服务,直到fail_timeout设置的时间过后会尝试将请求转发到该服务,如果服务正常那么后续的请求会转发到该服务,如果不正常将再次等待fail_timeout时间过后再次尝试,默认为10秒 | server 127.0.0.1:7001 max_fails=2 fail_timeout=20s; |
backup | 备用服务器,当所有非backup服务发送错误被停用或设置为down时,nginx会启用标识为backup的服务 | server 127.0.0.1:7001 backup |
max_conns | 该功能存在于nginx商业版!统一服务同时处理请求的个数,防止服务处理过多请求,服务器性能不足,发送宕机的情况 | server 127.0.0.1:7001 max_conns=10000; |
slow_start | 该功能存在于nginx商业版!当集群中错误服务等待fail_timeout时间过后,nginx检测该服务能正常使用后,在等待slow_start时间后才正式使用这个服务 | server 127.0.0.1:7001 slow_start=30s; |
,配置方法
,配置转发到那些机器
,在某个server中进行使用