扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:林凡 来源:IBMDW 2007年8月26日
关键字: 集群
本质上讲,网络负载平衡是分布式作业调度系统的一种实现。平衡器作为作业分配的控制者,根据集群节点的当前处理能力,集中的或分布的对作业进行调配,并且在作业的生命周期里监控执行节点的有效状态,一般的说,平衡器对作业的调度具备以下的特征:
"平衡"是通过专有的外部设备实现的,外部设备在集群的处理节点中分配工作负载或网络流量。可以静态预先设置或根据当前的网络状态来决定负载分发到哪个特定的节点,节点在集群内部可以互相连接,它们 必须与平衡器直接或间接相连。
网络平衡器特指在网络层次上看到的作业调度系统,大多数网络负载平衡器能够在网络的相应层次上实现SSI。这里,平衡器可静态或动态配置,用一种或多种算法决定哪个节点获得下个"作业"(网络连接)请求,这些节点可以针对特殊应用来优化性能;或者仅与网络协议及流量有关而与应用无关。这两种方法有不同的需求和不同的算法:
由于现有的大多数网络应用基于TCP/IP 协议,那么我们在分析网络负载平衡的时候主要的参考体系就定在TCP/IP协议栈上。
在TCP/IP协议中,数据包含有必要的网络信息,因而在网络缓存或网络平衡的具体实现算法里,数据包的信息很重要。但由于数据包是面向分组的(IP)和面向连接的(TCP),且经常被分片,没有与应用有关的完整信息,特别是和作业会话(会话层Session,不是指TCP的会话)相关的状态信息。必须从连接的角度看待数据包--从源地址到目的地址。此外,在源和目的之间的TCP会话也会影响分配算法。
众所周知,TCP/IP是简化了的四层结构协议,TCP并没有实现OSI参考模型的会话层。准确的说,TCP仅仅完成了传输层的功能和部分会话能力--SYN和FIN标记一个TCP会话,而主要的会话层功能由应用协议进行实现和管理。因此,在TCP/IP里,不建全的会话功能成为许多网络负载平衡技术设计时考虑的重点。
平衡考虑的另一个要素就是节点的资源使用状态。由于"负载平衡"是这类系统的最终目的,那么及时、准确的把握节点负载状况就是平衡器不得不考虑的问题了。
一般情况下,集群节点可以提供诸如处理器负载,应用系统负载、活跃用户数、可用的网络协议缓存以及其他的资源信息。信息通过高效的消息机制传给平衡器,平衡器监视所有处理节点的状态,主动决定下个任务传给谁。平衡器可以是单个设备,也可以使一组平行或树状分布的设备。
平衡器集中处理网络作业,可通过几个基本的方法来获得网络负载平衡,这些方法可以结合使用,形成更高级的系统。平衡器统一过滤所有的网络流量(单向或者双向),并且实时监控集群节点的资源状态,决定新的流量在集群节点中的分配。这种分配行为要受到多方面因素的影响,这些因素将制约平衡器的调度行为。见下表:
备注:由于网络上对诸如NAT、域名轮训等负载方法已有太多的文章讨论,这里仅仅将其主要的原理和问题列出。
平衡基准方法 | 基本原理 | 优点以及适用面 | 问题以及限制 |
NAT网络地址转换 | 将内部或专用网络地址和路由信息转换为外部或公用网络地址和路由 | 1、节省IPv4地址空间,平衡器能够起到一定程度的防火墙作用2、适用于将企业内部网络进行外连 | 1、无法同intenet IpSec 这样的安全标准兼容2、负载平衡器容易成为集群系统的瓶颈 |
域名轮询 | Bind8.2以上支持的特性。通过将单一域名映射到多个虚拟域名,实现主机对虚拟域名的轮询。典型如:www CNAME www1www CNAME www2 | 1、实现简单,因为大多数的类UNIX服务器都能够支持。2、平衡器负载轻,可以快速进行轮询,实现高效的负载均衡。 | 1、无法探测节点是否正常,造成访问失效。2、由于客户端缓存域名,造成实际的负载不平衡。3、不区别节点差异,无法结合动态负载平衡算法,负载平衡效果差。 |
逆向代理服务器 | 以高速磁盘作为页面缓存提供页面响应服务。代理代替客户发送HTTP请求,Web节点仅处理代理服务器的请求,结果由代理从磁盘缓存直接返回。 | 由于针对磁盘I/O性能进行了优化,既保证Web服务器被安全地隔离,又能快速地进行静态页面甚至动态页面的响应服务。 | 1、每次的响应都要维护双倍的TCP连接,可扩展性差。 2、与部分CGI不太兼容 |
嵌入客户端应用的负载平衡 | 在客户端的应用软件里集成负载平衡功能,由客户端主动选择集群节点 | 由于实际上集群呈现为对等网的模式,灵活性可以最大化 | 部署和实现都很不经济 |
基于TCP/IP的流量均衡 | 根据数据包的源、目的地址进行连接识别,按照均衡算法将连接分配到不同节点 | 1、处理速度快,可扩展性高2、兼容大多数的网络应用3、节点可以实现异构性 | 1、不识别具体的应用协议内容,无法处理应用级会话2、要求节点的应用内容完全一致,而且必须是静态内容3、如果需要服务动态数据,则需有集中的数据存放点 |
应用依赖的负载均衡 | 在第应用进行作业负载均衡,通过分析应用协议数据头,根据匹配规则将应用请求发往指定节点 | 1、面向应用协议会话2、性能上可以针对性的进行优化3、兼容RFC应用协议相关标准4、集群节点独立部署,允许内容不一致 | 1、分析应用协议数据头的工作比较消耗CPU资源,容易造成CPU瓶颈2、针对不同的协议需要编写独立的协议数据分析模块 |
采用哪一种平衡方法是根据集群部署的特点决定的。这些影响因素反映了平衡器的能力和局限性,最基本的因素是TCP/IP协议,包括网际协议、网际控制报文协议、传输控制协议和用户数据报协议,此外还有其他的一些因素:
林凡,现于厦门大学从事Linux相关的科研工作。于集群技术由很大的兴趣,希望能与志同道合的朋友一起交流。您可以通过电子邮件 iamafan@21cn.com和他联系。 |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者