现在的位置: 首页 > 综合 > 正文

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

2018年03月19日 ⁄ 综合 ⁄ 共 8261字 ⁄ 字号 评论关闭



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
,从商业化产品的角度来说,那么
LVS

1996
年时候的商业化的产品是属于非常接近的结构,实际上开源和专业化本身就是一个互相学习、互相补充的过程。那个时候我见过最早的
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
不到一兆,我们现在都是几百兆的。所以在那个年代,基本上到心里为止把四层和七层分成两个部分去处理,那么让
X86

CPU
它支持复杂指令,它更适合做一些七层的处理,但是对于纯四层的处理还是需要由硬件(英文)的芯片还做处理,
04
年左右它属于一个最佳的应用结构。

   

这是现在的一个架构图,目前市场上主流产品的一个硬件结构。这中间商业的产品和开源的有一些区别点,它不光是一个纯软件设计,还涉及到一些硬件的设计结构。这是
F5
的一个结构图,有英特尔或者是
CMD

CPU
去处理复杂的应用,有
PVA
芯片做纯四层的交换,它基本上跟
CPU
没有任何的关系了,我当年在此门户网站的时候看到过,当跑到两个
G
的吞吐流量,每秒钟一万个连接,
CPU
占有率是多少,
1
%到
3
%,每秒钟四万个(英文),大概新建有一万连接,并发大概有三四十万的样子,这个基本上有
PVA
的功能它来辅助了很多,基本上这些处理全部都不过
CPU
的处理。

   

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

   

实际上发展到今天,我们要支持到
30
多个
G
的吞吐流量的时候,这个时候我们从
F5
自己也发现,第一个你用
NP
是不可能做到
30

G
的处理,一个
NP
的流量只有
3

G

F5
的芯片最多只能做到
10

G
,所以最新的产品结构得益于目前
CPU
的架构,特别是
X86

CPU
,比如说你们去买服务器的时候,我相信在座的各位很少有买
sun
的服务器,这个因是什么呢?就是因为在
X86

CPU
上跑的速度或者性能比原来(英文)芯片,比如说我查一个路由表,这个路由表很规范的时候,我可能用(英文)的芯片,它查询的速度可能非常快,如果我们做一些很复杂的操作,像查询这些动作的时候,还是用英特尔还是
AMD
的,他们在多媒体处理各方面都非常的好。这个图是
F5
最新的,它的流量进来的时候进入到中间的一个矩阵,它只是单纯做一个分发,这个分发
16

CPU
的内核上面,相当于在负载均衡的设备里面,我们看到是一台设备,在负载均衡设备的里面,然后自己给自己很多的
CPU
的内核做了一次负载均衡。

   

这就是一个非常恐怖的结构了。相对于我们在一台设备里面可以有
16

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

CPU
我们全部可以跑满,这个时候的性能就非常强。

   

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

   

这是一个软件的发展,实际上负载均衡这个领域里面,除了硬件,硬件实际上只是做一些辅助的东西,在提升我们性能方面有好处。实际上真正的功能实现上面全部是靠软件来进行的。比如像
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
的结构上来说,我们在前一段时间有一个国内很大的网银系统,它遭受了非常强烈的攻击,每秒钟大概十万个新连接进来,我们用这种结构除了我的
CPU

100
%之外,业务没有受到任何的影响,而后台的服务器没有看到任何的攻击。只有
F5
的设备上能看到它的
CPU
上升上去了,但是在后台服务器看不到,原因是什么呢?就是因为所有的
side
发过来的时候,
side
攻击发到这个地方之后没有实质的内容,
Full 
Porxy

根本不会往后面建立连接,必须前面这个连接全部建立完成,然后有数据过来的时候,这个时候(英文)才会跟后面建一个连接,我测过很多攻击,有的死的非常之快,但是这种结构完全可以把这些东西都屏蔽掉。

   

前面是技术发展的趋势。

   

另外是对行业的发展趋势,了解一下行业的发展趋势是很有必要的。这张图是来自于
Gartner
的一个市场分析图,
Gartner
是比较权威的,做的市场分析还是比较准确的。它做了一个
ADN
交付里面,里面很多的技术,从每年的增长量的发展历程,可以看到叫文件虚拟化,文件虚拟化它现在在一个非常快速的增长过程中,
SSL

VPN
,还有
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
来提供这种服务。当我们真正建设到一个很大的网站架构的时候,最后的结构就会变成这样的一个结构。

 

抱歉!评论已关闭.