本文转载自: http://www.taocms.org/922.html
下面是“黑夜路人”的《大型网站架构优化(PHP)与相关开源软件使用建议》
image.png


概述

F5全称: F5-BIG-IP-GTM 全球流量管理器.

是一家叫F5 Networks的公司开发的四~七层交换机,软硬件捆绑.

据说最初用BSD系统,现在是LINUX;硬件是Intel的PC架构,再加周边的网络和专用加速设备.

当然要提提售价, 都是几十万RMB的身价.

这宝贝是用于对流量和内容进行管理分配的设备,也就是负载均衡.

从名字就能看出来:BIG-IP.

外部看来是一个IP,内部可却是几十台应用服务器.表现为一个虚拟的大服务器.

所以我才说: 好大一个IP.

LVS = Linux Virtual Server

是俺们中国人,一个叫章文嵩的博士推创开发出来的,

他的web:http://zh.linuxvirtualserver.org/

IBM网站的资料:集群的可扩展性及其分布式体系结构(4)

博士关于LVS和F5的对比:

关于和F5的差别,很难一句话说明白,都是做负载均衡的设备。

F5虽然也是基于BSD系统修改的(据说最新的基于Linux了),但重要的交换部分,则是通过专门的交换芯片实现的(类似有了专门的图像处理芯片,就可以省去大量的CPU对图像处理的运算),这样他的性能就不会很依赖于主机的操作系统的处理能力。

F5上负载均衡大多是基于NAT/SNAT,也可以实现Proxy,但用的较少,做为一个上市公司,F5自然在产品化程度上做的很好,无论配置管理方便性、灵活性,性能和稳定性上都比较好。

LVS在NAT模式下,和F5的功能基本上是一样的,但毕竟LVS是纯粹的软件,性能是依赖于主机的运算能力的。

而且,LVS是开源的项目,不应该和一个商业产品来比较,人家那是卖钱的,有很多人来维护和开发,而LVS一直是章博士义务来维护开发的,想要更好的功能,就需要有更多的人参与进来才行。

说的相当透彻了.

DNS轮询是做负载均衡最简单有效的实现方法,各方面代价都极低.货好便宜量又足.

缺点就是由于没有检测机制, 不够均衡,容错反应时间长.

国内门户用这个技术的很多,配合squid有很好的效果.

当然,不做负载均衡, 直接从多个ISP拉几根线,分别提供服务是最原始的方法.

CDN = Content Delivery Network,内容分发网络。

细究起来上面的都是cdn的实现方式.

国内开放的服务很少(chinacache),国外却非常流行.

就是提供缓存节点,把目标网络内容的访问转化为临近节点的访问.

响应速度/安全/透明/扩展,特别是中国这种还没解放台湾就南北分裂的网络格局下,更为伟大.

不过也是贵族的服务,建设成本很高.

ADSL + DDNS + CDN 也算是另一个建小站的途径了.

把空间的租用费用投资在流量上, 直接有效. 不过电费和稳定性上不容乐观.

其实CDN不只是做网站服务的, 比如在韩国,多数的CND流量都是被网络游戏占用了.

试想,如果能大范围铺开CDN节点, 那还有必要一个游戏分那么多区,占用那么多服务器么?

结论是还有必要 虽然确实访问连接和响应速度对现在的网络游戏有很大影响,但开发瓶颈更在于计算能力和数据存储访问.

又一个试想, 把CDN和P2P结合, 上网的个人PC只要提供CDN服务, 就可以每月获的xx美金的佣金.由资讯和应用提供商买单.

怎么看这都是个良性发展的产业链, 就像google明年要推出免费手机,让广告商买单一样.

不过唯一不高兴的就应该是ISP们了,现在bt这样的共享都被封杀.

除非这个业务被他们自己垄断,不然也是僵尸的下场.

用户也不是百利无害的, 数据安全和资讯及时有挑战.

GV们也不是看戏的,现在还有网站可以封,写个blog都要100万注册资金;

如果一堆SSL加密的数据四处流窜,神龙无首无尾,怎么屏蔽过滤,怎么防川啊~

回望眼,越看越像网摘,索性就再摘段完整的

F5功能介绍:

1.多链路的负载均衡和冗余

与互联网络相关的关键业务都需要安排和配置多条ISP接入链路以保证网络服务的质量,消除单点故障,减少停机时间。多条ISP接入的方案并不是简单的多条不同的广域网络的路由问题,因为不同的ISP有不同自治域,所以必须考虑到两种情况下如何实现多条链路的负载均衡:

more..

less..

内部的应用系统和网络工作站在访问互联网络的服务和网站时如何能够在多条不同的链路中动态分配和负载均衡,这也被称为OUTBOUND流量的负载均衡。

互联网络的外部用户如何在外部访问内部的网站和应用系统时也能够动态的在多条链路上平衡分配,并在一条链路中断的时候能够智能地自动切换到另外一条链路到达服务器和应用系统,这也被称作为INBOUND流量的负载均衡。

F5 的BIG-IP LC可以智能的解决以上两个问题:

对于OUTBOUND流量,BIG-IP LC接收到流量以后,可以智能的将OUTBOUND流量分配到不同的INTERNET接口,并做源地址的NAT,可以指定某一合法IP地址进行源地址的 NAT,也可以用BIG-IP LC的接口地址自动映射,保证数据包返回时能够正确接收。

对于INBOUND流量,BIG-IP LC分别绑定两个ISP 服务商的公网地址,解析来自两个ISP服务商的DNS解析请求。BIG-IP LC不仅可以根据服务器的健康状况和响应速度回应LDNS相应的IP地址,还可以通过两条链路分别与LDNS建立连接,根据RTT时间判断链路的好坏,并且综合以上两个参数回应LDNS相应的IP地址。

2.防火墙负载均衡

考虑到绝大多数的防火墙只能达到线速的30%吞吐能力,故要使系统达到设计要求的线速处理能力,必须添加多台防火墙,以满足系统要求。然而,防火墙必须要求数据同进同出,否则连接将被拒绝。如何解决防火墙的负载均衡问题,是关系到整个系统的稳定性的关键问题。

F5的防火墙负载均衡方案,能够为用户提供异构防火墙的负载均衡与故障自动排除能力。典型的提高防火墙处理能力的方法是采用“防火墙三明治”的方法,以实现透明设备的持续性。这可满足某些要求客户为成功安全完成交易必须通过同一防火墙的应用程序的要求,也能够维护原来的网络安全隔离的要求。F5标准防火墙解决方案如图所示:

防火墙负载均衡连接示意图

3.服务器负载均衡

对于所有的对外提供服务的服务器,均可以在BIG-IP上配置Virtual Server实现负载均衡,同时BIG-IP可持续检查服务器的健康状态,一旦发现故障服务器,则将其从负载均衡组中摘除。

BIG-IP利用虚拟IP地址(VIP由IP地址和TCP/UDP应用的端口组成,它是一个地址)来为用户的一个或多个目标服务器(称为节点:目标服务器的IP地址和TCP/UDP应用的端口组成,它可以是internet的私网地址)提供服务。因此,它能够为大量的基于TCP/IP的网络应用提供服务器负载均衡服务。根据服务类型不同分别定义服务器群组,可以根据不同服务端口将流量导向到相应的服务器。BIG-IP连续地对目标服务器进行L4到 L7合理性检查,当用户通过VIP请求目标服务器服务时,BIG-IP根椐目标服务器之间性能和网络健康情况,选择性能最佳的服务器响应用户的请求。如果能够充分利用所有的服务器资源,将所有流量均衡的分配到各个服务器,我们就可以有效地避免“不平衡”现象的发生。

利用UIE+iRules可以将TCP/UDP数据包打开,并搜索其中的特征数据,之后根据搜索到的特征数据作相应的规则处理。因此可以根据用户访问内容的不同将流量导向到相应的服务器,例如:根据用户访问请求的URL将流量导向到相应的服务器。

4.系统高可用性

系统高可用性主要可以从以下几个方面考虑:

4.1.设备自身的高可用性

F5 BIG-IP专门优化的体系结构和卓越的处理能力保证99.999%的正常运行时间,在双机冗余模式下工作时可以实现毫秒级切换,保证系统稳定运行,另外还有冗余电源模块可选。在采用双机备份方式时,备机切换时间最快会在200ms之内进行切换。BIG-IP 产品是业界唯一的可以达到毫秒级切换的产品, 而且设计极为合理,所有会话通过Active 的BIG-IP 的同时,会把会话信息通过同步数据线同步到Backup的BIG-IP,保证在Backup BIG-IP内也有所有的用户访问会话信息;另外每台设备中的watchdog芯片通过心跳线监控对方设备的电频,当Active BIG-IP故障时,watchdog会首先发现,并通知Backup BIG-IP接管Shared IP,VIP等,完成切换过程,因为Backup BIG-IP中有事先同步好的会话信息,所以可以保证访问的畅通无阻。

4.2.链路冗余

BIG-IP可以检测每条链路的运行状态和可用性,做到链路和ISP故障的实时检测。一旦出现故障,流量将被透明动态的引导至其它可用链路。通过监控和管理出入数据中心的双向流量,内部和外部用户均可保持网络的全时连接。

4.3.服务器冗余

多台服务器同时提供服务,当某一台服务器故障不能提供服务时,用户的访问不会中断。BIG-IP可以在OSI七层模型中的不同层面上对服务器进行健康检查,实时监测服务器健康状况,如果某台服务器出现故障,BIG-IP确定它无法提供服务后,就会将其在服务队列中清除,保证用户正常的访问应用,确保回应内容的正确性。

5.高度的安全性

BIG-IP采用防火墙的设计原理,是缺省拒绝设备,它可以为任何站点增加额外的安全保护,防御普通网络攻击。可以通过支持命令行的SSH或支持浏览器管理的SSL方便、安全的进行远程管理,提高设备自身的安全性;能够拆除空闲连接防止拒绝服务攻击;能够执行源路由跟踪防止IP欺骗;拒绝没有ACK 缓冲确认的SYN防止SYN攻击;拒绝teartop和land攻击;保护自己和服务器免受ICMP攻击;不运行SMTP、FTP、TELNET或其它易受攻击的后台程序。

BIG-IP的Dynamic Reaping特性可以高效删除各类网络DoS攻击中的空闲连接,这可以保护BIG-IP不会因流量过多而瘫痪。BIG-IP可以随着攻击量的增加而加快连接切断速率,从而提供一种具有极强适应能力、能够防御最大攻击量的解决方案。

BIG-IP的Delay Binding技术可以为部署在BIG-IP后面的服务器提供全面地SYN Flood保护。此时,BIG-IP设备作为安全代理来有效保护整个网络。

BIG-IP可以和其它安全设备配合,构建动态安全防御体系。BIG-IP可以根据用户单位时间内的连接数生成控制访问列表,将该列表加载到其它安全设备上,有效控制攻击流量。

6.SSL加速

在每台BIG-IP上,都具有SSL硬件加速芯片,并且自带100个TPS的License,用户可以不通过单独付费,就可以拥有100个TPS的 SSL 加速功能,节约了用户的投资。在将来系统扩展时,可以简单的通过License升级的方式,获得更高的SSL加速性能。

7.系统管理

BIG-IP提供HTTPS、SSH、Telnet、SNMP等多种管理方式,用户客户端只需操作系统自带的浏览器软件即可,不需安装其它软件。可以通过支持命令行的SSH或支持浏览器管理的SSL方便、安全的进行远程管理。直观易用的Web图形用户界面大服务降低了多归属基础设施的实施成本和日常维护费用。

BIG-IP包含详尽的实时报告和历史纪录报告,可供评测站点流量、相关ISP性能和预计带宽计费周期。管理员可以通过全面地报告功能充分掌握带宽资源的利用状况。

另外,通过F5 的i-Control 开发包,目前国内已有基于i-Control开发的网管软件x-control, 可以定制针对系统服务特点的监控系统,比如服务的流量情况、各种服务连接数、访问情况、节点的健康状况等等,进行可视化显示。

告警方式可以提供syslog、snmp trap、mail等方式。

8.其它

内存扩充能力:F5 BIG-IP 1000以上设备单机最大可扩充到2G内存,此时可支持400万并发回话。

升级能力:F5 所有设备均可通过软件方式升级,在服务有效期内,升级软件包由F5公司提供。F5 NETWORKS已经发布其系统的最新版本BIG-IP V9.0,主要有以下特性:虚拟 IPV4 / IPV6 应用、加速Web应用高达3倍、减少66%甚至更多的基础架构成本、确保高优先级应用的性能、确保更高级别的可用性、大幅提高网络和应用安全性、强大的性能,简单的管理方式、无以匹敌的自适应能力和延展能力和突破的性能表现力。其强大的HTTP压缩功能可以将用户下载时间缩短50%,节省80%的带宽。

IP地址过滤和带宽控制:BIG-IP可以根据访问控制列表对数据包进行过滤,并且针对某一关键应用进行带宽控制,确保关键应用的稳定运行。

配置管理及系统报告:F5 BIG-IP提供WEB 界面配置方式和命令行方式进行配置管理,并在其中提供了丰富的系统报告,更可通过i-Control自行开发复杂的配置及报告生成。


原作者经验之谈

作为一名Linux/unix系统工程师,这几年一直在涉及到对外项目,经手过许多小中型网站的架构,F5、LVS及Nginx接触的都比较多,我想一种比较通俗易懂的语气跟大家说明下何谓负载均衡,何谓Linux集群,帮助大家走出这个误区,真正意义上来理解它们,项目施工案例请参考我在network.51cto.com上的同类文章。

一、目前网站架构一般分成负载均衡层、web层和数据库层,我其实一般还会多加一层,即文件服务器层,因为现在随着网站的PV越来越多,文件服务器的压力也越来越大;不过随着moosefs、DRDB+Heartbeat+NFS的日趋成熟,这问题也不大了.网站最前端的负载均衡层称之为Director,它起的是分摊请求的作用,最常见的就是轮询。

二、F5是通过硬件的方式来实现负载均衡,它较多应用于CDN系统,用于squid反向加速集群的负载均衡,是专业的硬件负载均衡设备,尤其适用于每秒新建连接数和并发连接数要求高的场景;LVS和Nginx是通过软件的方式来实现的,但稳定性也相当强悍,在处理高并发的情况也有相当不俗的表现。

三、Nginx对网络的依赖较小,理论上只要ping得通,网页访问正常,nginx就能连得通,nginx同时还能区分内外网,如果是同时拥有内外网的节点,就相当于单机拥有了备份线路;lvs就比较依赖于网络环境,目前来看服务器在同一网段内并且lvs使用direct方式分流,效果较能得到保证。

四、目前较成熟的负载均衡高可用技术有LVS+Keepalived、Nginx+Keepalived,以前Nginx没有成熟的双机备份方案,但通过shell脚本监控是可以实现的,有兴趣的可具体参考我在51cto上的项目实施方案;另外,如果考虑Nginx的负载均衡高可用,也可以通过DNS轮询的方式来实现,有兴趣的可以参考张宴的相关文章。

五、集群是指负载均衡后面的web集群或tomcat集群等,但现在的集群意义泛指了整个系统架构,它包括了负载均衡器以及后端的应用服务器集群等,现在许多人都喜欢把Linux集群指为LVS,但我觉得严格意义上应该区分开。

六、负载均衡高可用中的高可用指的是实现负载均衡器的HA,即一台负载均衡器坏掉后另一台可以在<1s秒内切换,最常用的软件就是Keepalived和Heatbeat,成熟的生产环境下的负载均衡器方案有Lvs+Keepalived、Nginx+Keepalived。

七、LVS的优势非常多:①抗负载能力强;②工作稳定(因为有成熟的HA方案);③无流量;④基本上能支持所有的应用,基于以上的优点,LVS拥有不少的粉丝;但世事无绝对,LVS对网络的依赖性太大了,在网络环境相对复杂的应用场景中,我不得不放弃它而选用Nginx。

八、Nginx对网络的依赖性小,而且它的正则强大而灵活,强悍的特点吸引了不少人,而且配置也是相当的方便和简约,小中型项目实施中我基本是考虑它的;当然,如果资金充足,F5是不二的选择。

九、大型网站架构中其实可以结合使用F5、LVS或Nginx,选择它们中的二种或三种全部选择;如果因为预算的原因不选择F5,那么网站最前端的指向应该是LVS,也就是DNS的指向应为lvs均衡器,lvs的优点令它非常适合做这个任务。重要的ip地址,最好交由lvs托管,比如数据库的ip、webservice服务器的ip等等,这些ip地址随着时间推移,使用面会越来越大,如果更换ip则故障会接踵而至。所以将这些重要ip交给lvs托管是最为稳妥的。

十、VIP地址是Keepalived虚拟的一个IP,它是一个对外的公开IP,也是DNS指向的IP;所以在设计网站架构时,你必须向你的IDC多申请一个对外IP

十一、在实际项目实施过程中发现,Lvs和Nginx对https的支持都非常好,尤其是LVS,相对而言处理起来更为简便。

十二、在LVS+Keepalived及Nginx+Keepalived的故障处理中,这二者都是很方便的;如果发生了系统故障或服务器相关故障,即可将DNS指向由它们后端的某台真实web,达到短期处理故障的效果,毕竟广告网站和电子商务网站的PV就是金钱,这也是为什么要将负载均衡高可用设计于此的原因;大型的广告网站我就建议直接上CDN系统了。

十三、现在Linux集群都被大家神话了,其实这个也没多少复杂;关键看你的应用场景,哪种适用就选用哪种,Nginx和LVS、F5都不是神话,哪种方便哪种适用就选用哪种。

十四、另外关于session共享的问题,这也是一个老生长谈的问题了;Nginx可以用ip_hash机制来解决session的问题,而F5和LVS都有会话保持机制来解决这个问题,此外,还可以将session写进数据库,这也是一个解决session共享的好办法,当然这个也会加重数据库的负担,这个看系统架构师的取舍了。

十五、我现在目前维护的电子商务网站并发大约是1000左右,以前的证券资讯类网站是100左右,大型网上广告大约是3000,我感觉web层的并发越来越不是一个问题;现在由于服务器的强悍,再加上Nginx作web的高抗并发性,web层的并发并不是什么大问题;相反而言,文件服务器层和数据库层的压力是越来越大了,单NFS不可能胜任目前的工作,现在好的方案是moosefs和DRDB+Heartbeat+NFS;而我喜欢的Mysql服务器,成熟的应用方案还是主从,如果压力过大,我不得不选择oracle的RAC双机方案。

十六、现在受张宴的影响,大家都去玩Nginx了(尤其是作web),其实在服务器性能优异,内存足够的情况下,Apache的抗并发能力并不弱,整个网站的瓶颈应该还是在数据库方面;我建议可以双方面了解Apache和Nginx,前端用Nginx作负载均衡,后端用Apache作web,效果也是相当的好。

十七、Heartbeat的脑裂问题没有想象中那么严重,在线上环境可以考虑使用;DRDB+Heartbeat算是成熟的应用了,建议掌握。我在相当多的场合用此组合来替代EMC共享存储,毕竟30万的价格并不是每个客户都愿意接受的。

十八、无论设计的方案是多么的成熟,还是建议要配置Nagios监控机来实时监控我们的服务器情况;邮件和短信报警都可以开启,毕竟手机可以随身携带嘛;有条件的还可以购买专门的商业扫描网站服务,它会每隔一分钟扫描你的网站,如果发现没有alive会向你的邮件发警告信息或直接电话联系。

十九、至少网站的安全性问题,我建议用硬件防火墙,比较推荐的是华赛三层防火墙+天泰web防火墙,DDOS的安全防护一定要到位;Linux服务器本身的iptables和SElinux均可关闭,当然,端口开放越少越好。

补充说明:测试网站的响应时间是用http://tools.pingdom.com,发现上了LVS+Keepalived、Nginx+Keepalived后并不影响速度,这一点大家就不要多虑了,Nginx现在作反向加速也日趋成熟了。