《基于Linux虚拟服务器的负载均衡.doc》由会员分享,可在线阅读,更多相关《基于Linux虚拟服务器的负载均衡.doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于Linux虚拟服务器的负载均衡来源:1 负载均衡需求背景及传统解决方案的不足Internet业务量爆炸性增长使网络服务器不堪重负,不断更新硬件已使管理员感到厌烦、代价高和收效甚微,并导致已有资源的浪费。基于集群的网络负载均衡应运而生并成为有效的新对策。另一方面,在一些特殊网络环境中也需要进行负载均衡。例如在面向大规模网络的分布式入侵检测系统(IDS)中,大量本地IDS与个别处理中心进行频繁数据交换并等待实时处理,这对中心主机的处理能力有很高要求,难以靠单一设备来承担关键任务;使用网络负载均衡技术,就能有效解决传输与数据处理间的矛盾。轮询域名解析(Round-Robin DNS)是将单一域名
2、轮流解析为一组IP地址,以期将不同客户的请求转向不同的内容服务器,应用实例有等。其主要缺陷在于客户端浏览器特性及实际DNS的分级结构往往导致中介域名缓存,而使各内容服务器的真实负载有很大差别。R-R DNS只提供主机级别的分辨粒度且调度算法过于单纯,即使内容服务器中某节点出现故障(如掉电),R-R DNS仍一成不变地把域名一轮又一轮解析到这个不能访问的IP上。更好的方案是基于服务器集群的负载均衡虚拟服务器技术。网关按连接分配业务,并将整个集群虚拟为单一对外的VIP(虚拟IP);访问者只看到VIP而觉察不到集群的存在。这种均衡大致分为应用级和IP级两类,前者有Reverse-proxy等方法(如
3、Apache Web Server),但对网关性能要求很高,当内容服务器数目增多时,网关自身有成为网络新瓶颈的风险;后者则支持更多数量的内容服务器并可应用于多种网络环境。本文重点阐述IP级负载均衡集群Linux虚拟服务器,它提供一种透明的方法来扩展网络吞吐量、强化数据处理能力并提高网络的灵活性和可用性。2 Linux网关控制下的虚拟服务器2.1 Linux Virtual Server原理和3种工作方式Linux虚拟服务器是基于一组内容节点的、具有高可用性和高扩展性的网络实体。集群构造使系统可用资源成倍增大,加快对用户访问的响应速度,并在一定程度上提供对拒调度算法将外界服务请求按连接(不单指T
4、CP连接,也包含UDP)分配到内容节点。内容节点通常由高速局域网相连,也可通过地理上分布的广域网连接。系统能对用户透明增、减内容节点,例如暂时切断某主机,升级(软件或硬件)完毕后再加入集群,并可依次对下一主机进行类似处理。这一在线升级过程外界无法察觉,优于休克式离线维护。管理员靠添加新节点来提高系统性能,且不会浪费已有资源。内容节点协同工作,LVS网关可随时根据需要重新进行系统资源的配置和优化。LVS不仅能用于Web、FTP、E-mail网站和多媒体服务(如VoD)等场合,也可用于网络安全中。内容服务器可以是几台甚至数十台。LVS网关运行经过特殊修改的Linux内核(2.0、2.2或2.4系列
5、现均支持),它用3种转发IP分组的工作方式来实现内容节点间的网络负载均衡。(1)基于网络地址转换的虚拟主机(VS-NAT,参阅图1) 图1 基于网络地址转换的虚拟主机此方式下内容服务器可运行任何支持TCP/IP协议的操作系统,它们只需使用保留的Internet内部地址,只有Linux网关对外的网卡需分配正式IP(即VIP)。网关对所有发往和来自内容服务器的分组进行地址转换,例如IP伪装(masqu-erade);但这也就使得内容服务器的数量受到限制。尽管如此,实用中大多数情况都可采用VS-NAT方式。(2)基于IP隧道的虚拟主机(VS-TUN,参阅图2) 图2 基于IP隧道的虚拟主机网关把客户
6、服务请求(通常业务量较小)通过隧道(可穿越多个网络)发送到内容服务器,后者把请求的内容(通常业务量很大)按本地路由直接返回给客户。网关不进行地址转换,所以能容纳很多的集群节点;假如它拥有两块全双工百兆网卡,集群容量可近百,虚拟主机总输出流量可达到1 Gbps。VS-TUN依赖于Linux的IP tunneling技术,所有内容服务器都必须运行Linux(通常是靠加载内核模块ipip.o来支持IPv4-in-IPv4隧道)。内容服务器使用全局IP,但不一定要求为双网卡配制;单网卡也能实现VS-TUN工作方式中的非对称路由。(3)基于直接路由的虚拟主机(VS-DR,参阅图3) 图3 基于直接路由的
7、虚拟主机所有内容节点和LVS网关内网卡接同一网段(接入一个hub或二层交换机的一个VLAN);网关不改写来自客户的服务请求分组,它只替换其链路帧MAC地址为某一内容节点MAC地址,然后将该帧传给同网段的指定内容节点接收。通常只在高速率场合才使用VS-DR方式:网关将发给VIP的业务调度到多个服务节点处理,流量分散靠第二层替换实现;内容节点与网关内网卡宜用百兆交换机连接,返回给客户的分组从内容服务器的外网卡直接路由发出。最后将LVS 3种工作方式用表1作一对比和总结。实际中3种方式可以联合使用(使用两级均衡,第一级为VS-TUN或VS-DR方式,或者使用R-R DNS也可;第二级为VS-NAT)
8、。在方式2和3中,应答给客户的服务内容不从服务请求来时路径返回,而是按内容服务器本地路由发送,这种非对称路由现象称为路径外返回模式。表1 Linux虚拟服务器3种工作方式的比较2.2 LVS支持的均衡调度算法LVS目前支持以下8种调度算法;每两种都可归为一类均衡策略,所以共是4组:(1)轮询(rr):以顺序循环方式进行调度,相比R-R DNS,这种调度是基于TCP或UDP网络套接字连接的,而不是基于网络主机的,它不受客户端Cache或DNS分级结构的影响。(2)加权轮询(wrr):循环方式调度,但在循环中给每个内容服务器分配指定权重的连接,从而充分考虑各内容服务器处理能力之间的差异。例如集群由
9、3台内容服务器A、B、C组成且分配的权重是4:3:2,则一个好的调度顺序是AABABCABC循环。(3)最小连接(lc):将新到的连接请求动态地分配给现有活跃连接数最少的内容服务器。(4)加权最小连接(wlc):将新到的连接请求按各内容服务器当前处理连接数量的比例进行动态分配。wlc是LVS系统的缺省调度算法,在通常应用中一般都可采用此法均衡。(5)基于位置的最小连接(lblc):专门为高缓集群(cache cluster)设计的算法,系基于内容的均衡,尽量将对同一目的地址的连接请求分配给固定的一台高缓集群节点。(6)带复制的基于位置的最小连接(lblcr):在集群节点中维护若干针对特定目的地
10、址的高缓服务器集合,以后每当有对匹配地址的连接请求时,尽量分配给该集合中活跃连接数最少的那台高缓服务器,并定期将该集合中负载最大的节点剔除。(7)目标哈希(dh):根据目标地址查找事先设定的静态哈希表来分配连接。(8)源哈希(sh):按客户地址查找设定的静态哈希表来分配连接,可实现服务就近提供,保证服务质量(QoS)。以上4组策略虽然针对不同场合而设计,但它们均存在集群节点不能动态有效地向网关即均衡器进行负荷反馈的缺陷;即使wlc算法也仅是从网关的观察角度出发,事先由管理员设置表征各节点服务性能的固定权重。本文提出一组新均衡策略,由两种基于实时反馈的调度算法组成:(1)最短响应时间(lrt):
11、网关向所有节点发ping报文,将新到连接分配给最快应答ICMP echo request报文的节点。(2)最短连接时间(lct):此法专用于面向TCP连接的网络业务。网关向所有节点虚拟服务的侦听端口发送用于检测网络状况的TCP连接请求(SYN包),将新到连接分配给最快应答节点,并发送RST包以拆除检测网络状况用的半开连接。3 LVS在网络安全中的应用3.1 用LVS构建安全局域网我们采用VS-NAT组建了一个小型网络,网关为相对低档的微机,对外地址(VIP)是a.b.c.d,域名为;将对的访问均衡到内部网中两台高档微机PC1和PC2,以向外界提供不间断的可靠Web服务。网关身兼防火墙和均衡器两
12、职,并行使简单的入侵检测。表2说明了当内容服务器之一的PC1响应客户e.f.g.h对VIP的Web服务请求时,各出入分组的基本情况,这里假定客户使用的TCP源端口是1160。表2 VS-NAT中网关对进出IP分组的双向重写网关并不提供服务(80端口未开放),这有益其自身安全。Web服务器多机备份也增强了抗DOS攻击的能力。3.2 广域网业务处理集群仿真实现用虚拟telnet-server来仿真一业务处理集群,网关与内容节点用路由器隔离来仿真地理上分布的广域网连接。业务均衡到3台高档微机处理,从而扩展了服务性能,而用户只认为自己在向VIP提交业务(用telnet登入来仿真)和获得处理器资源。实际
13、网络如图4所示,因为要跨越路由器,所以采用VS-TUN工作方式,在LVS网关外网卡G1(VIP)上提供虚拟服务。网关和内容服务器都运行Linux操作系统:网关为kernel2.4.13,3台内容服务器均为kernel 2.2.17。 图4 业务处理集群仿真网络结构图图4中LVS网关的内网卡G2是3条跨越路由器、通往内容服务器IPv4-in-IPv4隧道的起点;虚拟服务为G1: TCP 23,3个内容服务实体为Si: TCP 23(i=1,2,3)。在内容服务器上,唯一的以太网卡Si除了配置能与路由器外部通信的全局IP,还在非arp设备上各自绑定VIP(配制在Linux虚拟设备上)。换句话说,G
14、1、G2、R2、R1、Si都是真实IP,但主机Si上各自另配了不响应arp请求的、与G1地址相同的VIP;这是实现VS-TUN的关键(VS-DR与此类似),尽管具体实现手段未必唯一。表3说明了当测试主机T(普通客户类同)telnet登入VIP时,VS-TUN系统运作的基本情况;各项IP分组头标可通过tcpdump等工具获取。此时所有TCP连接都具有相同的源地址(T)、相同的目的地址(VIP)和目的端口(23),LVS网关靠源端口号来区分各连接。实际系统能良好工作,并发处理来自T的很多个连接。表3 VS-TUN中IP分组封装与拆封的情况选择VS-TUN方式,其目的还在于可获得极高的吞吐量(这对于
15、一个分布式大规模网络入侵检测系统的前端负载均衡具有重要意义)。VS-TUN具有非对称路由特性,内容服务器从IP隧道接收服务请求后按本地路由应答客户。在本文的仿真实现中,我们有意把测试主机T布置在与3台内容节点同一网段。在Si上察看T发出服务请求前后的两张arp表,发现确实新增网卡T的MAC地址表项,这证明Si确是通过本地路由直接应答T的。当然,来自非路由器内网卡R1侧的那些普通客户,就无法确凿地观察到路径外返回模式了。4 结语作为网络负载均衡的有效解决,本文讨论的Linux虚拟服务器克服了传统方案的不足,具有很高的实用价值。本文在全面研究Linux虚拟服务器3种工作方式和8种已有调度算法的理论基础上,提出了使用实时负荷反馈调度算法的均衡策略,实现了一个可提供高性能Web服务的安全局域网,并给出了一个能用于分布式大规模集群作业系统的网络仿真实现。