第十一讲 负载均衡服务

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一种是多个节点独立地进行决策,其综合效果取 决于单个节点的负载平衡效果与多个节点的叠加 效果;
另一种是多个节点并行地做出相同的决策,如根 据请求的源地址(或目标地址)进行静态散列以 确定服务节点,此时多个物理负载平衡点等价于 单个逻辑负载平衡点。
❖ 当客户数量众多而又无法依赖高速硬件来完 成负载分发时,多点负载平衡可能是必须的
为了提高用户的响应时间 许多系统以大量的重复冗余计算为代价: 为同一个用户请求创建在多个机器上的计算 并将最先得到的结果返回给用户 将后续得到的结果直接抛弃
google:一次Google搜索所消耗的电能可以足够一个11
瓦的节能灯亮15分钟到一个小时
降低对效率的追求 是导致IT系统能耗增长的因素之一
3、在线监测
在系统实际运行过程中分析性能 对效率进行监测的主要对象包括: ❖ 系统的响应时间 ❖ CPU负载情况 ❖ 内存使用 ❖ 客户连接实例数目 ❖ 内部类型的实例数目 ❖ 数据库连接实例数目 ❖ 等等
三、负载平衡
在由大量处理结点组成的集群系统中 系统在服务过程中
提高资源利用率 降低请求响应时间
❖ 没有单独的负载均衡器,而由位于各个服务节点上的 负载平衡服务实现客户请求到节点地址的源地址散列
❖ 由于各个节点上的负载平衡服务使用相同的映射规则 ,这种方案既达到了单点负载平衡的效果,又获得了 比前两种方案更高的可用性
❖ 具体做法:
参与负载平衡的所有节点组成一个集群,对客户而言只 有一个IP地址
负载平衡粒度
❖ 指负载分发(或迁移)基本单位的组合程度 ❖ 对于网络层的负载平衡,基本单位是IP数据报。一
种可能的负载平衡粒度是目标地址为同一个IP的所 有数据报(如Linux服务器集群系统的目标地址散 列调度算法) ❖ 对于分布对象中间件而言,基本单位是对象请求。 常见的两种负载平衡粒度是请求级与会话级。请求 级(per-request)指每次对象调用时都作负载分 发 ❖ 会话级(per-session)指的是仅在查找或首次调 用一个对象时进行负载决策,而后针对该对象引用 的所有请求都被发往同一个节点 ❖ 直观上,粒度越细,负载平衡效果越好,但用于负 载平衡的开销也越大
随着能源问题的日趋突出 这方面的研究迫切需要加强
如何提高效率?
基本过程: 分析效率=>发现问题=>调整
基本方式: 离线 在线
二、效率的分析方法
1、静态分析 2、动态测试 3、在线监测
1、静态分析
❖ 通过静态分析可以发现程序中:
从来就不会执行的代码(Dead Code) 不会被引用的变量或者赋值操作 不需要的检查 不必要的串复制(strcpy)、数字转换 等等
位于网络驱动与TCP/IP协议实现之间的负载平衡服务将 该IP地址映射为一个特定的MAC地址,从而集群内各个 节点的数据链路层都会接收所有客户请求;对于来自同 一个IP地址与端口的客户请求,各个节点的负载平衡服 务都将其映射为同一个节点地址;此节点的负载平衡服 务将请求向上交给TCP/IP协议栈处理,而其它节点则忽 略该请求
便于获得系统的全局状态,作出全局一致的决策 ;
能实现复杂的负载平衡算法,获得最优的效果; 便于支持多种平衡策略,适用于不同的应用环境
❖ 单点负载平衡的不足:
负载平衡点可能成为性能瓶颈 影响系统的伸缩性 也可能单点失效
❖ 多点负载平衡
❖ 可以获得比较好的伸缩性,但一Βιβλιοθήκη Baidu仅能使用 静态算法
❖ 存在两种类型的多点负载平衡
❖ 然后就可以对代码进行优化:
在不改变程序语义的前提下 剔除冗余的代码,从而减少内存开销,提高执行效率
2、测试
这个过程需要自动化的测试工具来辅助完成: 测试工具主要用来模拟多种正常、峰值以及异常
负载条件 从而对系统的各项性能指标进行测试 效率测试可以使在用户模拟的环境中进行的
由于软件的运行效率与运行环境有很大的关系 因此效率测试更需要在系统部署到实际环境中 但还没有实际上线时进行
方案4:中间件层负载平衡
❖ 由Web服务器实现对请求的负载平衡
Apache/Tomcat提供了一种典型的负载平衡方案, 即由一个Apache服务器处理静态页面,后面挂多个 Tomcat服务器处理JSP/Servlet请求
为保持会话语义,一般使用“粘着会话”(sticky session)策略,即同一个客户的所有请求由同一个 Tomcat服务器来处理
负载平衡算法
❖ 具体的负载平衡实施方法
❖ 根据决策时是否使用运行时刻的信息(如各 节点的负载状况、请求的类型或内容),负 载平衡算法可以分为静态算法与动态算法两 大类
静态算法
❖ 静态算法也称为非适应性算法,不使用运行 时刻的信息
❖ 常用的静态算法有轮循、随机及加权轮循 算 法(weighted round-robin)等几种
第十一讲 负载均衡服务
内容
一、服务性能 二、常用分析方法 三、负载平衡
一、服务性能
性能的重要性: 核心质量属性之一 正确 健壮 安全 高效 易维护 ……
什么是高效性:包括时间高效性与空间高效性
时间高效性主要是指系统响应时间小、吞吐率高 空间高效性主要是占用资源(例如:CPU、内存、 数据库连接、网络连接等等)少 类似内容还包括:同时服务的客户数目等
负载平衡使用静态加权轮循算法,可以为不同的 Tomcat服务器指定不同的权值
Tomcat提供了会话状态复制的能力(基于JGroups 提供的组通信服务),从而提高了系统的可用性
3、EJB层的负载平衡
❖ 很多情况下,Web容器与EJB容器位于同 一个节点上,此时对于Web客户仅需要 Web层负载平衡即可
由于早期CPU的计算能力有限 内存容量也有限
因此程序的效率问题在早期很受重视:
算法复杂性的研究长期以来是计算机科学 的重要内容
衡量一个算法好坏的主要标准是时间开销 与空间开销
仅十多年年来,对效率问题的重视程度有所下降: 为提高开发效率,人们往往以牺牲代码效率为代价
例如大量系统软件、框架的引入 方便了应用软件的开发 同时导致调用层次过多、系统执行效率下降 只是由于硬件速度与容量提升较快 盖过了软件效率的下降 使最终用户感觉系统速度还是增加了
❖ 负载均衡器一般由交换机或路由器充当,请求转发 与应答返回通过修改IP数据报中的源地址与目的地 址来实现
❖ 请求结果既可以经由均衡器返回客户,也可由服务 节点直接返回客户
❖ SLB能迅速感知服务节点的加入与退出;检查节点 的状态并将不可用的节点排除在外
❖ 为避免单点失效,均衡器一般采用冗余配置
方案3:Windows 2000 Server的负载均衡服务
的有效手段
内容
1、负载平衡方案 2、Web层的负载平衡 3、EJB层的负载平衡 4、动态负载平衡技术
1、负载平衡方案
❖ 负载平衡点 ❖ 负载平衡粒度 ❖ 负载平衡算法
负载平衡点
❖ 负载平衡点指作出负载平衡决策的位置
独立的负载均衡器上、服务节点自身、客户端
❖ 在多数情况下负载平衡由单个节点完成 ❖ 单点负载平衡好处:
❖ 其中轮循与随机算法适合于所有节点处理能 力相当的情况,静态加权算法适合于节点处 理能力不同的情况
动态算法
❖ 动态算法也称为适应性算法,参考运行时的 系统信息做出负载平衡决策
❖ 一般只有单点负载平衡才能使用动态算法 ❖ 常见的动态算法可分为两类
一类算法仅使用系统的负载信息。典型的例子是 最低负载法(least loaded),即每次负载决策 都选当前负载最轻的节点
平衡点,物理上也只有一个负载平衡点 2)请求级负载平衡,即每次客户请求都需
要经由负载平衡器进行请求分发
方案1: DNS轮循
❖ DNS轮循(DNS Round Robin)
由DNS服务器维护域名与一组IP地址的映射,对 于每一个域名解析请求,DNS服务器依次选择 列表中的下一个IP地址返回
由于用户直接访问的DNS服务器常常没有所需 的DNS信息,而需将DNS请求转发给保存着该 信息的DNS服务器,并且缓存返回的域名与IP地 址的映射,实际效果可能并不理想。
❖ 会话级(per-session) 向home对象发出的不同请 求可以负载平衡,而向remote对象发出的请求则始 终由创建该对象的节点处理
❖ 请求级(per-request) home与remote对象的请 求都可以负载平衡。一般只有无态会话构件与只读 实体构件能做到这一级。尽管会话状态复制为有态 会话构件的请求级负载平衡提供了支持,但是考虑 到性能开销,在实际应用中会话状态复制一般仅用 于需要支持容错的情况
当一个新的服务节点加入时,DNS信息不能很 快更新;而当服务节点崩溃时,DNS服务器也 无法感知,这些都影响了负载平衡的效果
方案2:服务器均衡负载
❖ 服务器均衡负载(Server Load Balancing,简称 SLB):整个系统对外而言只有一个IP地址(即均 衡器的地址),所有请求都发往该地址,由均衡器 根据选定的负载平衡算法转发请求
❖ 但是当Web容器与EJB容器分离时,特别 对于独立客户而言,EJB负载平衡仍是必 要的
❖ 一般仅使用静态负载平衡算法
三种粒度的平衡
❖ 查找级(per-lookup) 向一个home对象以及该 home对象创建的所有remote对象发出的请求都由 一个固定的节点处理,仅支持同一个EJB的不同 home对象及不同EJB的负载平衡
另一类算法不仅考虑系统负载,还兼顾请求的内 容以获得更好的总体性能,例如基于局部性的负 载分发
❖ 理论上,动态算法能获得更好的负载平衡效果 ,特别在负载不均匀的情况下
❖ 实际效果则依赖于所选择的负载分发策略、负 载度量以及运行时数据的获取
❖ 特别的,对于动态负载平衡算法,选择合适的 负载度量(load metric)十分重要
❖ 常用的负载度量有单位时间的请求数、一段时 间内CPU运行队列的平均长度、CPU利用率 、可用内存数以及活跃连接数等等
❖ 很多参数的设置会影响到动态算法的效果
例如从各节点获取负载的频率以及确定节点是否 过载的界限等
2、Web层的负载平衡
Web层负载平衡具有如下特点: 1)单点负载平衡,既逻辑上只有一个负载
4、动态负载平衡技术
❖ 动态、异构的环境 ❖ 这表现为节点会动态加入、退出集群,
节点的负载能力可能会发生变化(例如 ,在正在运行的集群的某个节点上运行 一个后台应用,可能需要降低该节点的 权值),有异构节点加入集群等等 ❖ 动态迁移!
谢谢大家! 再见!
相关文档
最新文档