关于Nginx负载均衡和共享session的问题

  负载均衡 (Load Balancing) 负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

  nginx 可以按照 轮询、ip哈希、url哈希、权重等多种方式对后端服务器做负载均衡,负载均衡可以自动剔除挂掉的服务器。

   nginx 的 upstream目前支持 4 种方式的分配
   1)、轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
  2)、指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
  3)、每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
  4)、fair(第三方) 按后端服务器的响应时间来分配请求,响应时间短的优先分配。
  5)、url_hash(第三方)
       
       配置:
  #在http节点里添加
  #定义负载均衡设备的 Ip及设备状态

  upstream www.abc.com{

     server 127.0.0.1:9090 down; 

     server 127.0.0.1:8080 weight=2; 

     server 127.0.0.1:6060; 

     server 127.0.0.1:7070 backup; 
     }

     proxy_pass www.abc.com

       upstream 每个设备的状态:   
       down 表示单前的server暂时不参与负载
  weight 默认为1.weight越大,负载的权重就越大。
  max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
  fail_timeout:max_fails 次失败后,暂停的时间。
  backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

负载均衡中实现多台服务器之间的session的共享:
1、不使用session,使用cookie;因为session的数据的存放在服务端,而cookie的数据存在客户端的web浏览器
2、服务器间自动实现共享,例如将session保存在数据库,但是会都数据库造成一定的压力。
        3、用memcached来保存,memcached是高性能的分布式内存缓存服务器。 一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、 提高可扩展性。
4、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器。ip_hash仅仅是根据ip来分配后端服务器,所以必须满足以下的条件:a、naginx必须是最前端的服务器;b、nginx的后端不存在其他方式的负载均衡。不然很有可能客户端不能定位到同一台服务器,从而导致共享session失败。
        5、url_hash 
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值