法律状态公告日
法律状态信息
法律状态
2016-05-11
授权
授权
2015-04-22
实质审查的生效 IPC(主分类):G06F15/173 申请日:20130228
实质审查的生效
2014-12-17
公开
公开
技术领域
本公开总体上涉及对计算机群集的管理,更具体地讲,涉及对链路失 效的群集范围的一致性检测。
背景技术
高可用性群集(也称为HA群集或失效备援群集)是支持以最少的停 机时间运行服务器应用程序的计算机(节点)组。在各个系统组件失效 时,高可用性群集使用成组的冗余计算资源来提供连续服务。更具体地 讲,高可用性群集通过提供多个服务器、多个网络连接、冗余数据存储等 来消除单点失效。在不存在群集的情况下,如果运行特定应用程序的服务 器失效,则在服务器恢复之前应用程序将不可用。在高可用性群集中,检 测服务器的失效(或由此检测所使用的特定计算资源诸如网络适配器、存 储设备等的失效)。于是自动地采取措施以使正在失效的服务器上运行的 应用程序保持可用。这可以采用重启服务器和应用程序、使用不同的网络 资源(例如,网络适配器),或者在另一个计算系统(即,群集的另一个 节点)上自动地重启应用程序的形式。该过程称为“失效备援”。高可用 性群集通常用于关键服务器应用程序,诸如企业数据库、重要的业务应用 程序、电子商务网站等。即便此类应用程序仅出现短期的停工,代价也可 能极为高昂,尤其在特定行业例如银行业和电信行业中。
在计算机存储中,逻辑卷管理是在大容量存储设备上分配空间的灵活 方法。特别是,卷管理器可将底层物理分区连接、条带化到一起或以其他 方式组合,以形成更大的虚拟分区。管理员然后可在不会潜在地中断系统 使用的情况下重设逻辑卷的大小或将其移动。群集卷管理器将逻辑卷管理 跨群集的多个节点扩展,使得每个节点识别相同的逻辑卷布局,以及所有 节点的所有卷资源的相同状态。在进行群集卷管理的情况下,来自群集中 任何节点的对磁盘或卷配置所作出的任何更改都将被群集的所有节点识 别。为了支持群集级的卷管理,在新节点加入群集并且在现有节点离开群 集时对群集进行重新配置。
群集使用节点之间的互连(链路)进行数据和管理通信。如果链路失 效,则需要采取纠正措施。从失效备援和其他群集活动恢复的效率和及时 性取决于群集能够检测和处理链路失效的速度。独立的节点可使用操作系 统服务来检测其链路中的任一个是否失效。在两个节点没有使用任何交换 机而直接连接(使用交叉电缆)的情况下,链路掉线通知被两个节点接收 到,使得它们可以并行地对该事件做出反应。然而,在两个以上的节点使 用交换机耦接的情况下,仅有本地节点会实时获悉链路失效。因此,由于 在群集中存在网络拓扑结构,所以通常仅有单个节点或节点的本地化子组 会立即获悉链路失效。传统上,其他节点随后通过群集范围内的心跳机制 获悉连接失效,其中该心跳机制用于监测群集中每个节点的状态。与独立 的节点获悉本地链路失效所花费的时间相比,心跳机制相对较慢。对群集 的适当管理可能取决于群集的每个节点在采取纠正措施之前知悉链路失 效。到每个节点通过心跳机制获悉失效为止的时间间隔使掉线的连接所必 需的任何群集重新配置或失效备援活动延迟,并在群集的管理方面,诸如 在隔离仲裁决策的执行方面,引起额外的问题。此外,在节点或群集在不 同时间获悉链路失效的情况下,可能发生错误的不期望的恢复活动。
这些问题需要得到解决。
发明内容
链路失效的通知传播到群集中多个节点中的每一个。群集特定节点的 特定链路的失效,例如通过特定节点的操作系统,被检测到。特定链路失 效的通知传播到群集的所述多个节点,使得所述节点并行地处理链路掉线 事件。执行对链路失效通知的传播,使得群集的节点在由相应心跳的超时 获悉链路掉线事件之前就接收到该通知。在一些实施例中,因为也许存在 链路立即恢复上线的情况,所以链路失效的通知仅在等待特定的宽限期之 后传播。
在一个实施例中,通过广播消息来传播链路失效的通知,该消息向群 集的节点通知特定链路的失效。单独的链路被维持,该单独的链路连接至 群集的每个节点并专用于广播链路掉线事件通知消息。该单独的链路可用 于向群集的节点广播消息。单独的链路可以但不必采用私有链路的形式, 该私有链路不会暴露给群集的用户。在一个实施例中,确保在对链路掉线 事件进行处理之前广播消息已被群集的节点接收到。这点可例如通过等待 从群集的每个节点接收到确定收到广播消息的确认而实现。在一个实施例 中,如果在给定时间周期内没有从每个节点接收到确定收到广播消息的确 认,则重新传输广播消息。
在另一个实施例中,通过将链路失效的通知传输到所有节点均可访问 的集中式计算设备来将该通知传播到群集的节点。群集的节点能够以特定 的频率轮询集中式计算设备是否有链路失效的通知,并通过轮询获悉特定 链路的失效。在一个实施例中,替代轮询(或除了轮询之外),集中式计 算设备将特定链路失效的通知传输至群集的节点。
本发明内容和以下具体实施方式中所述的特征和优点并不包括全部, 并且特别地,相关领域的普通技术人员在考虑其附图、说明书和权利要求 书之后,许多另外的特征和优点将显而易见。此外,应该指出的是,说明 书中所用的语言主要被选择用于可读性和指导目的,而不是被选择用来限 定或限制本发明的主题,必需借助权利要求书确定此发明主题。
附图说明
图1为根据一些实施例的示例性网络体系结构的框图,在该示例性网 络体系结构中可实施链路失效管理系统。
图2为根据一些实施例的适用于实施链路失效管理系统的计算机系统 的框图。
图3为根据一些实施例的检测示例性群集拓扑结构中的链路失效的链 路失效管理系统的框图。
图4为根据一些实施例的通过广播消息将链路失效的通知传播到群集 节点的链路失效管理系统的框图。
图5为根据一些实施例的通过集中式计算设备将链路失效的通知传播 到群集节点的链路失效管理系统的框图。
图6为根据一个实施例的链路失效管理系统的操作的流程图。
图7为根据另一个实施例的链路失效管理系统的操作的流程图。
这些图仅出于举例说明的目的来示出各种实施例。本领域技术人员根 据下列讨论将易于认识到,在不脱离本文所述原理的情况下,可采用本文 所述的结构和方法的替代实施例。
具体实施方式
图1为框图,示出了示例性网络体系结构100,在该示例性网络体系 结构中可实施链路失效管理系统101。所示网络体系结构100包括多个客户 端103A、103B和103N,以及多个服务器105A和105N。在图1中,链路 失效管理系统101被示出为驻留在服务器105A上。应当理解这仅是例 子,并且在各种实施例中该系统101的各种功能可在服务器105、客户端 103上被实例化,或可分布在多个客户端103和/或服务器105之间。
客户端103和服务器105可使用计算机系统210(例如图2所示和下文 所述的计算机系统)实现。客户端103和服务器105通信地耦接到网络 107,例如经由以下结合图2所述的网络接口248或调制解调器247进行。 客户端103能够使用例如网页浏览器或其他客户端软件(未示出)访问服 务器105上的应用程序和/或数据。
虽然图1示出了三个客户端和两个服务器作为例子,实际上可部署更 多(或更少)客户端103和/或服务器105。在一个实施例中,网络107为 互联网的形式。可在其他实施例中使用其他网络107或基于网络的环境。
图2为适用于实施链路失效管理系统101的计算机系统210的框图。 客户端103和服务器105可以此类计算机系统210的形式实现。如图所 示,计算机系统210的一个组件是总线212。总线212通信地耦接计算机系 统210的其他组件,例如至少一个处理器214;系统内存217(如,随机存 取内存(RAM)、只读存储器(ROM)、闪存);输入/输出(I/O)控制器218; 音频输出接口222,其通信地耦接到外部音频设备,例如扬声器系统220; 显示适配卡226,其通信地耦接到外部视频输出设备,例如显示屏224;一 个或多个接口,例如串行端口230、通用串行总线(USB)插座230、并行端 口(未示出)等等;键盘控制器233,其通信地耦接到键盘232;存储接口 234,其通信地耦接到至少一个硬盘244(或其他形式的磁介质);软盘驱 动器237,其被配置为接收软盘238;主机总线适配器(HBA)接口卡235A, 其被配置为与光纤通道(FC)网络290连接;HBA接口卡235B,其被配置为 连接到SCSI总线239;光盘驱动器240,其被配置为接收光盘242;鼠标 246(或其他指针设备),其例如经由USB插座228耦接到总线212;调制 解调器247,其例如经由串行端口230耦接到总线212;以及网络接口 248,其例如直接耦接到总线212。
其他组件(未示出)可以类似方式连接(如,文件扫描仪、数字相 机、打印机等等)。相反地,图2中所示的所有组件不需要都存在。可以 使用与图2中所示方法不同的方法来互连这些组件。
总线212允许处理器214与系统内存217之间的数据通信,如上所指 出的,所述系统内存可包括ROM和/或闪存以及RAM。RAM通常是将操 作系统和应用程序加载到其中的主内存。除其他代码外,ROM和/或闪存还 可包含控制某些基本硬件操作的基本输入输出系统(BIOS)。应用程序可存 储在本地计算机可读介质(如,硬盘244、光盘242)上并加载到系统内存 217中并且被处理器214执行。应用程序也可加载到来自远程位置(即,远 程定位的计算机系统210)的系统内存217中,例如经由网络接口248或调 制解调器247进行。在图2中,链路失效管理系统101被示出为驻留在系 统内存217中。链路失效管理系统101的工作将在下文结合图3更详细地 解释。
存储接口234耦接到一个或多个硬盘244(和/或其他标准存储介 质)。硬盘244可以是计算机系统210的一部分,或者可以是物理上独立 的并且可以通过其他接口系统进行访问。
网络接口248和/或调制解调器247可直接或间接通信地耦接到网络 107,例如互联网。此类耦接可以是有线的或无线的。
图3示出根据一些实施例的检测示例性群集301拓扑结构中的链路305 的失效的链路失效管理系统101。如上文所述,链路失效管理系统101的功 能可驻留在客户端103、服务器105上,或者可分布在多个计算机系统210 之间,包括在基于云的计算环境内,在该基于云的计算环境中链路失效管 理系统101的功能作为网络107上的服务提供。应当理解,虽然链路失效 管理系统101在图3中被示出为单个实体,但所示链路失效管理系统101 代表功能的集合,其可根据需要被实例化为单个或多个模块(链路失效管 理系统101的特定多个模块的实例化在图3和图4中示出)。出于举例说 明的目的,将链路失效管理系统101描述为驻留在所示群集301的每个节 点303上并管理发生在该节点303上的功能。实际上,可将链路失效管理 系统101集中化或以其他方式根据需要跨群集301的多个节点303分布。
应当理解,链路失效管理系统101的模块可在任何计算机系统210的 系统内存217(如,RAM、ROM、闪存)内被实例化(例如被实例化为目 标代码或可执行映像),使得在计算机系统210的处理器214处理模块 时,计算机系统210执行相关功能。如本文所用,术语“计算机系统”、 “计算机”、“客户端”、“客户端计算机”、“服务器”、“服务器计 算机”和“计算设备”意指被配置和/或被编程为执行所述功能的一个或多 个计算机。另外,用于实施链路失效管理系统101的功能的程序代码可存 储在计算机可读存储介质上。任何形式的有形计算机可读存储介质可用于 该语境,例如磁或光存储介质。如本文所用,术语“计算机可读存储介 质”并不意味着电信号与底层物理介质分离。
如图3中所示,链路失效管理系统101启用对失效链路305的检测的 快速、群集301范围内的传播。为清楚起见,图3示出了包括以下三个节 点的群集301:节点303A、303B和303C。应当理解,在该领域中,群集 301将通常包含显著更多的节点303。节点303使用网络链路305和集线器 307连接。在图3所示的例子中,每个节点303通过单独的链路305连接至 三个不同的集线器:集线器307A、307B和307C。在不同的实施例中,可 部署更多或更少的链路305和集线器307,以便创建连接群集301的节点 303的网络拓扑结构。
如图3中所示,节点303A上的链路失效管理系统101的链路失效检测 模块309检测节点303A的链路305中的任一个(即,链路305A-C)何时 失效。(位于其他节点303的每一个上的类似模块检测它们的本地链路305 的失效)。链路失效检测模块309可使用其本地节点303上的操作系统服 务,以在本地链路305掉线时接收到即时通知。例如,如果链路305A即将 断开,则节点303A上的链路失效检测模块309将接收到来自节点303A上 的操作系统(未示出)的即时通知。然而,节点303B、303C将不会知悉该 链路掉线事件,因为链路失效检测模块309仅检测其本地节点303的链路 305的失效。出现这种情况是因为给定节点(例如,303A)上的操作系统 仅检测对于该节点303而言是本地的链路305的失效。
传统上,群集301中的其他节点303将通过监测心跳来获悉节点303A 的链路失效。然而,如上所述,依靠心跳迫使在远程节点303能够推断远 程链路305已失效之前出现过于长的延迟。在例示的例子中,虽然节点 303A将立即获悉链路305A的失效,但节点303B和303C将必须等候相应 心跳超时方能够推断链路305A已失效。如上所述,这是有问题的,因为: 对于群集301的管理而言每个节点303并行地处理链路掉线事件(即,响 应于链路305掉线)很重要;并且,该过程需要比能够通过依靠心跳机制 而促进完成的过程更快速地完成。
如图4-5中所示,本地节点303上的链路失效管理系统101将链路305 失效的通知传播到群集301的其他节点303,使得群集301的节点303能够 并行地处理链路掉线事件。如下文更详细地描述,在不同的实施例中,链 路失效管理系统101使用不同的方法来执行将链路305失效的通知传播到 群集301的节点303。应当理解,在这些不同的实施例中,执行了对链路 305失效的通知的传播,使得群集301的节点303在相应的心跳超时之前接 收到所述通知。因此,链路失效管理系统101使群集301的节点303能够 并行地处理链路掉线事件,这比通过依靠心跳机制而能够实现的更快。
图4示出了一实施例,其中链路失效管理系统101通过广播消息403 将关于链路305失效的信息传播到群集301的节点303。在一个实施例中, 响应于对本地链路(例如,图3中示出的示例性拓扑结构中的链路305A) 失效的获悉,本地节点(例如,节点303A)上的链路失效管理系统101的 广播模块401生成并发送广播消息403,该广播消息向群集301的节点303 通知所检测的链路305失效。因此,群集301中的所有其他节点303同时 接收到对链路305失效的通知,并因此可以并行地处理该事件。在不同的 实施例中,可使用不同的链路305来传输广播消息403,取决于哪个链路 305可用于该目的。
例如,在一个实施例中,群集301内的一些链路305被配置为标准群 集链路305(例如,在图3示出的示例性拓扑结构中,通过集线器307A互 连的链路305A、305D和305G,以及通过集线器307B互连的链路305B、 305E和305H),然而针对链路掉线事件广播消息403保留了一组链路305 (例如,通过集线器307C互连的链路305C、305F和305I)。在该情景 中,如果节点303A上的链路失效检测模块309检测到链路305A和/或链路 305B已掉线,则其可以使用专用链路305C来将广播消息403传输到节点 303B和303C。在一个实施例中,专用于失效检测广播消息403的单独的链 路305是链路失效管理系统101私有的,并且不会暴露给群集301的用 户。在该情境中,专用链路305连接至群集301中的所有节点303,并且仅 用于发送链路掉线事件信息。这确保专用信道用于指示检测到链路305失 效的广播消息403的通信。
在另一个实施例中,这些链路305是链路失效管理系统101私有的, 但是也可用于链路掉线事件信息以外的通信。在又一个实施例中,用于传 输链路掉线事件信息的链路305不是链路失效管理系统101私有的,并且 可被其他方用于其他通信,例如在带宽可用的基础上。在一些实施例中, 用于传送链路掉线事件信息的专用链路305不可用,在该情况下,其他链 路305可用于该目的(例如,现有的公共链路305,包括高优先级链路305 或低优先级链路,例如在另一个链路掉线时使用的一个链路,等等)。应 当理解,在不同的实施例中,所有可用的链路305均可用于根据需要传输 链路掉线事件信息。
一旦已对链路掉线事件消息403进行广播,本地节点(例如,图3中 的303A)上的链路失效管理系统101便在处理链路掉线事件之前采取措施 以确保广播消息403已被群集301中的其他节点303接收到。这确保了群 集301的多个节点303同时处理链路掉线事件。在一个实施例中,链路失 效管理系统101的确认接收模块405等待来自群集301中的其他节点303中 的每一个的对确定接收到广播消息403的确认(ACK)407。从其他节点303 中的每一个接收到ACK407指示群集中的每个节点303均知悉链路305失 效。如果网络丢弃了广播消息403本身或来自一个或多个节点303的ACK 407,则确认接收模块405不接收来自群集301中的每个其他节点303的 ACK407。在一个实施例中,响应于在给定时间周期内尚未从群集301中 的每个节点303接收到ACK407,广播模块401会重新传输广播消息403。 在一些情况下,响应于未接收到一个或多个预期的ACK407,广播消息 403可重新传输多次。应当理解,在重新传输之前要等待的时间长度以及重 新传输的次数为在实施例之间可能有所不同的设计参数。在任何情况下, 通常对这些参数进行设置,使得确认接收模块405等待ACK407的时间总 量仍然小于心跳机制针对节点303状态信息的群集301范围传播所使用的 时间尺度。应当理解,在适当的时候,群集的其他节点303通过心跳机制 获悉链路305失效。因此,作为对并非所有ACK407均在节点303为通过 心跳机制获悉链路305失效所花费的时间量内接收到的情况的支持,群集 301的节点303可照惯例获悉链路掉线事件。应当理解,用于广播有关链路 掉线事件的信息的协议和格式的实施细节以及用于确认其接收的握手的实 施细节可根据需要在实施例之间有所不同(例如,原子广播、两阶段提交 等)。
在一些实施例中,在链路失效检测模块309检测到链路305失效时, 广播模块401等待宽限期,之后才传输广播消息403。宽限期的用途是避免 在链路掉线但是几乎立即又恢复上线的情况下(例如,片状链路)对链路 掉线事件进行广播。宽限期的长度为可变的设计参数,但是其相对于心跳 机制的时间尺度通常是相当短的。例如,可使用0.5秒、1秒或2秒的宽限 期。在此类实施例中,如果失效链路305在宽限期内恢复上线,则不发送 广播消息403。另一方面,如果宽限期已过且链路305仍然掉线,则广播模 块401开始将消息403传输至其他节点303。
图5示出了另一个实施例,其中链路失效管理系统101通过集中式计 算设备503将链路305失效的通知501传播到群集301的其他节点303。在 该实施例中,在链路失效检测模块309检测到链路305失效时,替代向其 他节点303广播消息403(或除此之外),链路失效管理系统101的传输模 块505将通知501传输到集中式计算设备503(例如,服务器105、磁盘 244,等等)。在该实施例中,在群集301的每个节点303上的链路失效管 理系统101的轮询模块507以特定频率轮询集中式计算设备503是否有链 路305失效的通知501,并由此获悉链路305失效。要使用的特定轮询频率 为可变的设计参数。替代轮询或除轮询之外,集中式计算设备503可在收 到有关链路掉线事件的通知501时,将通知501传输到群集301的所有节 点303。这些实施例可以在例如没有群集链路305可用于给定节点303上的 广播模块401以传输链路掉线事件广播消息403时使用。
图6示出了根据一个实施例的链路失效管理系统101的操作步骤。链 路失效检测模块309检测到601群集301的特定节点303的特定链路305失 效。广播模块401广播603向群集301的节点303通知检测到链路305失效 的消息403,使得节点303在由相应心跳超时获悉链路掉线事件之前接收到 消息403。确认接收模块405从群集301中的节点303接收605对确定接收 到广播消息403的确认407。群集301的每个节点303并行地处理607链路 掉线事件。
图7示出了根据另一个实施例的链路失效管理系统101的操作步骤。 链路失效检测模块309检测到701群集301的特定节点303的特定链路305 失效。传输模块505向集中式计算设备503传输703有关链路掉线事件的 通知501。位于群集301的节点303上的轮询模块507以特定的频率轮询 705集中式计算设备503是否有链路305失效的通知501,使得群集301的 节点303在由相应心跳超时获悉链路掉线事件之前通过轮询获悉该事件。 群集301的每个节点303并行地处理707链路掉线事件。
如熟悉本领域的技术人员所理解的,在不脱离本发明的实质或本质特 征的情况下,本发明可以以其他特定形式来体现。同样地,部分、模块、 代理程序、管理器、组件、功能、规程、动作、层、特征、属性、方法 论、数据结构和其他方面的具体命名和划分不是强制性的或重要的,并且 实现本发明的机制或其特征可具有不同名称、划分和/或格式。出于解释目 的,已参考特定实施例描述了以上说明书。然而,以上示例性讨论并非意 图是穷举的或限制为所公开的精确形式。鉴于上述教导,许多修改形式和 变型形式都是可能的。为了最好地解释相关原理及其实际应用,选择并描 述了实施例,由此使得本领域其他技术人员最好地利用具有或不具有可适 合所设想的具体用途的各种修改形式的各种实施例。
机译: 群集范围内一致的互连故障检测
机译: 群集范围内一致的互连故障检测
机译: 群集范围内一致的互连故障检测