1 产品概述 #
SUSE® Linux Enterprise High Availability Extension 是一种开放源代码群集技术的集成套件。它可让您实施高度可用的物理和虚拟 Linux 群集,避免单一故障点。它可确保关键网络资源的高可用性和可管理性,这些网络资源包括数据、应用程序和服务。因此,它有助于维持业务连续性、保护数据完整性及减少 Linux 关键任务工作负荷的计划外停机时间。
它随附提供必需的监视、消息交换和群集资源管理功能(支持对独立管理的群集资源进行故障转移、故障回复和迁移(负载平衡))。
本章介绍 High Availability Extension 的主要产品功能和优点。您将在本章中找到多个示例群集并了解组成群集的组件。最后一节概述了体系结构,描述了群集内的各体系结构层和进程。
有关 High Availability 群集环境中使用的一些通用术语的解释,请参见词汇表。
1.1 作为扩展提供 #
High Availability Extension 是以 SUSE Linux Enterprise Server 15 SP4 的扩展的形式提供的。
1.2 主要功能: #
SUSE® Linux Enterprise High Availability Extension 可帮助您保障和管理网络资源的可用性。以下各节重点说明一些关键功能:
1.2.1 各种群集情形 #
High Availability Extension 支持下列方案:
主动/主动配置
主动/被动配置:N+1、N+M、N 到 1 和 N 到 M
混合物理和虚拟群集,支持将虚拟服务器和物理服务器群集在一起。这可提高服务可用性和资源利用率。
本地群集
城域群集(“延伸的”本地群集)
Geo 群集(地理位置分散的群集)
属于一个群集的所有节点都应使用相同的处理器平台:x86、IBM Z 或 POWER。不支持采用混合体系结构的群集。
群集最多可包含 32 个 Linux 服务器。使用 pacemaker_remote 可扩展群集使之突破此限制,包含更多的 Linux 服务器。如果群集内的一台服务器发生故障,则群集内的任何其他服务器均可重启动此服务器上的资源(应用程序、服务、IP 地址和文件系统)。
1.2.2 灵活性 #
High Availability Extension 附带了 Corosync 消息交换和成员资格层以及 Pacemaker 群集资源管理器。使用 Pacemaker,管理员可持续监视其资源的运行状况和状态,并管理依赖项。可根据高度可配置的规则和策略,自动停止和启动服务。High Availability Extension 允许您根据适合您组织的特定应用程序和硬件基础体系结构对群集进行定制。基于时间的配置使服务可以在特定时间自动迁移回已修复的节点。
1.2.3 储存和数据复制 #
借助 High Availability Extension,您可以根据需要动态地指派和重指派服务器储存。它支持光纤通道或 iSCSI 储存区域网络 (SAN)。它还支持共享磁盘系统,但这不是必需的。SUSE Linux Enterprise High Availability Extension 还附带有群集感知文件系统 (OCFS2) 和群集式逻辑卷管理器(群集式 LVM2)。如需复制数据,可使用 DRBD* 将高可用性服务的数据从群集的活动节点镜像到其备用节点。此外,SUSE Linux Enterprise High Availability Extension 还支持 CTDB(Cluster Trivial Database,群集普通数据库),这是一种 Samba 群集技术。
1.2.4 虚拟化环境支持 #
SUSE Linux Enterprise High Availability Extension 支持物理和虚拟 Linux 服务器的混合群集。SUSE Linux Enterprise Server 15 SP4 随附了 Xen(一种开放源代码虚拟化超级管理程序)和 KVM(基于内核的虚拟机)。KVM 是一款适用于 Linux 的虚拟化软件,基于硬件虚拟化扩展。High Availability Extension 中的群集资源管理器能够识别、监视和管理虚拟服务器以及物理服务器上正在运行的服务。Guest 系统可作为服务由群集管理。
1.2.5 本地、城域和 Geo 群集支持 #
SUSE Linux Enterprise High Availability Extension 支持不同的地理方案,包括分散在不同地理位置的群集(即 Geo 群集)。
- 本地群集
一个位置的单个群集(例如,位于一个数据中心内的所有节点)。该群集使用多路广播或单路广播实现节点之间的通讯,并在内部管理故障转移。网络延迟可以忽略。储存通常由所有节点同步访问。
- 城域群集
使用光纤通道连接所有站点、可跨越多个建筑物或数据中心的单个群集。该群集使用多路广播或单路广播实现节点之间的通讯,并在内部管理故障转移。网络延迟通常很低(约 20 英里的距离 <5 毫秒)。储存频繁复制(镜像或同步复制)。
- Geo 群集(多站点群集)
多个地理位置分散的站点,每个站点一个本地群集。站点通过 IP 通讯。站点间的故障转移由更高级别实体协调。Geo 群集需要应对有限网络带宽和高延迟问题。储存异步复制。
注意:Geo 群集和 SAP 工作负载目前,Geo 群集既不支持 SAP HANA 系统复制,也不支持 SAP S/4HANA 和 SAP NetWeaver 排队复制设置。
各个群集节点之间的地理距离越大,可能影响群集所提供服务的高可用性的因素就越多。网络延迟、有限带宽以及对储存的访问权是远距离群集面临的主要难题。
1.2.6 资源代理 #
SUSE Linux Enterprise High Availability Extension 包含大量资源代理来管理资源,如 Apache、IPv4 和 IPv6 等。它还为通用的第三方应用程序(例如 IBM WebSphere Application Server)提供了资源代理。如需产品随附的 Open Cluster Framework (OCF) 资源代理的概述,请根据第 8.1.3 节 “显示有关 OCF 资源代理的信息”中所述使用 crm ra
命令。
1.2.7 用户友好的管理工具 #
High Availability Extension 附带有一套强大的工具。可使用这些工具进行基本的群集安装和设置,并能实现高效配置和管理:
- YaST
常规系统安装和管理的图形用户界面。使用此用户界面,可按《安装和设置快速入门》中所述在 SUSE Linux Enterprise Server 的基础上安装 High Availability Extension。YaST 在 High Availability 类别中还提供以下模块,可帮助您配置群集或各个组件:
群集:基本群集设置。有关细节,请参见第 4 章 “使用 YaST 群集模块”。
DRBD:配置分布式复制块设备。
IP 负载平衡:使用 Linux 虚拟服务器或 HAProxy 配置负载平衡。有关细节,请参见第 15 章 “负载平衡”。
- Hawk2
您可以在 Linux 或非 Linux 计算机上使用用户友好的 Web 界面来监视和管理高可用性群集。可使用(图形)Web 浏览器从群集内外的任何计算机访问 Hawk2。因此,即便您使用的只是提供极简图形用户界面的系统,也能完美满足您的需求。有关详细信息,请参见第 7 章 “使用 Hawk2 配置和管理群集资源”。
crm
外壳强大的统一命令行界面,用于配置资源和执行所有监视或管理任务。有关细节,请参见第 8 章 “配置和管理群集资源(命令行)”。
1.3 优势 #
High Availability Extension 可让您将最多 32 个 Linux 服务器配置到一个高可用性群集(HA 群集)中。资源可在群集中的任何节点之间动态切换或移动。可以将资源配置为在发生节点故障时自动进行迁移,也可以手动移动资源以对硬件查错或平衡工作负载。
High Availability Extension 通过商品组件提供高可用性。通过将应用程序和操作合并到群集中降低了成本。High Availability Extension 还可让您集中管理整个群集。您可以调整资源以满足不断变化的工作负载要求(即对群集进行手动“负载平衡”)。允许群集的多个(两个以上)节点共享一个“热备份”也节约了成本。
它还具有另一个同等重要的优点,就是能够潜在地减少计划外服务中断时间及用于软件和硬件维护和升级的计划内中断时间。
实施群集的理由包括:
提高可用性
改善性能
降低操作成本
可伸缩性
灾难恢复
数据保护
服务器合并
储存合并
通过在共享磁盘子系统上实施 RAID 可获得共享磁盘容错。
以下方案说明了 High Availability Extension 具备的一些优点。
示例群集情形#
假设您配置了一个包含三个节点的群集,并在群集内的每个节点上安装了 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 进行升级或定期维护,或者提高网站的性能或可访问性。
1.4 群集配置:储存 #
High Availability Extension 的群集配置可能包括共享磁盘子系统,也可能并不包括。共享磁盘子系统可通过高速光纤通道卡、电缆和交换机连接,也可配置为使用 iSCSI。如果有一个节点发生故障,群集中的另一个指定节点就会自动挂载之前挂载到故障节点上的共享磁盘目录。这样,网络用户就能继续访问共享磁盘子系统上的目录。
使用带 LVM2 的共享磁盘子系统时,必须将该子系统连接到群集中需要访问它的所有服务器。
典型的资源包括数据、应用程序和服务。下图显示典型光纤通道群集配置的可能构成。绿色线表示与以太网电源开关的连接。如此设备便可通过网络控制,并可在 ping 请求失败时重引导节点。
虽然光纤通道提供的性能最佳,但也可以将群集配置为使用 iSCSI。iSCSI 是除光纤通道外的另一种选择,可用于创建低成本的储存区域网络 (SAN)。下图显示了一个典型的 iSCSI 群集配置。
虽然大多数群集都包括共享磁盘子系统,但也可以创建不含共享磁盘子系统的群集。下图显示了一个不含共享磁盘子系统的群集。
1.5 体系结构 #
本节简要介绍 High Availability Extension 的体系结构。它提供了有关体系结构组件的信息,并描述了这些组件是如何协同工作的。
1.5.1 体系结构层 #
High Availability Extension 采用分层式体系结构。图 1.6 “体系结构”说明了不同的层及其相关的组件。
1.5.1.1 成员资格和消息交换层 (Corosync) #
此组件提供可靠的消息交换、成员资格,以及有关群集的仲裁信息。相应的过程由 Corosync 群集引擎(一个组通讯系统)处理。
1.5.1.2 群集资源管理器 (Pacemaker) #
用作群集资源管理器的 Pacemaker 是对群集中所发生事件做出反应的“大脑”。它是作为 pacemaker-controld
实现的,即,协调所有操作的群集控制器。例如,节点加入或退出群集、资源故障,或者维护等安排的活动均为事件。
- 本地资源管理器
本地资源管理器位于每个节点上的 Pacemaker 层与资源层之间。它是作为
pacemaker-execd
守护程序实现的。通过此守护程序,Pacemaker 可以启动、停止和监视资源。- 群集信息数据库 (CIB)
Pacemaker 在每个节点上维护群集信息数据库 (CIB)。CIB 是群集配置的 XML 表示形式(包括群集选项、节点、资源、约束及其相互之间的关系)。CIB 也反映当前群集状态。每个群集节点包含一个在整个群集中同步的 CIB 复本。
pacemaker-based
守护程序会处理群集配置和状态的读取与写入。- 指定协调器 (DC)
DC 是从群集中的所有节点选择出来的。如果当前没有 DC,或者当前的 DC 出于任何原因退出群集,则就会按此方式选择 DC。DC 是群集中唯一可以决定需要在整个群集执行更改(例如节点屏蔽或资源移动)的实体。所有其他节点都从当前 DC 获取他们的配置和资源分配信息。
- 策略引擎
策略引擎在每个节点上运行,但 DC 上的引擎是活动的引擎。该引擎作为
pacemaker-schedulerd
守护程序实现。需要群集转换时,pacemaker-schedulerd
会根据当前状态和配置,计算群集的下一种预期状态。它会确定需要安排哪些操作来实现下一种状态。
1.5.1.3 资源和资源代理 #
在高可用性群集中,需要高度可用的服务称为“资源”。资源代理 (RA) 是用于启动、停止和监视群集资源的脚本。
1.5.2 处理流程 #
pacemakerd
守护程序将会启动并监视其他所有相关的守护程序。用于协调所有操作的守护程序 pacemaker-controld
在每个群集节点上都有一个实例。Pacemaker 会选出其中一个实例作为主要实例,以此集中做出所有群集决策。如果选出的 pacemaker-controld
守护程序出现故障,则会建立一个新的主要守护程序。
群集中执行的许多操作都将导致整个群集的更改。这些操作包括添加或删除群集资源、更改资源约束等等。了解执行这样的操作时群集中会发生的状况是很重要的。
例如,假设您要添加一个群集 IP 地址资源。为此,可以使用 crm 外壳或 Web 界面来修改 CIB。不需要在 DC 上执行操作。您可以在群集中的任何节点上使用以上任一工具,更改将会中继到 DC。然后 DC 将把此 CIB 更改复制到所有群集节点。
随后,pacemaker-schedulerd
将会根据 CIB 中的信息,计算群集的理想状态以及如何实现该状态。它会将指令列表传递给 DC。DC 通过消息交换/基础结构层发送命令,这些命令将由其他节点上的 pacemaker-controld
对等体接收。每个对等体使用自身的本地资源代理执行器(作为 pacemaker-execd
实现)来执行资源修改。pacemaker-execd
不是群集感知的,它直接与资源代理交互。
所有同级节点将操作的结果报告给 DC。一旦 DC 得出所有必需操作在群集中都已成功执行的结论,群集将回到空闲状态并等待后续事件。如果有任何操作未按计划执行,则会再次调用 pacemaker-schedulerd
,CIB 中将记录新信息。
在某些情况下,可能需要关闭节点以保护共享数据或完成资源恢复。在 Pacemaker 群集中,节点级别屏蔽的实现为 STONITH。为此,Pacemaker 随附了一个屏蔽子系统 pacemaker-fenced
。必须将 STONITH 设备配置为群集资源(使用特定屏蔽代理的资源),因为这样便能监视屏蔽设备。当客户端检测到故障时,会将一个请求发送到 pacemaker-fenced
,后者再执行屏蔽代理来关闭节点。