《CTO负载均衡全真实战案例解析.ppt》由会员分享,可在线阅读,更多相关《CTO负载均衡全真实战案例解析.ppt(40页珍藏版)》请在三一文库上搜索。
1、负载均衡全真实战案例解析,本次聚会的主题,一个凄惨的服务器故事 两位Linux系统专家的心声 三份千元培训卡的发放 100位51CTO网友的同城聚会 解读负载均衡技术的实际应用,可怜的鲍勃,鲍勃是公司在推销新技术和IT架构方案发展上的革新者。在他的推动下,公司的网站已经形成了非常快速的开发流程,很快就集成到主站中去了,以便可以进行更多的用户交互使用。当公司策略的执行效率突破了历史最高点的时候,他发现系统的运行有些异常,不但前台Web服务器从后台数据库中读取过程成本开始徒然上升,容易出错而且在响应客户请求方面显得缓慢。与此同时,当Mira(鲍勃的新同事)开始为博客和BBS更新模组时,系统终于不堪
2、重负,倒下了。,鲍勃和Mira感到他们的权威受到了挑战,但董事会却担心因为系统因为缓慢,一些用户会散播谣言,公司的信誉度会影响股票上市的进度。 在访问量翻倍的时候,我们的系统却越来越慢?我该如何做呢?,是购买更顶级的服务器吗? 如果用户又增多了怎么办? 鲍勃需要的究竟是什么?,怎么突然会出现这样的问题?,Internet 的飞速发展给网络带宽和服务器带来巨大的挑战。 Internet的飞速发展。百兆、千兆技术已经得到广泛应用,在主干网上密集波分复用(DWDM)将成为宽带IP 的主流技术(每秒达到传输速率最大达到400 Gb/s)。 Gigabit Ethernet 在服务器上很难使得其吞吐率达
3、到1Gb/s 的原因是协议栈(TCP/IP)和操作系统的低效,以及处理器的低效,这需要对协议的处理方法、操作系统的调度和IO 的处理作更深入的研究。,为什么要集群?,对用硬件和软件方法实现高可伸缩、高可用网络服务的需求不断增长,这种需求可以归结以下几点: 可伸缩性(Scalability),当服务的负载增长时,系统能被扩展来满足需求,且不降低服务质量。 高可用性(Availability),尽管部分硬件和软件会发生故障,整个系统的服务必须是每天24 小时每星期7 天可用的。 可管理性(Manageability),整个系统可能在物理上很大,但应该容易管理。 价格有效性(Cost-effecti
4、veness),整个系统实现是经济的、易支付的。 要解决上述几个需求,靠单个的服务器不能满足需求,因此,只能使用多 台服务器联合工作以达到需求,这就是所谓的集群。,什么是负载均衡?,高可扩展性集群一般的框架结构如图所示(以Web 访问为例,其它应用类似)。后台的多个Web 服务器上面有相同的Web 内容,Internet 客户端的访问请求首先进入一台服务器,由它根据负载均衡策略(算法)合理地分配给某个Web 服务器。每个Web 服务器有相同的内容做起来不难,所以选择负载均衡策略(算法)是个关键问题。,负载均衡基本概念:什么是负载均衡,负载均衡的作用就像轮流值日制度,把任务分给大家来完成,以免让
5、一个人过度劳累。 但是与轮流值日制度不同的是,负载均衡是一种动态均衡,它通过一些工具实时地分析数据包,掌握网络中的数据流量状况,把任务理分配出去。,对于以下不同的应用环境,使用的均衡策略(算法)是不同的。 电子商务网站,它的计 算负荷大 网络数据库应用,读写频繁,服务器的存储子系统面临很大压力 视频服务应用,数据传输量大,网络接口负担重压,负载均衡基本概念,因为应用环境的不同,均衡策略(算法)也就有了多种多样的形式。 广义上的负载均衡既可以设置专门的网关、负载均衡器,也可以通过一些 专用软件与协议来实现。在OSI 七层协议模型中的第二(数据链路层)、 第三(网络层)、第四(传输层)、第七层(应
6、用层)都有相应的负载均 衡策略(算法). 数据链路层:根据数据包的目的MAC 地址选择不同的路径; 网络层: 利用基于IP 地址的分配方式将数据流疏通到多个节点 传输层和应用层的交换(Switch):本身便是一种基于访问流量的控制方式,能够实现负载均衡。,集群类型,目前的集群类型主要概括为三大类型: 高可扩展性集群技术(负载均衡) 高可靠性集群(HA) 高性能计算集群(HPC),高可扩展性集群技术就是带均衡策略(算法)的服务器群集,负载均衡群集在多节点之间按照一定的策略(算法)分发网络或计算处理负载。 扩展服务器带宽 增加吞吐量 提高数据处理能力 避免单点故障。,负载均衡的实现,虚拟服务器的体
7、系结构如图所示,一组服务器通过高速的局域网或者地理分布的广域网相互连接,在它们的前端有一个负载调度器(Load Balancer)。负载调度器能无缝地将网络请求调度到真实服务器上,从而使得服务器集群的结构对客户是透明的,客户访问集群系统提供的网络服务就像访问一台高性能、高可用的服务器一样。客户程序不受服务器集群的影响不需作任何修改。系统的伸缩性通过在服务机群中透明地加入和删除一个节点来达到,通过检测节点或服务进程故障和正确地重置系统达到高可用性。由于该负载调度技术是在Linux 内核中实现的,因此称之为Linux 虚拟服务器(Linux Virtual Server)。,LVS负载均衡器介绍-
8、 软件、硬件,IP 虚拟服务器软件IPVS 在调度器的实现技术中,IP 负载均衡技术是效率最高的。在已有的IP 负载均衡技术中有通过网络地址转换(Network Address Translation)将一组服务器构成一个高性能的、高可用的虚拟服务器,我们称之为VS/NAT 技术(Virtual Server via Network Address Translation),大多数商品化的IP 负载均衡调度器产品都是使用此方法,如Cisco 的LocalDirector、F5 的Big/IP 和 Alteon 的ACEDirector。在分析VS/NAT 的缺点和网络服务的非对称性的基础上,我
9、们提出通过IP 隧道实现虚拟服务器的方法VS/TUN (Virtual Server via IP Tunneling),和通过直接路由实现虚拟服务器的方法VS/DR(Virtual Server via Direct Routing),它们可以极大地提高系统的伸缩性。所以,IPVS 软件实现了这三种IP 负载均衡技术,它们的大致原理如下:,LVS 集群的通用体系结构,三层主要组成部分为: 负载调度器(load balancer) 它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP 地址(我们可称之为虚拟IP 地址)上的。 服务器池(server
10、pool) 是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP 和DNS 等。 共享存储(shared storage) 它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。,LVS 集群的通用体系结构,共享存储区,LVS负载均衡器模式,(1)Virtual Server via Network Address Translation(VS/NAT) 通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。 (
11、2)Virtual Server via IP Tunneling(VS/TUN) 采用NAT 技术时,由于请求和响应报文都必须经过调度器地址重写,当客户请求越来越多时,调度器的处理能力将成为瓶颈。为了解决这个问题,调度器把请求报文通过IP 隧道转发至真实服务器,而真实服务器将响应直接返回给客户,所以调度器只处理请求报文。由于一般网络服务应答比请求报文大许多,采用 VS/TUN 技术后,集群系统的最大吞吐量可以提高10 倍。 (3)Virtual Server via Direct Routing(VS/DR) VS/DR 通过改写请求报文的MAC 地址,将请求发送到真实服务器,而真实服务器将
12、响应直接返回给客户。同VS/TUN 技术一样,VS/DR 技术可极大地提高集群系统的伸缩性。这种方法没有IP 隧道的开销,对集群中的真实服务器也没有必须支持IP 隧道协议的要求,但是要求调度器与真实服务器都有一块网卡连在同一物理网段上。,LVS 集群-可伸缩Web 服务集群,LVS 集群-可伸缩Web 服务集群,动态页面(如PHP、JSP 和CGI 等): 需要访问的动态数据一般存储在数据库服务器中。 数据库服务运行在独立的服务器上,为所有Web 服务器共享。无论同一Web 服务器上多个动态页面访问同一数据,还是不同Web 服务器上多个动态页面访问同一数据,数据库服务器有锁机制使得这些访问有序
13、地进行,从而保证数据的一致性。 对于静态的页面和文件(如HTML 文档和图片等): 可以存储在网络文件系统或者分布式文件系统中。至于选择哪一种,看系统的规模和需求而定。通过共享的网络文件系统或者分布式文件系统,Webmaster 可以看到统一的文档存储空间,维护和更新页面比较方便,对共享存储中页面的修改对所有的服务器都有效。,LVS 集群-可伸缩Web 服务集群,结构特点: 在这种结构下,当所有服务器结点超载时,管理员可以很快地加入新的服务器结点来处理请求。 HTTP Cookie ,来同一客户的不同连接存在相关性,这些连接必须被发送到同一Web 服务器。 HTTPS ,当客户访问HTTPS
14、服务时,会先建立一个SSL 连接,来交换对称公钥加密的证书并协商一个SSL Key,来加密以后的会话。在SSL Key 的生命周期内,后续的所有HTTPS连接都使用这个SSL Key,所以同一客户的不同HTTPS 连接也存在相关性。 解决方案: 针对这些需要,IPVS 调度器提供了持久服务的功能,它可以使得在设定的时间内,来自同一IP 地址的不同连接会被发送到集群中同一个服务器结点,可以很好地解决客户连接的相关性问题。,LVS 集群-可伸缩Web 服务集群,LVS负载均衡器介绍,VS/TUN 与VS/DR的例子 Cache:有效的网络Cache 系统可以大大地减少网络流量、降低响应延时以及服务
15、器的负载。但是,若Cache 服务器超载而不能及时地处理请求,反而会增加响应延时。所以,Cache 服务的可伸缩性很重要,当系统负载不断增长时,整个系统能被扩展来提高Cache 服务的处理能力。尤其,在主干网上的 Cache 服务可能需要几个Gbps的吞吐率,单台服务器远不能达到这个吞吐率。可见,通过PC 服务器集群实现可伸缩Cache 服务是很有效的方法,也是性能价格比最高的方法。,LVS负载均衡器介绍,LVS负载均衡器介绍,VS/TUN 与VS/DR的例子2 IPVS 负载调度器一般使用IP 隧道方法,来架构Cache 集群系统,因为Cache 服务器可能被放置不同的地方(例如在接近主干I
16、nternet 连接处),而调度器与Cache 服务器池可能不在同一个物理网络中。 采用VS/TUN 方法,调度器只调度 Web Cache 请求,而Cache 服务器将响应数据直接返回给客户。在请求对象不能在本地命中的情况下,Cache 服务器要向源服务器发请求,将结果取回,最后将结果返回给客户;若采用NAT 技术的商品化调度器,需要四次进出调度器,完成这个请求。而用VS/TUN 方法(或者VS/DR 方法),调度器只调度一次请求,其他三次都由Cache 服务器直接访问Internet 完成。所以,这种方法对Cache 集群系统特别有效。,让我们看看鲍勃现在的系统结构吧!,用户需求,高可用性
17、:将停止服务时间降低到最低甚至是不间断服务 可扩展性:随着访问的增加,系统具备良好的伸缩能力 可视性:系统、服务的状态处于一个实时的监控之下 高性能高可靠性:经过优化的体系结构及合理的备份策略 安全性:结构上的安全及主机的安全策略,技术分析,对于访问频繁,用户量大的对象(bbs,blog)采用某种合理的方式负载到多个服务器上。把数据库独立出来,准备两套mysql数据库,以实现主从复制,即减轻负载,又提高了可靠性。更近一步,使用mysql proxy技术,实现主从服务器的读写分离,大大提高这个系统的性能和负载能力。 数据库与外部网络隔离,只允许web服务器(bbs,blog等)通过私有地址方式访
18、问。这样就提高了数据库的安全性,同时也节省了宝贵的带宽。 部署监控系统,通过监控主机存活、服务、主机资源,实时把系统的健康状态置于可视状态,对系统的运营状态心中有数。 备份是想都不用想的事情,使用单独的服务器集中备份,是一个比较不错的主意,拓扑结构,拓扑,业务逻辑,2,技术实现 1,负载均衡。2台同样配置的linux服务器,内核支持lvs,配置keepalived工具,即可实现负载转发。一旦其后的真实服务器出现故障,keepalived会自动把故障机器从转发队列删除掉,等到故障修复,它又会自动把真实服务器的地址加入转发列表。由于lvs支持会话保持,因此对于bbs 这样的应用,一点也不用担心其登
19、录丢失。 mysql主从复制。即保证数据的安全,又提高了访问性能。我们在前端的每个web服务器上加入mysql proxy这个工具,即可期待实现读写的自动分离,让写的操作发生在主数据库,让查询这类读操作发生在从数据库。,技术实现 2,监控。nagios是一个开源的,受广泛欢迎的监控平台。它可对主机的存活、系统资源(磁盘空间、负载等)、网络服务进行实时监控。一旦探测到故障,将自动发送邮件(短信)通知故障。 备份。包括web数据和数据库服务器的备份。对于web服务而言,GNU tar即可实现备份的一切愿望。简单的设置一下crontab 就可以让系统在我们做梦的时刻老老实实的帮我们备份了。但是,由于
20、空间的限制,不可能一直备份下去,所以要做一个合适的策略,以不断的用新的备份去替换陈旧的备份数据;多少天合适?看磁盘容量吧。对于数据库,先mysqldump一下,再tar.完成这些工作后把备份文件传输到备份服务器集中。一个比较省事的方法是把备份服务器以NFS方式挂接到web服务器及数据库服务器。,技术实现 3,web服务器。至少包括apache和mysql proxy这两个组件。Apache做bbs和blog的容器,以虚拟机方式把用户的请求转发到bbs目录或blog目录。 安全措施。包含两层安全,一层是主机本身,另一层是结构(mysql从外部网络隔离)。实践证明,iptables是一个非常值得信
21、赖的防火墙工具。在实际应用中,采取先关门后开窗的策略,大大增强系统的安全性。,系统软硬件构成分析,硬件 负载均衡2台(dell 1950) web服务器2-3台(dell1950),数据库2台(dell 2950) 存储NAS(5T格式化后容量),备份4u服务器(带磁盘阵列5T容量), 监控服务器1台(dell1850).,软件 操作系统centos 5(定制安装) 负载均衡ipvsadm、keepalived, 监控nagios, web服务apache+php等 数据库mysql 数据库代理mysql proxy,工程进度控制,lvs负载均衡配置及测试:2-3天 web服务器配置:2-3天
22、 mysql主从服务器配置:1-3天 web数据迁移:1天 数据库数据迁移:2天 上线测试:1-2天 正式上线:2天,负载均衡配置文件,! Configuration File for keepalived global_defs router_id LVS_DEVEL vrrp_instance VI_1 state master interface eth0 virtual_router_id 59 priority 100 advert_int 1 authentication auth_type PASS auth_pass 1111 virtual_ipaddress 61.61.6
23、1.100 #61.61.61.101 ,#虚拟服务器设置,virtual_server 61.61.61.100 80 delay_loop 6 lb_algo rr lb_kind DR persistence_timeout 50 protocol TCP,#真实服务器1,real_server 61.61.61.102 80 weight 100 TCP_CHECK connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 ,#真实服务器2,real_server 61.61.61.103 80 weight 100 TCP_CHECK connect_timeout 3 nb_get_retry 3 delay_before_retry 3 connect_port 80 ,项目验收及性能评估,负载性能检测 可靠性测试 监控可视化及报警测试,Server Cluster Futures,谢谢,
链接地址:https://www.31doc.com/p-2698249.html