SUSE® Linux Enterprise High Availability Extension 是一个开放源代码群集技术的集成套件,可让您实现高度可用的物理和虚拟 Linux 群集,并排除单一故障点。它可确保关键资源的高可用性和可管理性,这些资源包括数据、应用程序和服务。因此,它有助于维持业务连续性、保护数据完整性及减少 Linux 关键任务工作负荷的计划外停机时间。
它随附提供必需的监视、消息交换和群集资源管理功能(支持对独立管理的群集资源进行故障转移、故障回复和迁移(负载平衡))。
本章介绍 High Availability Extension 的主要产品功能和优点。您将在本章中找到多个示例群集并了解组成群集的组件。最后一节概述了体系结构,描述了群集内的各体系结构层和进程。
有关 High Availability 群集环境中使用的一些通用术语的解释,请参见术语表。
High Availability Extension 是以 SUSE Linux Enterprise Server 12 SP5 的扩展的形式提供的。对于地理位置分散的群集(Geo 群集)的支持将作为 High Availability Extension 的独立扩展提供,即 Geo Clustering for SUSE Linux Enterprise High Availability Extension。
SUSE® Linux Enterprise High Availability Extension 可帮助您保障和管理网络资源的可用性。以下各节重点说明一些关键功能:
High Availability Extension 支持下列方案:
主动/主动配置
主动/被动配置:N+1、N+M、N 到 1 和 N 到 M
混合物理和虚拟群集,支持将虚拟服务器和物理服务器群集在一起。这可提高服务可用性和资源利用率。
本地群集
城域群集(“延伸的”本地群集)
Geo 群集(地理位置分散的群集)受附加 Geo 扩展的支持,具体请参见第 1.2.5 节 “支持本地、城域和 Geo 群集”。
群集最多可包含 32 个 Linux 服务器。使用 pacemaker_remote
可扩展群集使之突破此限制,包含更多的 Linux 服务器。如果群集内的一台服务器发生故障,则群集内的任何其他服务器均可重启动此服务器上的资源(应用程序、服务、IP 地址和文件系统)。
High Availability Extension 附带了 Corosync 讯息交换和成员资格层以及 Pacemaker 群集资源管理器。使用 Pacemaker,管理员可以持续监视其资源的运行状况和状态、管理依赖性以及根据高度可配置的规则和策略自动停止和启动服务。High Availability Extension 允许您根据适合您组织的特定应用程序和硬件基础体系结构对群集进行定制。基于时间的配置使服务可以在特定时间自动迁移回已修复的节点。
借助 High Availability Extension,您可以根据需要动态地指派和重指派服务器储存。它支持光纤通道储存区域网络 (SAN) 和网络中的 iSCSI 储存。因此也支持共享磁盘系统,但此类系统不是必需的。SUSE Linux Enterprise High Availability Extension 还附带有群集感知文件系统、卷管理器 (OCFS2) 和群集式逻辑卷管理器 (cLVM)。如需复制数据,可使用 DRBD* 将高可用性服务的数据从群集的活动节点镜像到其备用节点。此外,SUSE Linux Enterprise High Availability Extension 还支持 CTDB(Clustered Trivial Database,群集普通数据库),这是一种 Samba 群集技术。
SUSE Linux Enterprise High Availability Extension 支持包含物理和虚拟 Linux 服务器的群集,也支持混用这两种类型的服务器。SUSE Linux Enterprise Server 12 SP5 随附 Xen 和 KVM(基于内核的虚拟机)。两者都是开放源代码虚拟化超级管理程序。群集可将虚拟化 guest 系统(也称为 VM)作为服务来管理。
SUSE Linux Enterprise High Availability Extension 已扩展,可以支持下列不同的地理方案。对于地理位置分散的群集(Geo 群集)的支持将作为 High Availability Extension 的独立扩展提供,即 Geo Clustering for SUSE Linux Enterprise High Availability Extension。
一个位置的单个群集(例如,位于一个数据中心内的所有节点)。该群集使用多路广播或单路广播实现节点之间的通讯,并在内部管理故障转移。网络延迟可以忽略。储存通常由所有节点同步访问。
可涵盖多个建筑物或数据中心的单个群集。该群集通常使用单路广播实现节点之间的通讯,并在内部管理故障转移。网络延迟通常很低(在大约 20 英里的距离内小于 5 毫秒)。最好是通过光纤通道连接储存。数据复制由储存在内部执行,或者由基于主机的镜像在群集的控制下执行。
多个地理位置分散的站点,每个站点一个本地群集。站点通过 IP 通讯。站点间的故障转移由更高级别实体协调。Geo 群集需要应对有限网络带宽和高延迟问题。储存异步复制。
各个群集节点之间的地理距离越大,可能影响群集所提供服务的高可用性的因素就越多。网络延迟、有限带宽以及对储存的访问权是远距离群集面临的主要难题。
SUSE Linux Enterprise High Availability Extension 包含大量资源代理来管理资源,如 Apache、IPv4 和 IPv6 等。它还为通用的第三方应用程序(例如 IBM WebSphere Application Server)提供了资源代理。如需产品随附的 Open Cluster Framework (OCF) 资源代理的概述,请根据第 8.1.3 节 “显示有关 OCF 资源代理的信息”中所述使用 crm ra
命令。
High Availability Extension 附带了一组功能强大的工具,可用于对群集进行基本的安装和设置,以及有效地执行配置和管理任务:
常规系统安装和管理的图形用户界面。使用此用户界面,可按《安装和设置快速入门》中所述在 SUSE Linux Enterprise Server 的基础上安装 High Availability Extension。YaST 在 High Availability 类别中还提供以下模块,可帮助您配置群集或各个组件:
群集:基本群集设置。有关详细信息,请参见第 4 章 “使用 YaST 群集模块”。
DRBD:配置分布式复制块设备。
IP 负载平衡:使用 Linux 虚拟服务器或 HAProxy 配置负载平衡。有关详细信息,请参见第 14 章 “负载平衡”。
基于 Web 的用户界面,使用此界面可从非 Linux 计算机管理 Linux 群集。如果系统未提供图形用户界面,它还是理想的解决方案。指引您完成资源的创建和配置,并可用于执行启动、停止或迁移资源之类的管理任务。有关详细信息,请参见第 7 章 “使用 Hawk2 配置和管理群集资源”。
crm
外壳
强大的统一命令行界面,用于配置资源和执行所有监视或管理任务。有关详细信息,请参见第 8 章 “配置和管理群集资源(命令行)”。
High Availability Extension 允许您将最多 32 台 Linux 服务器配置为一个高度可用的群集(HA 群集),在群集中可以将资源动态地切换或移动到任何服务器上。可以将资源配置为在发生服务器故障时自动进行迁移,或手动移动资源以对硬件查错或平衡工作负载。
High Availability Extension 通过商品组件提供高可用性。通过将应用程序和操作合并到群集中降低了成本。High Availability Extension 还可让您集中管理整个群集并调整资源以满足不断变化的工作负载要求(这样就手动地实现了群集的“负载平衡”)。允许群集的多个(两个以上)节点共享一个“热备份”也节约了成本。
一个同样重要的好处是潜在地减少了计划外服务中断及用于软件和硬件维护和升级的计划内中断。
实施群集的理由包括:
提高可用性
改善性能
降低操作成本
可伸缩性
灾难恢复
数据保护
服务器合并
储存合并
通过在共享磁盘子系统上实施 RAID 可获得共享磁盘容错。
以下方案说明了 High Availability Extension 具备的一些优点。
假设您配置了一个包含三台服务器的群集,并在群集内的每台服务器上安装了 Web 服务器。群集内的每台服务器都主管两个网站。每个网站的全部数据、图形和 Web 页面内容都储存在一个连接到群集中每台服务器的共享磁盘子系统上。下图说明了该系统的结构。
在群集的正常工作状态下,每台服务器都与群集内的其他服务器持续通讯,并对所有已注册的资源进行定期巡回检测以检测故障。
假设 Web 服务器 1 出现硬件或软件故障,而依赖此 Web 服务器访问因特网、收发电子邮件和获取信息的用户失去了连接。下图说明了当 Web 服务器 1 出现故障时,资源的移动情况。
网站 A 移至 Web 服务器 2,网站 B 移至 Web 服务器 3。IP 地址和证书也移至 Web 服务器 2 和 Web 服务器 3。
在配置群集时,您决定了在出现故障的情况下,每台 Web 服务器上的网站将移至哪里。在上例中,您已配置将网站 A 移至 Web 服务器 2,将网站 B 移至 Web 服务器 3。这样,曾由 Web 服务器 1 处理的工作负荷继续存在且平均分配给剩余的群集成员。
如果 Web 服务器 1 发生故障,则 High Availability Extension 软件会执行下列操作:
检测到故障,并与 STONITH 确认 Web 服务器 1 确实已出现故障。STONITH 是“Shoot The Other Node In The Head”(关闭其他节点)的首字母缩写,它是一种关闭行为异常节点的方式,可防止这些节点在群集中引发问题。
将以前安装在 Web 服务器 1 上的共享数据目录重新安装在 Web 服务器 2 和 Web 服务器 3 上。
在 Web 服务器 2 和 Web 服务器 3 上重启动以前运行于 Web 服务器 1 上的应用程序。
将 IP 地址传送到 Web 服务器 2 和 Web 服务器 3。
在此示例中,故障转移过程迅速完成,用户在几秒钟之内就可以重新访问 Web 站点信息,而且通常无需重新登录。
现在,假设 Web 服务器 1 的故障已解决,它已恢复到正常工作状态。网站 A 和网站 B 可以自动故障回复(移回)至 Web 服务器 1,或者留在当前所在的服务器上。这取决于您是如何配置它们的资源的。将服务迁移回 Web 服务器 1 将导致一段时间的中断,因此 High Availability Extension 也允许您将迁移推迟到某个将极少或不会造成服务中断的时段。这两种选择都各有优缺点。
High Availability Extension 还提供资源迁移功能。可以根据系统管理的需要将应用程序、网站等资源移动到群集中的其他服务器。
例如,您可以手动将网站 A 或网站 B 从 Web 服务器 1 移至群集内的其他任何一台服务器。此操作的用例包括,对 Web 服务器 1 进行升级或定期维护,或者提高网站的性能或可访问性。
High Availability Extension 的群集配置可能包括共享磁盘子系统,也可能并不包括。共享磁盘子系统可通过高速光纤通道卡、电缆和交换机连接,也可配置为使用 iSCSI。如果服务器出现故障,群集中的另一个指定服务器将自动装入之前在故障服务器上装入的共享磁盘目录。这样,网络用户就能继续访问共享磁盘子系统上的目录。
典型的资源包括数据、应用程序和服务。下图显示了一个典型的光纤通道群集配置的结构。
虽然光纤通道提供的性能最佳,但也可以将群集配置为使用 iSCSI。iSCSI 是除光纤通道外的另一种选择,可用于创建低成本的储存区域网络 (SAN)。下图显示了一个典型的 iSCSI 群集配置。
虽然大多数群集都包括共享磁盘子系统,但也可以创建不含共享磁盘子系统的群集。下图显示了一个不含共享磁盘子系统的群集。
本节简要介绍 High Availability Extension 的体系结构。它提供了有关体系结构组件的信息,并描述了这些组件是如何协同工作的。
High Availability Extension 采用分层式体系结构。图 1.6 “体系结构”说明了不同的层及其相关的组件。
主层或第一层是讯息交换/基础结构层,也称为 Corosync 层。此层包含了发出含有“I am alive”(我在线)信号及其他信息的讯息的组件。
下一层是资源分配层。此层最复杂,它包含以下组件:
在资源分配层中执行的每个操作都要经过群集资源管理器。如果资源分配层的其他组件(或更高层中的组件)需要通讯,则它们通过本地 CRM 进行。在每个节点上,CRM 都会维护群集信息库 (CIB)。
群集信息库是整个群集配置和当前状态在内存中的 XML 表示。它包含所有群集选项、节点、资源、约束及其之间的关系的定义。CIB 还将更新同步到所有群集节点。群集中有一个主 CIB,由指定协调器 (DC)进行维护。所有其他节点都包含 CIB 复本。
群集中的一个 CRM 会选为 DC。DC 是群集中唯一可以决定需要在整个群集执行更改(例如节点屏蔽或资源移动)的实体。DC 同时也是用于保存 CIB 主副本的节点。所有其他节点都从当前 DC 获取他们的配置和资源分配信息。DC 是在成员资格更改后从群集的所有节点中选出的。
只要指定协调程序需要进行群集范围的更改(对新 CIB 作出反应),策略引擎就会根据群集的当前状态和配置计算其下一个状态。PE 还生成一个转换图,包含用于达到下一个群集状态的(资源)操作和依赖项的列表。PE 始终在 DC 上运行。
LRM 代表 CRM 调用本地资源代理(请参见第 1.5.1.3 节 “资源层”)。因此它可以执行启动/停止/监视操作并将结果报告给 CRM。LRM 是其本地节点上所有资源相关信息的权威来源。
最高层是资源层。资源层包括一个或多个资源代理 (RA)。资源代理是已写入的用来启动、停止和监视某种服务(资源)的程序(通常是外壳脚本)。资源代理仅由 LRM 调用。第三方可将他们自己的代理放在文件系统中定义的位置,这样就为各自的软件提供了现成群集集成。
SUSE Linux Enterprise High Availability Extension 使用 Pacemaker 作为 CRM。CRM 作为守护程序执行 (crmd
),它在每个群集节点上都有一个实例。Pacemaker 通过选出一个 crmd 实例来充当主实例,实现所有群集决策制定的集中化。如果选定的 crmd 过程(或它所在的节点)出现故障,则将建立一个新的过程。
在每个节点上保留了一个 CIB,它反映了群集的配置和群集中所有资源的当前状态。CIB 的内容会在整个群集中自动保持同步。
群集中执行的许多操作都将导致整个群集的更改。这些操作包括添加或删除群集资源、更改资源约束等等。了解执行这样的操作时群集中会发生的状况是很重要的。
例如,假设您要添加一个群集 IP 地址资源。为此,您可以使用一种命令行工具或 Web 界面来修改 CIB。您不必在 DC 上执行此操作,可以使用群集中任何节点上的任何工具,此操作会被传送到 DC 上。然后 DC 将把此 CIB 更改复制到所有群集节点。
根据 CIB 中的信息,PE 便计算群集的理想状态及如何达到此状态,并将指令列表传递给 DC。DC 通过消息交换/基础结构层发送命令,这些命令将由其他节点上的 crmd 对等体接收。每个 crmd 使用它的 LRM(作为 lrmd 实现)执行资源修改。lrmd 不是群集感知的,它直接与资源代理(脚本)交互。
所有同级节点将操作的结果报告给 DC。一旦 DC 得出所有必需操作在群集中都已成功执行的结论,群集将回到空闲状态并等待后续事件。如果有操作未按计划执行,则会再次调用 PE,CIB 中将记录新信息。
在某些情况下,可能需要关闭节点以保护共享数据或完成资源恢复。为此,Pacemaker 附带了一个屏蔽子系统,stonithd。STONITH 是“Shoot The Other Node In The Head”(关闭其他节点)的首字母缩写。它通常是使用 STONITH 共享块设备、远程管理板或远程电源开关实现的。为了方便使用 STONITH 设备,在 Pacemaker 中将它们模型化为资源(并在 CIB 中进行配置)。但是,stonithd 会负责了解 STONITH 拓扑,让其客户端请求屏蔽某个节点,而自身则执行其余的工作。