跟我一起学Load Balance(1)

1600阅读 0评论2015-06-23 九阳神功爱喝茶
分类:LINUX

作者:gfree.wind@gmail.com
博客:blog.focus-linux.net   linuxfocus.blog.chinaunix.net
 
微博:weibo.com/glinuxer
QQ技术群:4367710
 
本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途。
======================================================================================================
本系列文章均来源于书籍《Load Balancing Servers, Firewalls, and Caches》,均为书中的知识点,稍稍加上作者从事这行业的一些经验——应该是不涉及公司机密呵。。。

我们公司的核心产品就是负载均衡产品,所以有时候想写些这方面的文章,也不敢下笔呵——怕泄露公司机密呵。不过最近看到一本书《Load Balancing Servers, Firewalls, and Caches》。目前已经翻看了四章,觉得讲得不错。虽然并不涉及内部的具体实现,但是可以帮助读者从无到有的理解负载均衡设备。对我来说,也可以帮助我重新整理一下系统知识。既然这方面的东西已经有书籍讲解了,那么就谈不上什么涉密不涉密了。

第一个问题:什么是负载均衡设备?
简单的看,负载设备作为服务器的前端设备,负责将流量根据各种策略分发到后端各个真正的服务器上,从而使后端的服务器群得到合理有效的应用。从这个定义上看,感觉这个设备功能很简单。按照通用的设计方法,一般都是在第一个包的时候,根据策略选择后端的服务器,建立session,也就是slow path。后面的包通过session表,得到session后,直接利用上次的结果,将包发给相同的服务器,也就是fast path。但是负载均衡设备,还有另外一个名字,叫做4-7层交换机。我们知道,2层交换机是根据MAC table来交换数据,三层交换机是根据IP 信息来交换数据,也就是路由。4层呢,即根据port来交换数据,也是负载均衡设备实现的基础——这个后面的文章具体讲解。7层,则是要根据7层的具体应用层协议的payload来交换数据。(为啥没有5和6层?呵呵,TCP/IP只有5层,下面四层与OSI的分层一样,第5层却又直接使用OSI的层次,即第7层应用层。至于为啥这样?我也不知道呵)。负载均衡设备,作为4-7层交换机,自然需要兼容2层和3层的交换协议,也就是说可以把负载均衡设备当作一个路由器或者交换机使用。负载均衡设备的应用场景,也是要求其必须支持2-3层的交换协议。不过肯定当不了核心网的路由器呵。这样的话,单单的数据交换功能就已经不简单了吧。而为了支持7层交换,其必须支持各种7层协议,且要有辅助的一些功能,如health check,简单的DDOS保护等。

第二个问题:为什么需要负载均衡设备?
负载均衡设备的主要用户就是大型网站,ISP,或者大型企业的内部网络。对于这些用户来说,他们的网络时刻承受着巨大的网络流量,所以需要部署很多服务器。在部署这些服务器的时候,他们需要保证网络的可扩展性,服务器的易管理性和可靠性。在没有前端的负载均衡设备的时候,很难达到这三个目标。而使用了负载均衡设备,实现这三个目标,简直是轻而易举。下面看看负载均衡设备怎么实现的这三个需求。
下图为负载均衡设备的一个常见的部署:


负载均衡设备作为服务器前端设备,拥有公网IP连到互联网上,一般一种服务拥有一个VIP。client发送请求到负载均衡设备,然后负载均衡设备根据策略将请求转发到后端的服务器上。服务器将请求回复到负载均衡设备,再将其转发给client。这种服务器部署,对于client来说,完全是透明的。它不知道有多少个后端服务器,提供服务的又是哪台服务器。对客户端来说,看到的只是负载均衡设备,提供服务的也是负载均衡设备。

可扩展性的支持:客户可以添加更多的后端服务器,只需要将其加入到负载均衡设备的该服务组中即可。
易管理性:添加/删除服务器,只需要更改负载均衡设备的配置,不会对用户造成任何的影响。
可靠性:当提供服务的某台服务器发生故障时,不需要进行任何配置改动,负载均衡设备可以主动探测到故障服务器。可将后来的请求转发到其它服务器,不影响用户的正常使用。


上一篇:Linux时间管理之clocksource
下一篇:数据结构之二叉树(遍历、建立、深度)