什么是集群?

集群是一组计算机共同完成一项任务。
执行哪个任务以及执行该任务的方式因集群而异。
本博文和本系列即将发布的博文涵盖了两种不同类型的集群。

1. 高可用集群:

高可用性集群(也称为 HA 集群或者故障转移集群)的目标是尽可能保持运行服务的可用性。
这主要是通过让高可用性集群的节点相互监视故障来实现的,并将服务迁移到在服务或者节点出现故障时仍被视为“健康”的节点。
高可用性集群可以分为两个子集:

  • 双活高可用性集群,其中一个服务在多个节点上运行,从而缩短故障转移时间。
  • 主动-被动高可用性集群,其中一项服务一次仅在一个节点上运行。

高可用性集群通常用于支持企业中的关键任务服务。
实现高可用性集群的软件示例有 Pacemaker 和 Red Hat High Availability Add-On。

2. 存储集群:

在存储集群中,所有成员提供一个集群文件系统,可以被不同的服务器系统访问。
提供的文件系统可用于同时读取和写入数据。
这对于提供应用程序数据(如 Web 服务器内容)的高可用性很有用。
不需要相同数据的多个冗余副本。
集群文件系统的一个示例是 GFS2,它由 Red Hat Resilient Storage Add-On 提供。

要求

在使用 Red Hat High Availability Add-on 部署高可用性集群之前,了解集群配置的要求和可支持性非常重要。
某些集群配置需要进行架构审查才能获得 Red Hat 的支持。
架构审查流程通常需要将有关集群的相关数据(例如集群配置、网络架构和防护配置)传输给 Red Hat 支持。
如果需要,支持代表可能会请求其他数据。
然后红帽支持将决定红帽是否可以支持集群配置。

在部署基于红帽高可用性添加组件的高可用性集群之前,应考虑一些重要的要求和建议。

节点数

红帽支持最多 16 个节点的集群。
任何具有八个或者更多节点的集群都需要接受架构审查,以确定 Red Hat 是否支持集群设置。

仅由两个节点组成的集群是一种特殊情况。
尽管在大多数情况下架构审查不是强制性的,但强烈建议在生产中部署双节点集群之前将架构提交给红帽进行审查。

单站点、多站点和延伸集群

红帽完全支持单站点集群。
这是一个集群设置,其中所有集群成员都位于同一物理位置,通过局域网连接。

多站点集群由两个集群组成,一个是活动集群,一个是用于灾难恢复。
必须手动管理多站点集群的故障转移。
Red Hat Enterprise Linux 7 High Availability Add-on 支持多站点集群。

延伸集群,也称为地理集群,是延伸到多个物理位置的集群。
延伸集群必须通过红帽支持的架构审查流程。
红帽支持可能会选择不支持特定配置,或者对为集群提供的支持级别和类型施加限制。
通常,Red Hat 需要少于 2 毫秒的网络延迟才能将延伸集群视为可支持。
如果使用的是 Red Hat Enterprise Linux 7 High Availability Add-on 7 之前的版本,那么在使用四个或者更多集群节点时,延伸集群需要使用仲裁磁盘。

Fencing硬件

Fencing是一种机制,可确保出现故障的集群节点不会导致损坏,以便其资源可以安全地恢复到集群中的其他位置。
这可以通过重启节点或者禁用与存储级别的通信来完成。
集群中的所有节点都需要防护,通过电源防护、存储防护或者两者的组合。
在部署高可用性基础架构之前,请确保使用支持的硬件。
如果集群将使用 ILO 或者 DRAC 等集成防护设备,则作为集群节点的系统必须在收到关闭信号时立即关闭,而不是启动干净关闭。

虚拟化和集群

Red Hat High Availability Add-on 支持虚拟机作为集群资源和集群节点。

当作为集群资源运行时,虚拟主机参与集群,而虚拟机是可以在集群节点之间移动的资源。

当作为集群节点运行时,主机上运行的虚拟机是集群的成员并运行资源。
提供了特殊的防护代理,因此这些集群节点可以相互防护,无论是在基于 RHEL 7 libvirt 的系统、Red Hat Enterprise Virtualization 还是其他 VM 管理程序主机上运行。
在这种情况下,物理主机是该主机上运行的所有基于虚拟机的集群节点的单点故障。
如果物理主机崩溃,它会导致在其上运行的所有集群节点虚拟机崩溃。

网络

corosync 组件需要单播或者多播以及 IGMP 以用于专用网络上的默认网络通信。
在 RHEL7 中,corosync/pacemaker 集群默认使用单播。
对于公网,浮动IP地址采用免费ARP。
这必须得到网络交换机的支持。

集群上运行的服务使用的任何网络端口都必须在公共网络上可用。
必须在专用网络上打开以下端口:

网络端口组件
5405/UDPcorosync
2224/TCPpcsd
3121/TCPpacemaker remote
21064/TCPdlm (与 GFS2 资源一起使用)

此外,端口 5404/UDP 可能被 corosync 用作某些集群通信消息的来源。

SELinux 支持

在集群节点上使用目标策略时,完全支持在强制模式下使用 SELinux。

RHEL 7 高可用性集群架构
查看更多教程 https://on  itroad.com

架构概览

在五节点 HA 集群的基础架构中,不同组件作用如下:

硬件作用
Cluster Nodes这些是将运行集群软件和服务的机器。
Public Network该网络用于客户端和集群上运行的服务之间的通信。服务通常有一个浮动IP地址,这意味着IP地址可以分配给当前运行相应服务的任何节点。
Private Network该网络专门用于集群通信以及关键集群硬件(例如联网电源开关)的通信。
Networked Power Switch联网电源开关可用于远程控制集群节点的电源。这是实施本类稍后所述的电源围列的可能方法之一。远程管理卡(例如 ILO 或者 DRAC)也可用于此目的。
Fibre Channel Switch示例中的所有节点都连接到同一个共享存储。尽管光纤通道已广泛用于此目的,但另一种选择是使用 iSCSI 或者 FCoE 的单独以太网网络。

高可用性集群的目标是什么?

高可用性集群的主要目标是通过消除瓶颈和单点故障使服务尽可能可用。
这是一种与尽可能保持单台机器正常运行时间不同的策略。
运行服务的服务器的正常运行时间对消费者来说并不重要,但服务可用性很重要。
高可用性集群使用各种概念和技术,它们允许服务完整性和可用性:

资源和资源组

在集群术语中,基本的工作单元称为资源。
单个 IP 地址、文件系统或者数据库都将被视为资源。
通常,定义这些资源之间的关系以创建面向用户的服务。
定义这些关系的最常见方法之一是将一组资源组合成一个组。
这指定组中的所有资源需要在同一节点上一起运行并建立固定(线性)启动和停止顺序。
例如,为了让集群提供 Web 服务器服务,Web 服务器守护程序、服务器应该共享的数据以及守护程序将侦听的 IP 地址都需要在同一集群节点上可用。

故障转移

当集群注意到最初运行服务的节点没有响应时,高可用性集群尝试通过将服务迁移到另一个节点来保持服务可用;这称为故障转移。

Fencing

Fencing是一种机制,可确保出现故障的集群节点不会导致损坏,以便其资源可以安全地恢复到集群中的其他位置。
这是必要的,因为我们不能假设无法访问的节点实际上是关闭的。
防护通常是通过关闭节点电源来完成的,因为死节点显然无法做任何事情。
在其他情况下,将使用操作组合将节点从网络(阻止新工作到达)或者存储(阻止节点写入共享存储)中切断。

共享存储

大多数高可用性集群还需要一种可以从多个节点访问的共享存储或者存储形式。
共享存储向集群中的多个节点提供相同的应用程序数据。
运行在集群上的应用程序可以顺序或者同时访问数据。
高可用性集群需要确保共享存储上的数据完整性。
数据完整性由围列保证。

Quorum

Quorum 描述了维护集群完整性所需的投票系统。
每个集群成员都有指定的投票数;默认情况下,一票。
根据集群配置,当存在一半或者一半以上的选票时,集群将获得仲裁。
无法与其他集群成员通信且无法发送其选票的集群成员被大多数按预期运行的集群成员隔离。
群集通常需要仲裁才能运行。
默认情况下,如果集群丢失或者无法建立仲裁。
不启动任何资源或者资源组,停止正在运行的资源组以确保数据完整性。

软件

为了使用 Red Hat High Availability Add-on 提供集群服务,集群节点上需要多个软件组件。
下面是该软件及其功能的概述。

corosync

这是 Pacemaker 用于处理集群节点之间通信的框架。
Corosync 也是 Pacemaker 的成员资格和法定人数数据来源。

pcs

pcs RPM 包包含两个集群配置工具:

  • pcs 命令提供命令行界面来创建、配置和控制 Pacemaker/Corosync 集群的各个方面。
  • pcsd 服务提供集群配置同步和 Web 前端来创建和配置 Pacemaker/Corosync 集群。

pacemaker

这是负责所有与集群相关的活动的组件,例如监控集群成员、管理服务和资源以及保护集群成员。
起搏器 RPM 包包含三个重要的工具:

  • 集群信息库 (CIB) :集群信息库以 XML 格式包含有关集群和集群资源的配置和状态信息。集群中的一个集群节点由 Pacemaker 选出作为指定协调器 (DC),并存储集群和资源状态以及与所有其他活动集群节点同步的集群配置。
  • 策略引擎 (PEngine):策略引擎使用集群信息库 (CIB) 的内容来计算集群的理想状态以及如何达到该状态。
  • 集群资源管理守护进程 (CRMd):集群资源管理守护进程协调资源启动、停止和状态查询操作,并将其发送到在每个集群节点上运行的本地资源管理守护进程 (LRMd)。 LRMd 将从 CRMd 接收到的操作传递给资源代理。
  • 射击头部中的其他节点(STONITH):STONITH 是负责处理围列请求并将请求的操作转发到 CIB 中配置的围列设备的设施。
日期:2020-09-17 00:14:48 来源:oir作者:oir