动态网络负载平衡集群实践应用分析

网络负载平衡允许你将传入的请求传播到最多达32台的服务器上,即可以使用最多32台服务器共同分担对外的网络请求服务。

  网络负载平衡技术保证即使是在负载很重的情况下它们也能作出快速响应。网络负载平衡对外只须提供一个IP地址(或域名)。如果网络负载平衡中的一台或几台服务器不可用时,服务不会中断。

  网络负载平衡自动检测到服务器不可用时,能够迅速在剩余的服务器中重新指派客户机通讯。此保护措施能够帮助你为关键的业务程序提供不中断的服务。可以根据网络访问量的增多来增加网络负载平衡服务器的数量。网络负载平衡可在普通的计算机上实现。在Windows Server 2003中,网络负载平衡的应用程序包括Internet信息服务(IIS)、ISA Server 2000防火墙与代理服务器、VPN虚拟专用网、终端服务器、Windows Media Services(Windows视频点播、视频广播)等服务。同时,网络负载平衡有助于改善你的服务器性能和可伸缩性,以满足不断增长的基于Internet客户端的需求。 

  网络负载平衡可以让客户端用一个逻辑Internet名称和虚拟IP地址(又称群集IP地址)访问群集,同时保留每台计算机各自的名称。

  正因为如此,网络负载均衡技术在最近得到了非常迅猛的发展。在接下来的文章内,编者就将向大家简要介绍一下网络负载均衡的工作原理以及三种常见的工作方式。

本文主要讨论了网络负载平衡集群系统下,基本的平衡算法和动态负载平衡机制。在LVS的基础上配合轮询算法实现了集群的动态负反馈机制,给出了一个基本的动态平衡模型并加以分析。

1.引言

??本质上讲,网络负载平衡是分布式作业调度系统的一种实现。平衡器作为网络请求分配的控制者,要根据集群节点的当前处理能力,采用集中或分布策略对网络服务请求进行调配,并且在每个服务请求的生命周期里监控各个节点的有效状态。一般的说,平衡器对请求的调度具备以下的特征:

网络服务请求必须是可管理的
    请求的分配对用户是透明的
    最好能够提供异构系统的支持
    能够依据集群节点的资源情况进行动态分配和调整
    负载平衡器在集群的各个服务节点中分配工作负载或网络流量。可以静态预先设置或根据当前的网络状态来决定负载分发到哪个特定的节点,节点在集群内部可以互相连接,但它们必须与平衡器直接或间接相连。
 
??网络平衡器可以认为是网络层次上的作业调度系统,大多数网络负载平衡器能够在网络的相应层次上实现单一系统映像,整个集群能够体现为一个单一的IP地址被用户访问,而具体服务的节点对用户而言是透明的。这里,平衡器可静态或动态配置,用一种或多种算法决定哪个节点获得下一个网络服务请求。

2.网络平衡原理

??在TCP/IP协议中,数据包含有必要的网络信息,因而在网络缓存或网络平衡的具体实现算法里,数据包的信息很重要。但由于数据包是面向分组的(IP)和面向连接的(TCP),且经常被分片,没有与应用有关的完整信息,特别是和连接会话相关的状态信息。因此必须从连接的角度看待数据包——从源地址的端口建立到目的地址端口的连接。

??平衡考虑的另一个要素就是节点的资源使用状态。由于负载平衡是这类系统的最终目的,那么及时、准确的把握节点负载状况,并根据各个节点当前的资源使用状态动态调整负载平衡的任务分布,是网络动态负载平衡集群系统考虑的另一关键问题。

??一般情况下,集群的服务节点可以提供诸如处理器负载,应用系统负载、活跃用户数、可用的网络协议缓存以及其他的资源信息。信息通过高效的消息机制传给平衡器,平衡器监视所有处理节点的状态,主动决定下个任务传给谁。平衡器可以是单个设备,也可以使一组平行或树状分布的设备。

3.基本的网络负载平衡算法

??平衡算法设计的好坏直接决定了集群在负载均衡上的表现,设计不好的算法,会导致集群的负载失衡。一般的平衡算法主要任务是决定如何选择下一个集群节点,然后将新的服务请求转发给它。有些简单平衡方法可以独立使用,有些必须和其它简单或高级方法组合使用。而一个好的负载均衡算法也并不是万能的,它一般只在某些特殊的应用环境下才能发挥最大效用。因此在考察负载均衡算法的同时,也要注意算法本身的适用面,并在采取集群部署的时候根据集群自身的特点进行综合考虑,把不同的算法和技术结合起来使用。

3.1 轮转法:

??轮转算法是所有调度算法中最简单也最容易实现的一种方法。在一个任务队列里,队列的每个成员(节点)都具有相同的地位,轮转法简单的在这组成员中顺序轮转选择。在负载平衡环境中,均衡器将新的请求轮流发给节点队列中的下一节点,如此连续、周而复始,每个集群的节点都在相等的地位下被轮流选择。这个算法在DNS域名轮询中被广泛使用。

??轮转法的活动是可预知的,每个节点被选择的机会是1/N,因此很容易计算出节点的负载分布。轮转法典型的适用于集群中所有节点的处理能力和性能均相同的情况,在实际应用中,一般将它与其他简单方法联合使用时比较有效。

3.2 散列法

??散列法也叫哈希法(HASH),通过单射不可逆的HASH函数,按照某种规则将网络请求发往集群节点。哈希法在其他几类平衡算法不是很有效时会显示出特别的威力。例如,在前面提到的UDP会话的情况下,由于轮转法和其他几类基于连接信息的算法,无法识别出会话的起止标记,会引起应用混乱。

??而采取基于数据包源地址的哈希映射可以在一定程度上解决这个问题:将具有相同源地址的数据包发给同一服务器节点,这使得基于高层会话的事务可以以适当的方式运行。相对称的是,基于目的地址的哈希调度算法可以用在Web Cache集群中,指向同一个目标站点的访问请求都被负载平衡器发送到同一个Cache服务节点上,以避免页面缺失而带来的更新Cache问题。

3.3 最少连接法

??在最少连接法中,平衡器纪录目前所有活跃连接,把下一个新的请求发给当前含有最少连接数的节点。这种算法针对TCP连接进行,但由于不同应用对系统资源的消耗可能差异很大,而连接数无法反映出真实的应用负载,因此在使用重型Web服务器作为集群节点服务时(例如Apache服务器),该算法在平衡负载的效果上要打个折扣。为了减少这个不利的影响,可以对每个节点设置最大的连接数上限(通过阈值设定体现)。

3.4 最低缺失法

??在最低缺失法中,平衡器长期纪录到各节点的请求情况,把下个请求发给历史上处理请求最少的节点。与最少连接法不同的是,最低缺失记录过去的连接数而不是当前的连接数。

3.5 最快响应法

??平衡器记录自身到每一个集群节点的网络响应时间,并将下一个到达的连接请求分配给响应时间最短的节点,这种方法要求使用ICMP包或基于UDP包的专用技术来主动探测各节点。

??在大多数基于LAN的集群中,最快响应算法工作的并不是很好,因为LAN中的ICMP包基本上都在10ms内完成回应,体现不出节点之间的差异;如果在WAN上进行平衡的话,响应时间对于用户就近选择服务器而言还是具有现实意义的;而且集群的拓扑越分散这种方法越能体现出效果来。这种方法是高级平衡基于拓扑结构重定向用到的主要方法。

3.6 加权法

??加权方法只能与其他方法合用,是它们的一个很好的补充。加权算法根据节点的优先级或当前的负载状况(即权值)来构成负载平衡的多优先级队列,队列中的每个等待处理的连接都具有相同处理等级,这样在同一个队列里可以按照前面的轮转法或者最少连接法进行均衡,而队列之间按照优先级的先后顺序进行均衡处理。在这里权值是基于各节点能力的一个估计值。

时间: 2024-09-11 14:25:53

动态网络负载平衡集群实践应用分析的相关文章

Java微服务开发指南 -- 集群管理、失败转移和负载均衡的实践

集群管理.失败转移和负载均衡的实践     在前一章节中,我们快速的介绍了集群管理.Linux容器,接下来让我们使用这些技术来解决微服务的伸缩性问题.作为参考,我们使用的微服务工程来自于第二.第三和第四章节(Spring Boot.Dropwizard和WildFly Swarm)中的内容,接下来的步骤都适合上述三款框架. 开始     我们需要将微服务打包成为Docker镜像,最终将其部署到Kubernetes,首先进入到项目工程hola-springboot,然后启动jboss-forge,

visual studio-Visual Studio Web负载测试,测试摘要分析

问题描述 Visual Studio Web负载测试,测试摘要分析 测试为简单login页面测试,10并发持续10分钟 我用同种方式测过外网址,数据很漂亮,错误只有45个Timeout,Avg.Page Time在0.6,浮动也不大,请大神明示以下问题: 失败测试数(比例):81465(58.1) 1.如此高的失败率说明什么?开发web"> 2.错误栏里有1000次的403错误意味什么?(图中显示为同时出现) 3.页面在请求时调用本地cookie会加速页面展示,但为什么会有0.039s的A

Nginx+Tomcat+Https 服务器负载均衡配置实践方案详解_nginx

由于需要,得搭建个nginx+tomcat+https的服务器,搜了搜网上的发现总是有错,现在整理了些有用的,备忘. 环境:Centos6.5.JDK1.8.Tomcat8.Nginx1.10.1 准备材料: 1.JDK1.8安装包jdk-8u102-linux-x64.tar.gz 2.Tomcat8安装包apache-tomcat-8.0.37.tar.gz 3.Nginx1.10安装包nginx-1.10.1.tar.gz 1.JDK安装配置 解压并安装到/usr/local/jdk [r

Android笔记之:App调试的几个命令的实践与分析_Android

在Android的应用开发中,我们会用到各种代码调试:其实在Android的开发之后,我们可能会碰到一些随机的问题,如cpu过高,内存泄露等,我们无法简单的进行代码调试,我们需要一个系统日志等等,下面我把握工作中碰到的几个常用命令和方法给大家演示实践一下. 1.logcat命令这个命令最简单常用,可查看帮助,我不多说,如果需要打印时间,加参数-v time adb logcat -v time 2.bugreport命令这个命令也非常简单,但是在实际应用中非常有用,会有从开机之后详细的dumps

h5性能测试实践结果分析

背景 由于在标准组件参与了比较多运营活动h5页面的性能测试,在终端h5测试过程中发现随着移动设备和网络环境的复杂,使得性能测试越来越重要,所以在此对H5页面的性能测试结果(以及容易出问题的点),做一个总结,给H5测试的同学一个参考. h5原理了解 手机接入服务器流程 首先,手机要通过无线网络协议,从基站获得无线链路分配,才能跟网络进行通讯. 无线网络基站.基站控制器这方面,会给手机进行信号的分配,已完成手机连接和交互. 获得无线链路后,会进行网络附着.加密.鉴权,核心网络会检查你是不是可以连接在

三款主流服务器集群软件对比分析

简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源.这些单个的计算机系统就是集群的节点(node).一个理想的集群是,用户从来不会意识到集群系统底层的节点,在他们看来,集群是一个系统,而非多个计算机系统.并且集群系统的管理员可以随意增加和删改集群系统的节点. 下面就服务器常用的三款集群软件做一个对比分析介绍: 1.ROSE HA 服务器集群软件 在双机热备的架构中,除了要考虑切换时间外,要根据每个系统的作业环境,包括网路系统是单网或是双网,数据库的安装和作业内

实践测试分析网站恢复排名的简单方法

大家好,我是哈尔滨虚实网站设计,这几天一直在研究恢复网站关键词的办法,经过几轮的测试,最终感觉还是老办法好,其实我们做优化的时间长了,很容易忽略最原始的办法,就是更新首页,引蜘蛛爬行,分析竞争对手关键词密度和排放位置,看看他们的外链建设,最终进行调整,经过几次的分析,发现前面的几个站并没有什么特殊的地方,无论是站内优化还是站外链接,但是有一点和我不一样,那就是首页会经常的更新,不知道是不是这个缘故,下面我解析下我是如何分析的. 前几天我分析了自身网站的一些问题,比如更换服务器,网站更新,检测友情

ONOS集群管理架构分析

除了分发数据,ONOS集群还要负责以下的任务: 1.检测和处理集群节点的加入和离开(由Cluster Subsystem管理) 2.为每一个设备提供一个主Controller ONOS集群协调的一个重要工具便是Store,Store生成事件,事件被分布式储存持久化,在集群中共享. 根据具体服务的需求,储存的内容可以有不同的特征,如强一致性或最终一致性,这使得每个服务的储存根据需求采用合适的分布机制. 目前ONOS主控部分采用Hazelcast以达到强一致性,而Device.Link等部分的管理使

超越“虚拟的美丽”——云计算实践再分析

导读:随着第四届云计算大会的落幕,三天内太多精彩的创新和分享冲击着我们,CSDN将陆续对讲师的精彩分享整理加工后再提供给读者.今天带来的是中国电子学会云计算专家委员会主任委员.中国工程院院士李德毅在云计算大会上的主题演讲,CSDN整理如下: 云计算正在走向成熟,大数据正在发展 在经历了对云计算的认识以后,已经成为当前信息通信行业的主旋律.我们可以用维基百科看一看当前对三个重要技术概念的理解.一个是曾经人们跟云计算混淆不清的网格计算,一个是正在发展的大数据,我们来看一看用维基百科访问网格计算词条,