负载均衡闲谈

在nginx中,负载均衡和反向代理这两兄弟经常成对出现,冥冥中有一种特殊的力量,将他们吸引在一起,而这种力量,建立在我们对他们本质上的理解,希望读完这边博文让你明白其中的关系。

反向代理

要理解反向代理,先要弄清楚什么是正向代理。在反向代理出来前,所有的代理基本都是正向代理,比如我们日常中使用的路由器WIFI,就是一个代理,将内网中的客户端(手机)的请求先发送到路由器这个代理上,路由器在通过在暴露在外网的地址去访问服务器。服务器返回后再给路由器,路由器在转发到对应的客户端上。在这里有个很关键的地方:代理只能是内网发往外网,而外网不能访问到内网。
说完正向的代理,反向代理时相反的。我们通过反向代理服务器,将外网的请求转发到内网的服务器上。外网的访问都是这台反向代理服务器(或者集群),通过其再去转发,可见安全性就提高了。

负载均衡

上面的反向代理服务器的内网中,是一个对外提供某种服务器的集群,在这个急群中,每台服务器都是对等独立的,能单独处理请求。当反向代理服务器收到请求后,转发到这个集群中哪一台的时候,就涉及到了负载均衡了。常见的负载均衡有几种:

用户手动选择

这个在打游戏的时候应该有感触,是选择广东电信和江西网通?

DNS轮询

一个域名可以绑定多个ip地址,自然就可以给每一个ip翻牌。但是这种方式有很大的缺陷——可靠性不足。当其中一个ip的服务器宕机了,由于DNS服务器在ISP那里都会有缓存,有时候会长达几个小时,那么在这几个小时,用户请求都在这个ip上,就啥都没有。还有这种方式的负载并不均衡,只是简单的轮询,对于机器性能好的服务器,并不能多分担点。综上,这种方式成本低,适用于不重要的服务,如图片服务器集群,纯静态网页集群。

硬件负载均衡

这种价格贵的要死,著名的有F5

软件负载均衡

有分为四层和七层的负载均衡,四层出名的有lvs,七层最出名当然是nginx了。七层的负载均衡一般利用的也是反向代理技术。

这里在插入一点关于nginx中负载均衡的配置语法

upstream模块一般是在http下的,所以proxy_pass指令后的server都会家http://开头。
ip_hash,这种方式主要是为了保持住用户的session信息。当用户在服务器1上完成登录,1上记录了用户的uid,用户第二次访问,被ngixn转发到服务器2了,那么用户相当于没登录,这就坑爹了。ip_hash的作用就是将同一个ip访问的都放到同一台机器上,这样就能使用session信息。如果在采用ip_hash的后端stream模块中有某台机器挂了,我们注释掉,总数变少了,所有用户路由的服务器都发生改变,那么所有用户的session信息都不会保存下来,这显然是灾难啊!在采用ip_hash的负载均衡上,在宕掉的机器上标注down,只会让范文该ip 的用户无法访问,而其他用户都能正常使用服务,这无疑是断臂求生!

ip_hash的模式总路由到同一台机器,均衡的味道也大大降低了。所以session信息应该抽出来成为一个独立的集群,让后端的服务器都是无状态的,这样就不会有上述的问题了。

server后的指令,weight当然就是权重了,max_fail是访问后端服务器失败的次数就不再访问了,默认是1,0代表取消这个检查机制。fail_timeout则是在上述失败的次数后,暂停多长时间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值