Metoo2008:大型网站集群的整体建设战略&大话负载均衡历史

来源:互联网 发布:seo外链怎么发 编辑:程序博客网 时间:2024/05/17 02:19

Metoo2008:大型网站集群的整体建设战略&大话负载均衡历史

主持人:

  

 

 下一个话题关于大型网站集群的建设,这次重点会Web的网站集群和CDN架构做一些探讨,我们请Metoo2008,大家欢迎。

 

 Metoo2008

    谢谢大家,我其实讨论的内容和前面的两个主题不大一样,因为我今天主要介绍是跟商业化的应用交付产品,不是一个完全开源的模式,因为在有些形式下,商业化的产品和开源的产品是可以做一个互相的补充,协同一起工作。

    我先介绍一下我本人,我是从2000年开始进入负载均衡的领域,但是很不巧的是,我从2000年开始一直在商业化的产品里面,2000年到2002年的时候我是做(英文)的产品,02年到04年是做(英文)的产品,从04年到现在一直在做F5的产品。我目前是在F5公司的北方区。

    今天我的议题里面包含四个方面,大家现在讨论负载均衡,但实际上从整个行业的趋势里面来说,这个名词已经变掉了,负载均衡变成应用交付其中的一个部分了。所以我在这里面我也给大家介绍一下,一个是我们在商业化运作产品里面它的一个发展的历史。第二部分,整个这个行业的一个发展其实。因为从整个市场,或者从这些来说,它是有一个发展趋势的,我们将来未来的路,未来的方向是在哪个地方,第三个部分是WebPortal,我见到我们很多的客户也好,用户也好,实际上有一些单位也是在用我们的产品,用F5的产品,都会有,就是说做WebPortal建设的时候,在一些大型的网站怎么做总体的考虑。另外就是CDN的一些建设,从应用交付的角度怎么来看CDN的一个框架结构和建设。

    首先是一个应用交付产品的发展史,交换和处理的层次,上次我们在网站上做在线讨论的时候,当时我发现里面有很多的网友可能还不是很清楚,究竟负载均衡这些处理的层面究竟是一个什么样的层面,有一些是做应用开发的,有一些做网络的,在这个中间的处理,它究竟是一个什么样的层面,实际上这个PPT是我在2000年左右的时候,那个时候还经常见客户的时候会去讲,什么叫做负载均衡,因为在2000年的时候,整个负载均衡作为我们厂家来说都是一个普及讲解什么是负载均衡的东西。首先最早的时候,最早应该是96年的时候我开始用过Hub的东西,准确来说是叫十兆的铜缆做的那个东西,几台机器连起来windows1311,现在很少看到那个东西了,做对等网,那个时候就是叫做极限器的概念,极限器就像一个乡间小道,乡间小道只能有一个人走,这是以太网最基本的处理了,所以最早叫做极限器模式。后来出现叫做二层交换机,就是以思科起家的一个代表二次交换机,这就像我们今天的动路,是双向的,有多向车道,数据可以搬来搬去的,通过二层交换机,就可以同时跑。到后来以(英文),出现三层交换的时候是以它为做的最强的,三层交换机,就像我们今天的交叉公路一样,立交桥,它不光可以在每个方向上有双向通道,可以跨越过去,在不同的端口之间,它都可以做一个立体式的交叉,这就是后来出现的像现在我们用的大部分的交换机都是举证备板的模式。

    到了四层交换机,前面讲到LVS,它都是工作在第四层面上的,我可以在交叉路口我在设置有红绿灯,有红绿灯我可以控制哪些可以过去,只有端口上的流量我可以做转发,不是这个端口上的其他一律都是红灯,在做四层交换的时候它的主要一个特点,当我们做到七层的时候是一个什么特点呢?做四层交换的时候有一个概念,比如说一条马路修好了,红灯、绿灯,觉得我是在控制了,但是这个控制里面我可能一个人骑一个自行车要不要遵守交通规则,我是一辆小轿车它要怎么跑,那么如果我这个马路上来了一个坦克呢?它也照样从这条路上过去,但是实际上对于我们的网站,或者对我们的系统中来说可能坦克就是一个很危险的动作,轿车就是普通的宽带用户,对于骑自行车的是一个窄带的用户,所以在七层处理的时候它就像一个交通警察一样的,我可以有一定的智能我来分辨数据包某一个目录,某一个什么样的特征,然后做一个分发或者是处理,或者是做带宽控制,这个是属于在七层交换里面的一个处理模式。

    所以整个从第一层到第七层,可以以一个非常形象的比喻去把它了解清楚,它是做什么的。

    负载均衡产品的硬件发展史,这个图里面只划到2004年,从1996年开始出现,商业化产品里面基本上是以功能服务器为主,就是说我是在一台PCServer上面安装一个软件,那么这个软件它就去做各种各样的东西,实际上就是我们今天的LVS,从商业化产品的角度来说,那么LVS1996年时候的商业化的产品是属于非常接近的结构,实际上开源和专业化本身就是一个互相学习、互相补充的过程。那个时候我见过最早的F5设备,就是96年、99年时候F5的设备,那个时候有声卡、显卡,在机器的背后有声卡的接口,还是用的华硕的主板,在那个时候不光有F5,还有以(英文)为代表的,以交换机的方式,在四、七层交换里面有两个方向,一个是X68的结构往下走,去做交换处理。

    另外一个方向是从二层交换机,三层交换机的基础上发展起来的,这个就是点击当时的(英文)和(英文),这个产品大家有没有见过?图标,我记得是叫(英文),就是说这一类的产品它的特点都是在当时二、三层的交换机上面,通过加入这些功能来实现的四、七层交换的功能,那个时候交换都很简单。在这个之后这些(英文)和(英文),差不多都在98年、99年左右,F5包括在那个时候也有一些产品,那个时候产品的代表同样分为两种,两个类型,我是2000年开始做(英文)的产品,(英文)的产品是非常有特色的专用处理的,它是在每个端口上面有两颗CPU,这两颗CPU可能都不是特别强,不像我们今天看到的都是很大的几个G的主屏,那个时候两颗CPU都是叫i960,两颗CPU都很弱,但是用了一些专用的代码,把处理的能力分配在每个端口上面,完全在内部交换机上的内部处理,实现了本机在那个时候是非常强的。我记得在2000年的时候,(英文)的设备大概能够支持到七万多的并发连接,在单台的设备上面,所以(英文)包括在很多大的网站,在2000年左右,在蓬勃发展的年代,实际上很多都是用的(英文),那个时候还没有LVS,没有开源的产品。

    03年、04年左右又发现了新的一个趋势,就是在这些并发连接的数量上面,七万已经远远不够了,今天我随便找一个银行的网银,大家可能觉得比较小,都是十几万的并发连接数,对于带宽的要求都是上百兆,上G,包括我看到现在我们在国外实施的案例里面,已经开始在单台设备上面处理能力要达到30多个G,这是一个非常恐怖的数字了。所以在03年、04年开始出现中央分布式的,所谓中央分布式的就是我们今天看到的很多产品,比如说以F5的代表,就是说我有一个英特尔的CPU来做七层的处理,有专门的PVA芯片来做四层处理,PVA芯片就是带着当年的在专有的系统上面去处理,因为在做那种处理的时候它的代码可以写的非常非常小,而且非常的精炼。(英文)的设备,整个OS不到一兆,我们现在都是几百兆的。所以在那个年代,基本上到心里为止把四层和七层分成两个部分去处理,那么让X86CPU它支持复杂指令,它更适合做一些七层的处理,但是对于纯四层的处理还是需要由硬件(英文)的芯片还做处理,04年左右它属于一个最佳的应用结构。

    这是现在的一个架构图,目前市场上主流产品的一个硬件结构。这中间商业的产品和开源的有一些区别点,它不光是一个纯软件设计,还涉及到一些硬件的设计结构。这是F5的一个结构图,有英特尔或者是CMDCPU去处理复杂的应用,有PVA芯片做纯四层的交换,它基本上跟CPU没有任何的关系了,我当年在此门户网站的时候看到过,当跑到两个G的吞吐流量,每秒钟一万个连接,CPU占有率是多少,1%到3%,每秒钟四万个(英文),大概新建有一万连接,并发大概有三四十万的样子,这个基本上有PVA的功能它来辅助了很多,基本上这些处理全部都不过CPU的处理。

    每个端口上有两个CPU,到后期也发展成为使用NP的方式,它实际上是一颗类似于CPU,是介于(英文)和CPU之间的东西,它有一定的可编程性,你可以在上面做一些编程的工作,它有自己的操作系统,但是它又固化了很多简单的操作,比如说查路由表,比如说现在有很多的防火墙,凡是流量吞吐率比较大的都是用的NP的处理结构。这是(英文)的结构,它是用的CPU加上(英文)的这种模式来做的处理。

    实际上发展到今天,我们要支持到30多个G的吞吐流量的时候,这个时候我们从F5自己也发现,第一个你用NP是不可能做到30G的处理,一个NP的流量只有3GF5的芯片最多只能做到10G,所以最新的产品结构得益于目前CPU的架构,特别是X86CPU,比如说你们去买服务器的时候,我相信在座的各位很少有买sun的服务器,这个因是什么呢?就是因为在X86CPU上跑的速度或者性能比原来(英文)芯片,比如说我查一个路由表,这个路由表很规范的时候,我可能用(英文)的芯片,它查询的速度可能非常快,如果我们做一些很复杂的操作,像查询这些动作的时候,还是用英特尔还是AMD的,他们在多媒体处理各方面都非常的好。这个图是F5最新的,它的流量进来的时候进入到中间的一个矩阵,它只是单纯做一个分发,这个分发16CPU的内核上面,相当于在负载均衡的设备里面,我们看到是一台设备,在负载均衡设备的里面,然后自己给自己很多的CPU的内核做了一次负载均衡。

    这就是一个非常恐怖的结构了。相对于我们在一台设备里面可以有16CPU一起工作,实际上这种结构它的负载均衡的一个最大好处,它不会像我们以前见到SMP,那个就是在多CPU并行处理的时候用了SMP的结构,它的增长曲线是曲线形的,当增长到一定程度的时候它的性能整个上不去了,那么在这种结构之下,它的性能增长曲线可以是一个直线的。因为在前端做流量分配的时候,它是用的硬件芯片,实际上和我们今天看到的我用硬件的负载均衡来给后面很多台机器做处理的时候,你在后面加一台服务器,那么能力马上就提升一台服务器的性能,而不会有任何的降低。这种结构我在系统的内部里面,我自己给自己做了一把负载均衡,这种负载均衡结构处理下来16CPU我们全部可以跑满,这个时候的性能就非常强。

    纯做一个技术讨论。其实我们如果去做网站和设计的时候,其实也可以参考一下有没有什么值得参考的内容。

    这是一个软件的发展,实际上负载均衡这个领域里面,除了硬件,硬件实际上只是做一些辅助的东西,在提升我们性能方面有好处。实际上真正的功能实现上面全部是靠软件来进行的。比如像LVS,它本身的结构也是属于非常好的结构。那么在以前的负载均衡,在之前基本上是通过修改Linux的内核来实现的,比如说我不用Linux的(英文)的堆栈,因为Linux自己的堆栈是很复杂,很麻烦的流程,它无法去满足在负载均衡的时候,实际上是一台机器是要放在几十台机器前面的时候,这个性能的要求,或者对速度的要求,对标准的Linux堆栈是不可能完成的,所以最早负载均衡的产品都是修改(英文),中间会加上硬件的辅助,比如说第一个数据包,第一个数据包分辨到哪台服务器上去了,第一个包一旦分配完了之后,可能要把后续的数据包都由下面的芯片,或者由底层硬件加速的芯片由它去做这种处理了。

    当然在那个时候其实基本上这种处理都是以(英文)方式为主的,因为为了追求一个速度,我只是看第一个包,第二个包,在前期做到七层的时候,可能能做到1K或者2K。比如说我要去看一个UI分配的时候,我必须先把用户请求里面的UI收下来,有一个缓存一样的东西,我先收下来,收下来之后我判断到说他UI里面的斜杠是ABC的,那应该去ABC的服务器,所以说负载均衡的运作模式它不能像防火墙的运作,因为它要去察看这种内容,我要把(英文)的内容收进来,然后我再分析它可能有什么样的东西,我根据这些内容再去做决策,这种方式,比如说我是一个长链接的使用,或者是我是一个很大的(英文),它只能看到(英文)最前面的东西,后面的内容只有放在后面的处理里面去了。

    到现在软件的一个结构,其实都叫做应用交付了,这种结构典型的就是以Linux+(英文)这种方式,(英文)的方式,是在Linux里面去跑(英文),当(英文)启动的时候登陆进去是一个很简单的Linux,当它启动的时候会接管几个东西,一个是接管CPU,把所有的CPU资源都抢占过来,你可以抢占很多的内核,把很多内核里面的资源,CPU的(英文)全部抢占过来。第二就是内存,把内存全部接管过来,给Linux只留很小的一部分,第四就抢占IO,在这里面自己去实现(英文)。在这种情况下想玩什么东西就可以玩什么东西了,目前我在国内上次看到有一个做手机页面转换的,我们用手机上网页面看的都很糟糕,可能这边看不到,那边看不到了,还把手机挪来挪去的,有一个做手机页面转换,他把这个页面,我们互联网的标准页面转换到手机上比较合适的页面,他们开始在用这种技术去做效果非常好。

    第二就是叫做多内核的并行处理,其实里面也是有很多的讲究和说法,就是怎么样去实现多内核的并行处理。到今天另外一种结构叫做Full  Proxy,这种结构,在这个中间是有两个TCP堆栈,它有一个五万多并发的限制,它是由于打开文件具体数量的限制,在Full  Porxy这种服务下,每一个连接进来我不是做的文件处理,而我只是有一个本地非常快速的产品表,作为其中的一个表项而已,所以在这种情况下可以支持上百万的并发量处理。客户端和Full  Porxy它们之间用一个TCP联系,Full  Porxy跟后台的Server是完全不同的另外一个TCP连接,就是说两个TCP的连接来完成一个TCP连接应该完成的工作,其实我们看到很多时候,我们在开源的系统里面看到有,用负载均衡可能用LVS,或者用别的,每一项功能都有独立的软件完成,要在单台的设备里面完成这些功能,基本上还没有,还没有说在一台设备里面完成所有的功能,当系统实现到这种结构的时候,它就可以有很多的东西去完成了。

    其实还有最大的优势,就是最高的安全性,我们学过防火墙,防火墙是三种,代理防火墙到今天已经基本上看不到了,原因就是因为性能的问题。但是对于Porxy的结构上来说,我们在前一段时间有一个国内很大的网银系统,它遭受了非常强烈的攻击,每秒钟大概十万个新连接进来,我们用这种结构除了我的CPU100%之外,业务没有受到任何的影响,而后台的服务器没有看到任何的攻击。只有F5的设备上能看到它的CPU上升上去了,但是在后台服务器看不到,原因是什么呢?就是因为所有的side发过来的时候,side攻击发到这个地方之后没有实质的内容,Full  Porxy根本不会往后面建立连接,必须前面这个连接全部建立完成,然后有数据过来的时候,这个时候(英文)才会跟后面建一个连接,我测过很多攻击,有的死的非常之快,但是这种结构完全可以把这些东西都屏蔽掉。

    前面是技术发展的趋势。

    另外是对行业的发展趋势,了解一下行业的发展趋势是很有必要的。这张图是来自于Gartner的一个市场分析图,Gartner是比较权威的,做的市场分析还是比较准确的。它做了一个ADN交付里面,里面很多的技术,从每年的增长量的发展历程,可以看到叫文件虚拟化,文件虚拟化它现在在一个非常快速的增长过程中,SSLVPN,还有AdvancedADC,就是把这种很多的功能包含在单一盒子里面的处理。它是属于目前增长最快的,我们很多用的同时,我可能同时需要负载均衡,又需要SSL加解密,如果做网管来说的话,最好的办法我觉得(英文)把这些功能都实现了,所以这部分的市场是属于目前增长最快的市场。反而是四、七层,从一个大的市场的功能来说,它是在萎缩。另外就是应用防火墙,很多都体验到各种各样的攻击模式了,比如说CC攻击,跨站攻击,所以说在今天来说,应用防火墙,就是专门Web应用的防火墙是非常强的增长模式,Web应用防火墙这是目前增长最快速的市场。

    这是Gartner企业CIO的建议,这个怎么去发展,这个跟个人职业生涯有关的,Gartner意思就是说作为一个CIO来讲的话,美国的企业里面他们目前都是开始专门有一个部门,或者专门有一个组,或者有一堆人专门来负责应用交付的东西,应用交付包含很多技术了,我们所谓横跨在网络和应用之间的这些内容,我既不是搞开发的,也不是搞网络的,而是在中间的负载均衡处理上的。特别是银行的客户里面他们最挠头的,比如说在大的银行里面他们都划分网络处,系统处,应用处,三个部门下来最后负载均衡,负载均衡这个设备该归谁管?有些网站,或者有些单位是说这个东西是一个网络设备,你看上面那么多端口归网络处管,网络处很挠头,说天天都在讲应用,什么叫做负载均衡,这全是跟应用相关的东西,应用拿到这个东西也很头疼,说我哪儿懂你的网络设备,你上面那么多的端口,都非常的痛苦。所以在整个流程里面,将来一定会在这一块出现一个部门,或者说企业其实很多在选拔CIO的时候他们都会按照,就是说了解这块内容的人,他将来一定是能够横跨很多部门,能了解很多东西的人。

    这是大型门户网站的建设,这个不一定是大型门户网站的建设,本地双线接入,刚才有一些提到的问题,本地怎么样去做双线接入,一个己方有多条线路的时候怎么去处理,F5的解决方案,当每一个连接进来的时候我可以记下来,比如说同时记录下来它的原麦克地址,当这个连接再返回的时候我就顺着原麦克地址返回去,当有两条或者多条链路接入的时候,尽管是0.0的路由我们也可以完全正常的去提供服务,对外提供服务。这个是属于一个非常标准的功能。另外就是WebPortal架构,前端都是由Cache组成,后面是一些数据库等等来提供服务,除了在负载均衡上面,还有一个对于Cache服务器利用率的问题,如何去提高它的利用率,这里面主要是用hash的方式,我把每一个用户请求(英文),对于某一个特定的(英文)来说,我只去其中的一台Cache服务器,它基本上都是得到不同的内容,在这个基础之上我们还做了一个事情,就是把Cache服务器进行一个小的分组,分组之后我们F5是做了一个叫(英文)的方式,让它在一台服务器倒掉的时候,不会造成整个(英文)的重算。还有连接复用的问题,十几万的并发连接进来,在后台服务器上面大概只有几千个并发的连接,非常的少,相当于我们把短连接都转换成长连接了,有一些图片可以做一个(英文)的加速。

    对于压缩来说,在商业化的产品里面都是有硬件的压缩卡,可以处理到几十个Gache的压缩处理流量。URL  Switching,就是根据不同的URL的前端分配到后面不同的服务器群组上面,这也是提高Ca利用率很有效的方式。中间件的优化,在商业化的产品里面都可以去检查后面CPU的状况,根据CPU利用率的状态来实现做一个负载均衡。在CDN的建设里面,一个是本地双IDC的,叫做GTM设备,它通过DAS的解析,解析出来的地址所对应的就是网通的IDC,如果是源是从电信过来的,解析出来的是电信的IDC,这两个之间会互相做一个探测的工作,任何一边出现问题可以做随时的切换。在本地IDC后台处理里面,一定要进入这个地方是有一个专线的。很多我们的用户都会有一根专线,把两边的服务器都共享起来,这样来实现一个资源调配更加的优化。

    多层异地多IDC的分布里面,可以采用像一些特别大的CDN,在电信和网通的CDN服务,都是用F5结构分成两层CDN架构,全国有一个大的CDN设计结构,在每个省里面还有小的CDN,这种情况下,对于我们很多网站来说不一定像电信、网通分到那么细,比如说网通在北京、上海、广州有三个机房,在移动可能也有两个机房,在铁通或者电信,或者是其他的这些,那么可能还和(英文)有合作,就是我在国外的用户来访问,这些都是通过全局的分配策略,通过我们GTM的方式去把它分配到不同的CDN上面去,形成一个多层的CDN架构。这是最终整合的一个方案,有核心的一个内网,这个内网主要是提供真正的动态内容服务为主的内网。在内网的外侧全部都是在每个机房出口,就是本地都有多个的出口,同时有很多外面小一级的CDN来提供这种服务。当我们真正建设到一个很大的网站架构的时候,最后的结构就会变成这样的一个结构。