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

来源:互联网 发布:学英语的软件 编辑:程序博客网 时间:2024/05/22 14:24
  负载均衡 (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定向到同一个后端服务器。
0 0
原创粉丝点击