负载均衡全战案例解析_第1页
负载均衡全战案例解析_第2页
负载均衡全战案例解析_第3页
负载均衡全战案例解析_第4页
负载均衡全战案例解析_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

负载均衡全真实战案例解析123…4128…31234本次聚会的主题一个凄惨的效劳器故事两位Linux系统专家的心声三份千元培训卡的发放100位51CTO网友的同城聚会解读负载均衡技术的实际应用可怜的鲍勃鲍勃是公司在推销新技术和IT架构方案开展上的革新者。在他的推动下,公司的网站已经形成了非常快速的开发流程,很快就集成到主站中去了,以便可以进行更多的用户交互使用。当公司策略的执行效率突破了历史最高点的时候,他发现系统的运行有些异常,不但前台Web效劳器从后台数据库中读取过程本钱开始徒然上升,容易出错而且在响应客户请求方面显得缓慢。与此同时,当Mira〔鲍勃的新同事〕开始为博客和BBS更新模组时,系统终于不堪重负,倒下了。鲍勃和Mira感到他们的权威受到了挑战,但董事会却担忧因为系统因为缓慢,一些用户会散播谣言,公司的信誉度会影响股票上市的进度。在访问量翻倍的时候,我们的系统却越来越慢?我该如何做呢?Up是购置更顶级的效劳器吗?如果用户又增多了怎么办?鲍勃需要的究竟是什么?怎么突然会出现这样的问题?

Internet的飞速开展给网络带宽和效劳器带来巨大的挑战。 Internet的飞速开展。百兆、千兆技术已经得到广泛应用,在主干网上密集波分复用〔DWDM〕将成为宽带IP的主流技术〔每秒到达传输速率最大到达400Gb/s〕。 GigabitEthernet在效劳器上很难使得其吞吐率到达1Gb/s的原因是协议栈〔TCP/IP〕和操作系统的低效,以及处理器的低效,这需要对协议的处理方法、操作系统的调度和IO的处理作更深入的研究。为什么要集群?对用硬件和软件方法实现高可伸缩、高可用网络效劳的需求不断增长,这种需求可以归结以下几点:可伸缩性〔Scalability〕,当效劳的负载增长时,系统能被扩展来满足需求,且不降低效劳质量。高可用性〔Availability〕,尽管局部硬件和软件会发生故障,整个系统的效劳必须是每天24小时每星期7天可用的。可管理性〔Manageability〕,整个系统可能在物理上很大,但应该容易管理。价格有效性〔Cost-effectiveness〕,整个系统实现是经济的、易支付的。要解决上述几个需求,靠单个的效劳器不能满足需求,因此,只能使用多台效劳器联合工作以到达需求,这就是所谓的集群。什么是负载均衡?高可扩展性集群一般的框架结构如下图〔以Web访问为例,其它应用类似〕。后台的多个Web效劳器上面有相同的Web内容,Internet客户端的访问请求首先进入一台效劳器,由它根据负载均衡策略〔算法〕合理地分配给某个Web效劳器。每个Web效劳器有相同的内容做起来不难,所以选择负载均衡策略〔算法〕是个关键问题。负载均衡根本概念:什么是负载均衡负载均衡的作用就像轮流值日制度,把任务分给大家来完成,以免让一个人过度劳累。但是与轮流值日制度不同的是,负载均衡是一种动态均衡,它通过一些工具实时地分析数据包,掌握网络中的数据流量状况,把任务理分配出去。对于以下不同的应用环境,使用的均衡策略(算法)是不同的。电子商务网站,它的计算负荷大网络数据库应用,读写频繁,效劳器的存储子系统面临很大压力视频效劳应用,数据传输量大,网络接口负担重压负载均衡根本概念因为应用环境的不同,均衡策略〔算法〕也就有了多种多样的形式。广义上的负载均衡既可以设置专门的网关、负载均衡器,也可以通过一些专用软件与协议来实现。在OSI七层协议模型中的第二〔数据链路层〕、第三〔网络层〕、第四〔传输层〕、第七层〔应用层〕都有相应的负载均衡策略〔算法〕.数据链路层:根据数据包的目的MAC地址选择不同的路径;网络层:利用基于IP地址的分配方式将数据流疏通到多个节点传输层和应用层的交换〔Switch〕:本身便是一种基于访问流量的控制方式,能够实现负载均衡。集群类型目前的集群类型主要概括为三大类型:高可扩展性集群技术〔负载均衡〕高可靠性集群(HA)高性能计算集群(HPC)高可扩展性集群技术就是带均衡策略〔算法〕的效劳器群集,负载均衡群集在多节点之间按照一定的策略〔算法〕分发网络或计算处理负载。扩展效劳器带宽增加吞吐量提高数据处理能力防止单点故障。负载均衡的实现虚拟效劳器的体系结构如下图,一组效劳器通过高速的局域网或者地理分布的广域网相互连接,在它们的前端有一个负载调度器〔LoadBalancer〕。负载调度器能无缝地将网络请求调度到真实效劳器上,从而使得效劳器集群的结构对客户是透明的,客户访问集群系统提供的网络效劳就像访问一台高性能、高可用的效劳器一样。客户程序不受效劳器集群的影响不需作任何修改。系统的伸缩性通过在效劳机群中透明地参加和删除一个节点来到达,通过检测节点或效劳进程故障和正确地重置系统到达高可用性。由于该负载调度技术是在Linux内核中实现的,因此称之为Linux虚拟效劳器〔LinuxVirtualServer〕。LVS负载均衡器介绍-软件、硬件IP虚拟效劳器软件IPVS在调度器的实现技术中,IP负载均衡技术是效率最高的。在已有的IP负载均衡技术中有通过网络地址转换〔NetworkAddressTranslation〕将一组效劳器构成一个高性能的、高可用的虚拟效劳器,我们称之为VS/NAT技术〔VirtualServerviaNetworkAddressTranslation〕,大多数商品化的IP负载均衡调度器产品都是使用此方法,如Cisco的LocalDirector、F5的Big/IP和Alteon的ACEDirector。在分析VS/NAT的缺点和网络效劳的非对称性的根底上,我们提出通过IP隧道实现虚拟效劳器的方法VS/TUN〔VirtualServerviaIPTunneling〕,和通过直接路由实现虚拟效劳器的方法VS/DR〔VirtualServerviaDirectRouting〕,它们可以极大地提高系统的伸缩性。所以,IPVS软件实现了这三种IP负载均衡技术,它们的大致原理如下:LVS集群的通用体系结构三层主要组成局部为:负载调度器〔loadbalancer〕它是整个集群对外面的前端机,负责将客户的请求发送到一组效劳器上执行,而客户认为效劳是来自一个IP地址〔我们可称之为虚拟IP地址〕上的。效劳器池〔serverpool〕是一组真正执行客户请求的效劳器,执行的效劳有WEB、MAIL、FTP和DNS等。共享存储〔sharedstorage〕它为效劳器池提供一个共享的存储区,这样很容易使得效劳器池拥有相同的内容,提供相同的效劳。LVS集群的通用体系结构共享存储区

LVS负载均衡器模式〔1〕VirtualServerviaNetworkAddressTranslation〔VS/NAT〕通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实效劳器;真实效劳器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。〔2〕VirtualServerviaIPTunneling〔VS/TUN〕采用NAT技术时,由于请求和响应报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。为了解决这个问题,调度器把请求报文通过IP隧道转发至真实效劳器,而真实效劳器将响应直接返回给客户,所以调度器只处理请求报文。由于一般网络效劳应答比请求报文大许多,采用VS/TUN技术后,集群系统的最大吞吐量可以提高10倍。〔3〕VirtualServerviaDirectRouting〔VS/DR〕VS/DR通过改写请求报文的MAC地址,将请求发送到真实效劳器,而真实效劳器将响应直接返回给客户。同VS/TUN技术一样,VS/DR技术可极大地提高集群系统的伸缩性。这种方法没有IP隧道的开销,对集群中的真实效劳器也没有必须支持IP隧道协议的要求,但是要求调度器与真实效劳器都有一块网卡连在同一物理网段上。LVS集群---可伸缩Web效劳集群LVS集群---可伸缩Web效劳集群动态页面〔如PHP、JSP和CGI等〕:需要访问的动态数据一般存储在数据库效劳器中。数据库效劳运行在独立的效劳器上,为所有Web效劳器共享。无论同一Web效劳器上多个动态页面访问同一数据,还是不同Web效劳器上多个动态页面访问同一数据,数据库效劳器有锁机制使得这些访问有序地进行,从而保证数据的一致性。对于静态的页面和文件〔如HTML文档和图片等〕:可以存储在网络文件系统或者分布式文件系统中。至于选择哪一种,看系统的规模和需求而定。通过共享的网络文件系统或者分布式文件系统,Webmaster可以看到统一的文档存储空间,维护和更新页面比较方便,对共享存储中页面的修改对所有的效劳器都有效。LVS集群---可伸缩Web效劳集群结构特点:在这种结构下,当所有效劳器结点超载时,管理员可以很快地参加新的效劳器结点来处理请求。HTTPCookie,来同一客户的不同连接存在相关性,这些连接必须被发送到同一Web效劳器。HTTPS,当客户访问HTTPS效劳时,会先建立一个SSL连接,来交换对称公钥加密的证书并协商一个SSLKey,来加密以后的会话。在SSLKey的生命周期内,后续的所有HTTPS连接都使用这个SSLKey,所以同一客户的不同HTTPS连接也存在相关性。解决方案:针对这些需要,IPVS调度器提供了持久效劳的功能,它可以使得在设定的时间内,来自同一IP地址的不同连接会被发送到集群中同一个效劳器结点,可以很好地解决客户连接的相关性问题。LVS集群---可伸缩Web效劳集群LVS负载均衡器介绍VS/TUN与VS/DR的例子Cache:有效的网络Cache系统可以大大地减少网络流量、降低响应延时以及效劳器的负载。但是,假设Cache效劳器超载而不能及时地处理请求,反而会增加响应延时。所以,Cache效劳的可伸缩性很重要,当系统负载不断增长时,整个系统能被扩展来提高Cache效劳的处理能力。尤其,在主干网上的Cache效劳可能需要几个Gbps的吞吐率,单台效劳器远不能到达这个吞吐率。可见,通过PC效劳器集群实现可伸缩Cache效劳是很有效的方法,也是性能价格比最高的方法。LVS负载均衡器介绍LVS负载均衡器介绍VS/TUN与VS/DR的例子2IPVS负载调度器一般使用IP隧道方法,来架构Cache集群系统,因为Cache效劳器可能被放置不同的地方〔例如在接近主干Internet连接处〕,而调度器与Cache效劳器池可能不在同一个物理网络中。采用VS/TUN方法,调度器只调度WebCache请求,而Cache效劳器将响应数据直接返回给客户。在请求对象不能在本地命中的情况下,Cache效劳器要向源效劳器发请求,将结果取回,最后将结果返回给客户;假设采用NAT技术的商品化调度器,需要四次进出调度器,完成这个请求。而用VS/TUN方法〔或者VS/DR方法〕,调度器只调度一次请求,其他三次都由Cache效劳器直接访问Internet完成。所以,这种方法对Cache集群系统特别有效。让我们看看鲍勃现在的系统结构吧!用户需求高可用性:将停止效劳时间降低到最低甚至是不间断效劳可扩展性:随着访问的增加,系统具备良好的伸缩能力可视性:系统、效劳的状态处于一个实时的监控之下高性能高可靠性:经过优化的体系结构及合理的备份策略平安性:结构上的平安及主机的平安策略技术分析对于访问频繁,用户量大的对象〔bbs,blog〕采用某种合理的方式负载到多个效劳器上。把数据库独立出来,准备两套mysql数据库,以实现主从复制,即减轻负载,又提高了可靠性。更近一步,使用mysqlproxy技术,实现主从效劳器的读写别离,大大提高这个系统的性能和负载能力。数据库与外部网络隔离,只允许web效劳器〔bbs,blog等〕通过私有地址方式访问。这样就提高了数据库的平安性,同时也节省了珍贵的带宽。部署监控系统,通过监控主机存活、效劳、主机资源,实时把系统的健康状态置于可视状态,对系统的运营状态心中有数。备份是想都不用想的事情,使用单独的效劳器集中备份,是一个比较不错的主意拓扑结构拓扑业务逻辑2技术实现1负载均衡。2台同样配置的linux效劳器,内核支持lvs,配置keepalived工具,即可实现负载转发。一旦其后的真实效劳器出现故障,keepalived会自动把故障机器从转发队列删除掉,等到故障修复,它又会自动把真实效劳器的地址参加转发列表。由于lvs支持会话保持,因此对于bbs这样的应用,一点也不用担忧其登录丧失。mysql主从复制。即保证数据的平安,又提高了访问性能。我们在前端的每个web效劳器上参加mysqlproxy这个工具,即可期待实现读写的自动别离,让写的操作发生在主数据库,让查询这类读操作发生在从数据库。技术实现2监控。nagios是一个开源的,受广泛欢送的监控平台。它可对主机的存活、系统资源〔磁盘空间、负载等〕、网络效劳进行实时监控。一旦探测到故障,将自动发送邮件〔短信〕通知故障。备份。包括web数据和数据库效劳器的备份。对于web效劳而言,GNUtar即可实现备份的一切愿望。简单的设置一下crontab就可以让系统在我们做梦的时刻老老实实的帮我们备份了。但是,由于空间的限制,不可能一直备份下去,所以要做一个适宜的策略,以不断的用新的备份去替换陈旧的备份数据;多少天适宜?看磁盘容量吧。对于数据库,先mysqldump一下,再tar.完成这些工作后把备份文件传输到备份效劳器集中。一个比较省事的方法是把备份效劳器以NFS方式挂接到web效劳器及数据库效劳器。技术实现3web效劳器。至少包括apache和mysqlproxy这两个组件。Apache做bbs和blog的容器,以虚拟机方式把用户的请求转发到bbs目录或blog目录。平安措施。包含两层平安,一层是主机本身,另一层是结构〔mysql从外部网络隔离〕。实践证明,iptables是一个非常值得信赖的防火墙工具。在实际应用中,采取先关门后开窗的策略,大大增强系统的平安性。系统软硬件构成分析硬件负载均衡2台(dell1950)web效劳器2-3台(dell1950),数据库2台(dell2950)存储NAS(5T格式化后容量),备份4u效劳器(带磁盘阵列5T容量),监控效劳器1台(dell1850).软件操作系统centos5(定制安装)负载均衡ipvsadm、keepalived,监控nagios,web效劳apache+php等数据库mysql数据库代理mysqlproxy工程进度控制lvs负载均衡配置及测试:2-3天web效劳器配置:2-3天mysql主从效劳器配置:1-3天web数据迁移:1天数据库数据迁移:2天上线测试:1-2天正式上线:2天负载均衡配置文件!ConfigurationFileforkeepalivedglobal_defs{router_idLVS_DEVEL}vrrp_instanceVI_1{statemasterinterfaceeth0virtual_router_id59priority100advert_int1authentication{auth_typePASSauth_pass1111}virtual_ipaddress{}}#虚拟效劳器设置virtual_server0080{delay_loop6lb_algorrlb_kindDRpersistence_timeout50protocolTCP#真实效劳器1real_server0280{weight100TCP_CHECK{connect_timeout3nb_get_retry3delay_before_retry3connect_port80}}#真实效劳器2

real_server0380{weight100TCP_CHECK{connect_timeout3nb_get_retry3delay_before_retry3connect_port80}}}工程验收及性能评估

负载性能检测可靠性测试监控可视化及报警测试

黄琨博客:

邮箱:

田逸博客:

邮箱:

更多

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论