群集控制器

来自EEWiki.

跳转到: 导航, 搜索

背景:也叫群集管理器,群集管理器用于初始化群集、监视群集的运行状况、识别出现的节点故障以及当有节点加入或脱离群集时管理群集的重组。群集管理器作为守护程序运行在每个节点上。在群集启动和重组期间,会选出一个节点作为群集协调器。尽管所有节点都执行某些群集管理功能,但群集协调器是节点内通信的中枢点。

基本原理:一个控制器可以实现以下功能:

1,群集的配置

系统管理员设置群集配置参数,并进行初次群集启动。此后在正常运行过程中,群集就可管理其自身,而无须手动进行干预。群集的配置参数包括群集名称和节点、群集心跳线的联网参数、群集锁磁盘信息和定时参数(在“规划”一章中详述)。群集参数可以通过 SAM 输入,或通过编辑群集 ASCII 配置文件输入(有关详细内容,请参考第 5 章)。您输入的参数用于建立二进制配置文件,该文件将传送到群集的所有节点中。群集中的所有节点必须使用相同的二进制群集配置文件。

2,心跳线消息

群集管理器操作的核心是在群集中的各个节点之间发送和接收心跳线消息。群集中的每个节点使用群集协调器,跨越各自所监视的 TCP/IP 网络或配置为心跳线设备的 RS232 串行线交换心跳线信息。(有关 LAN 监视的详细信息,请参阅后面的章节“监视 LAN 接口和检测故障”。)

如果某个群集节点未在规定时间内从其他节点收到心跳线消息,则将启动群集重组。重组后期,如果一组新的节点组成了群集,则该信息将传递给程序包协调器(有关程序包协调器的详细内容,请参阅后文“程序包管理器如何工作”)。已经不属于新群集的节点上运行的程序包被转移到它们的代管节点。注意,如果暂时没有心跳线,群集可能会使用与以前相同的节点来进行重组。在这种情况下,程序包既不会暂停也不会切换,不过在重组过程中应用程序的性能可能会略受影响。

如果心跳线和数据通过同一 LAN 子网发送,那么数据拥塞可能会导致MC/ServiceGuard 在心跳线超时期间失去心跳线并启动群集重组,但如果未发生拥塞,则此重组是不必要的。为防止此类情况发生,除了建议在数据网络上配置心跳线或在串行线路接口 (RS232) 上运行心跳线外,还建议使用专用的心跳线。虽不要求使用专用 LAN,但如果网络分析结果表明群集中有丢失心跳线的潜在可能,就最好使用专用 LAN。

每个节点都以群集心跳线间隔指定的速率发送各自的心跳线消息。群集心跳线间隔在群集配置文件中设置,此文件是作为群集配置的一部分而创建的,将在“建立 HA 群集配置”一章中详述。

3,手动启动整个群集

手动启动可构成一个由群集配置中所有节点组成的群集。手动启动通常在第一次启动群集之时、在进行整个群集范围的维护或升级之后或在重新配置之后进行。

群集启动前,其中的所有节点上必须有相同的二进制群集配置文件。系统管理员可以在 SAM 中启动群集,或从某个节点执行 cmruncl 命令。仅在未运行群集时,即所有节点都未运行 cmcld 守护程序的时候,才能使用 cmruncl 命令。

在启动过程中,群集管理器将检查并确认启动命令中指定的所有节点是否都是群集的有效成员,是否都已启动并在运行,是否试图构成群集以及是否可以相互通信。如果它们满足这些条件,则群集管理器将构成群集。

自动启动群集

只要有节点重新引导并加入群集,就会自动启动群集。在个别节点重新引导之后,或者在群集中的所有节点出现故障时,以及在出现大范围电源故障并且所有 SPU 都停止运行时,此功能就会启动。

如果在 /etc/rc.config.d/cmcluster 文件中将 AUTOSTART_CMCLD 标志设置为 1,则将发生自动群集启动。在此参数设置为 1 时,只要有任何节点重新引导,它都将重新加入现有的群集,或者如果没有群集时,它将尝试构成新的群集。

4,动态群集重组

动态重组是群集成员的一种临时变化,它在有节点加入或脱离正在运行的群集时发生。重组不同于重新配置,后者是配置文件的一种永久改变。出现下列情况时会发生群集重组(但不限于以下情况):

• 在一个活动节点上检测到 SPU 故障或网络故障。

• 一个非活动节点想加入群集。该节点上已启动了群集管理器守护程序。

• 向群集配置中添加了一个节点,或从中删除了一个节点。

• 系统管理员暂停了一个节点。

• 节点由于程序包出现故障而暂停。

• 节点由于服务出现故障而暂停。

• 网络通信量过大阻碍了群集接收心跳线信号。

• 心跳线网络出现故障,而并未配置其他网络来传送心跳线。

重组通常导致群集的成员发生变化。新群集包含的节点可能会与以前的群集不同。

5,群集锁

尽管通常要求超过 50% 的群集定额,但恰好 50% 的此前运行的节点也可以重组为一个新的群集,前提是另外 50% 此前运行的节点不进行重组。这一点可通过使用仲裁器来保证,以便在两个大小相等的节点组之间做出选择,使其中一个组形成群集,而强制另一个组关闭。此仲裁器称为群集锁群集锁是通过锁磁盘或者 Quorum Server 来实现的。

只有发生以下情况时,才会将群集锁用作仲裁器:正在运行的群集出现故障,并且在 ServiceGuard 试图构成新的群集时会将群集分割为两个同等大小的子群集。这时,每个子群集都将试图获得群集锁。获得群集锁的子群集将构成新的群集,这样就防止了两个子群集同时运行的可能。如果两个子群集的大小不等,则节点多于 50% 的子群集将构成新的群集,此时不会用到群集锁。

对于一个包含两个节点的群集,需要配置群集锁。如果这两个节点间失去通信,获得群集锁的节点将接管群集,另一个节点则会暂停或执行 TOC。如果没有群集锁,群集中的任何一个节点出现故障都将导致另一个节点(即整个群集)暂停。另请注意,如果在试图获得群集锁的过程中群集锁出现故障,群集将暂停。

6,将 LVM 锁磁盘用作群集锁

可以使用锁磁盘的群集最多可包含四个节点(含四个节点)。群集锁磁盘是 LVM 磁盘上的一个特殊区域,它位于一个卷组中,可为群集中的所有节点所共享。当某个节点获得群集锁时,此区域将会加上标记,从而告诉其他节点此锁已“占用”。 锁磁盘不单用作群集锁,它还可用作普通卷组的一部分,以存储用户数据。群集锁卷组和物理卷名称都在群集配置文件中标识。

有关锁磁盘的操作如下图中所示。

image:bk0638214w-1.gif

ServiceGuard 定期对锁磁盘的运行情况进行检查,并在锁磁盘未通过运行情况检查时向 Syslog 文件写入消息。应该监视此文件以便能尽早发现锁磁盘问题。

可以根据将要建立的高可用性配置类型在两个锁磁盘选项 — 单锁磁盘或双锁磁盘 — 之间进行选择。建议尽可能使用单锁磁盘。然而无论是单锁磁盘还是双锁磁盘,重要的是即使一个节点掉电,群集锁也应该可用。因此,锁配置的选择一定程度上取决于可用供电电路的数量。为维持高可用性,不管作何种选择,群集中的所有节点都必须可以访问群集锁。

7,无群集锁

通常,配置三节点或少于三节点的群集时应考虑使用群集锁。双节点群集必须有群集锁。可以考虑在配置三节点或更多节点时不使用群集锁,不过作这一决定时应考虑到任何群集都可能需要仲裁这一事实。例如,如果为了进行维护而从三节点群集中删除了一个节点,该群集就重组为一个两节点群集。如果后来由于节点或通信故障出现需要仲裁的情形,则整个群集将不可用。

因为四节点或更多节点的群集分解为大小相等的两部分的可能性非常小,所以此类群集不需要群集锁。不过请务必配置好群集以防止恰好有一半节点同时出现故障。例如:要确保没有潜在的单点故障(如相等数量的节点之间使用单个 LAN),或者确保不对恰好半数的节点使用单个供电电路。

现状及发展方向

这里有一个集群控制器的实例:

IBM TotalStorage FAStT600 存储服务器

image:bk0638214w-2.jpg

双控制器机型可提供4个2Gb光纤通道端口,能够支持直接连接的UNIX和使用Intel处理器的集群服务器经济合理地实现多路径故障切换。

• 使用增强选项的机型能够提供最高可达768MB/秒的高性能吞吐量1。

•最多可支持112个硬盘驱动器,当使用高性能2Gb光纤通道磁盘(配置FAStT增强选项)时,存储容量可扩展到16.4TB2; 当使用串行ATA磁盘(FAStT600或配置了增强选项的FAStT600)时,存储容量可扩展到28TB。当配置FAStT600单控制器时,最多可支持14个硬盘驱动器,存储容量可扩展到2TB。

• 包括了FAStT存储管理器,可帮助对所有的FAStT存储子系统进行中央管理。

• 可推动存储区域网(SAN)、网络连接存储(NAS)和直接连接存储环境中的存储整合。

• 通过使用可选FAStT服务报警功能提供的自动化报警,可帮助缩短服务响应时间。

个人工具箱
导航
支持单位