跳到内容跳到页面导航:上一页 [access key p]/下一页 [access key n]
documentation.suse.com / SUSE Linux Enterprise High Availability Extension 文档 / Quick Start Guides / Geo 群集快速入门
SUSE Linux Enterprise High Availability Extension 15 SP4

Geo 群集快速入门

出版日期:2023 年 12 月 11 日

Geo 群集可保护全局分布式数据中心范围的工作负载。本文档会指导您使用 crm 外壳提供的 Geo 引导脚本完成 Geo 群集的基本设置。

作者: Tanja RothThomas Schraitle

1 概念概述

基于 SUSE® Linux Enterprise High Availability Extension 的 Geo 群集可视为覆盖群集,其中每个群集站点对应传统群集中的一个群集节点。覆盖群集由投票间群集票据管理器(以下简称“投票间”)管理。Geo 群集中的各方都会运行一个服务,即 boothd。它连接到其余站点上运行的投票间守护程序,并交换连接性细节。投票间依靠称为“票据”的群集对象来确保群集资源在各站点之间的高度可用性。票据授予在特定群集站点上运行某些资源的权限。投票间可保证每个票据一次只会授予给一个站点。

如果两个投票间实例之间的通讯断开,则可能是因为群集站点之间的网络发生故障其中一个群集站点中断。在此情况下,您需要使用一个额外的实例(第三个群集站点或仲裁方)来就各决策(例如在站点间进行资源的故障转移)达成一致意见。仲裁方是一台以特殊模式运行投票间实例的计算机(不属于群集)。每个 Geo 群集都可以有一个或多个仲裁方。

双站点群集 - 2x2 个节点 + 仲裁方(可选)
图 1︰ 双站点群集 - 2x2 个节点 + 仲裁方(可选)

也可以运行仲裁方的双站点 Geo 群集。在此情况下,Geo 群集管理员需要手动管理票据。如果同时将一个票据授予多个站点,投票间会显示一条警告。

有关用于 Geo 群集的概念、组件和票据管理的更多细节,请参见管理指南

2 使用情形

下面,我们将会设置一个包含两个群集站点和一个仲裁方的基本 Geo 群集:

  • 我们假设群集站点名为 amsterdamberlin

  • 我们假设每个站点分别包含两个节点。节点 alicebob 属于群集 amsterdam。节点 charliedoro 属于群集 berlin

  • 站点 amsterdam 将分配到以下虚拟 IP 地址:192.168.201.100

  • 站点 berlin 将分配到以下虚拟 IP 地址:192.168.202.100

  • 我们假设仲裁方的 IP 地址为 192.168.203.100

继续操作前,请确保已满足以下要求:

要求
两个现有的群集

您至少拥有两个要合并到 Geo 群集中的现有群集(如果需要先设置两个群集,请按照安装和设置快速入门中的指导操作。)

有意义的群集名称

每个群集都有一个有意义的名称,该名称可反映其位置,定义于 /etc/corosync/corosync.conf 中。

仲裁方

您已安装不属于任何现有群集且将用作仲裁方的第三台计算机。

有关各项的详细要求,另请参见第 3 节 “要求”

3 要求

将加入群集的所有计算机(群集节点和仲裁方)上都至少需安装以下模块和扩展:

  • Basesystem Module 15 SP4

  • Server Applications Module 15 SP4

  • SUSE Linux Enterprise High Availability Extension 15 SP4

安装计算机时,请选择 HA GEO 节点作为system role。如此将安装最小系统,这种情况下,默认会安装软件集 GEO Clustering for High Availability (ha_geo) 中的软件包。

网络需求
  • 要用于每个群集站点的虚拟 IP 在 Geo 群集中必须可访问。

  • 必须可以通过每个投票间实例上的一个 UDP 和 TCP 端口访问站点。这意味着,必须相应地配置通讯双方之间的所有防火墙和 IPsec 隧道。

  • 可能需要做出其他有关打开更多端口的设置决策(例如,为 DRBD 或数据库复制打开端口)。

其他要求和建议
  • 所有站点上的所有群集节点应同步到群集外部的 NTP 服务器。有关详细信息,请参见 《SUSE Linux Enterprise Server 15 SP4 管理指南》

    如果节点未同步,将难以分析日志文件和群集报告。

  • 在 Geo 群集中使用奇数数量的站点。这样可确保在网络连接断开时仍存有大部分站点(从而避免出现节点分裂情形)。如果群集站点的数量为偶数,请使用一个仲裁方来处理票据的自动故障转移。如果您不使用仲裁方,则需要手动处理票据故障转移。

  • 每个站点上的群集都有一个有意义的名称,例如 amsterdamberlin

    已在相应的 /etc/corosync/corosync.conf 文件中定义每个站点的群集名称。

    totem {
        [...]
        cluster_name: amsterdam
        }

    使用下面的 crmsh 命令来更改名称:

    root # crm cluster rename NEW_NAME

    停止 pacemaker 服务然后再将其启动,以使更改生效:

    root # crm cluster restart
  • 不支持在一个群集中采用混合体系结构。但是,对于 Geo 群集而言,Geo 群集的每个成员(群集站点或仲裁方)可以采用不同的体系结构。例如,您可以运行一个包含三个成员(两个群集站点和一个仲裁方)的 Geo 群集,其中的一个群集站点在 IBM Z 上运行,另一个群集站点在 x86 上运行,仲裁方在 POWER 上运行。

4 Geo 引导脚本概述

  • 使用 crm cluster geo_init 可将一个群集变为 Geo 群集的第一个站点。该脚本会获取某些参数(例如群集的名称、仲裁方,以及一个或多个票据)并基于它们创建 /etc/booth/booth.conf。它会将投票间配置复制到当前群集站点上的所有节点。它还会为当前群集站点上的投票间配置所需的群集资源。

    有关详细信息,请参见第 6 节 “设置 Geo 群集的第一个站点”

  • 使用 crm cluster geo_join 可将当前群集添加到现有的 Geo 群集中。该脚本会从现有群集站点复制投票间配置,并将其写入到当前群集站点上所有节点的 /etc/booth/booth.conf 中。它还会为当前群集站点上的投票间配置所需的群集资源。

    有关详细信息,请参见第 7 节 “向 Geo 群集添加另一个站点”

  • 使用 crm cluster geo_init_arbitrator 可将当前计算机变为 Geo 群集的仲裁方。该脚本会从现有群集站点复制投票间配置,并将其写入 /etc/booth/booth.conf

    有关详细信息,请参见第 8 节 “添加仲裁方”

所有引导脚本都会记录到 /var/log/crmsh/crmsh.log 中。如需引导过程的任何细节,请查看日志文件。在引导过程中设置的任何选项都可在稍后加以修改(通过修改投票间设置、修改资源等)。有关详细信息,请参见管理指南

5 安装

借助 SUSE Linux Enterprise High Availability Extension 可不受距离限制地使用高可用性群集。

要设置 Geo 群集,您需要以下安装软件集中所包含的软件包:

  • High Availability(在命令行上以 sles_ha 指定)

  • Geo Clustering for High Availability(在命令行上以 ha_geo 指定)

仅当您已在 SUSE Customer Center(或本地注册服务器)中注册了系统,并且已添加相应的模块或安装媒体作为扩展时,这两个软件集才可用。有关如何安装扩展的信息,请参见 《SUSE Linux Enterprise Server 15 SP4 部署指南》

要通过命令行安装这两个软件集中的软件包,请使用 Zypper:

root # zypper install -t pattern ha_sles ha_geo
重要
重要:在所有参与节点上安装软件包

高可用性和 Geo 群集所需的软件包会自动复制到群集节点。

  • 请在要加入地域群集的所有计算机上安装 SUSE Linux Enterprise Server 15 SP4,以及 ha_slesha_geo 软件集。

  • 您不必在要加入群集的所有计算机上手动安装这些软件包,而应使用 AutoYaST 克隆现有节点。有关详细信息,请参见第 3.2 节 “使用 AutoYaST 进行批量安装和部署”

6 设置 Geo 群集的第一个站点

使用 crm cluster geo_init 命令可将一个现有群集变为 Geo 群集的第一个站点。

过程 1︰ 使用 crm cluster geo_init 设置第一个站点 (amsterdam)
  1. 为每个群集站点定义一个虚拟 IP,以便访问该站点。在此,我们假设使用 192.168.201.100192.168.202.100。您并不需要将虚拟 IP 配置为群集资源。此工作将由引导脚本完成。

  2. 至少定义一个票据的名称,该票据用于授予在群集站点上运行特定资源的权限。使用一个有意义的名称来反映将依赖于该票据的资源,例如 ticket-nfs。引导脚本只需要票据名称,您可以稍后再按第 10 节 “后续步骤”中所述定义其余的细节(资源的票据依赖项)。

  3. 登录现有群集的节点(例如,群集 amsterdam 的节点 alice)。

  4. 运行 crm cluster geo_init。例如,使用以下选项:

    root # crm cluster geo_init \
      --clusters1 "amsterdam=192.168.201.100 berlin=192.168.202.100" \
      --tickets2 ticket-nfs \
      --arbitrator3 192.168.203.100

    1

    群集站点的名称(定义于 /etc/corosync/corosync.conf 中)和您想要为每个群集站点使用的虚拟 IP 地址。在本例中,我们有两个群集站点(amsterdamberlin),每个站点各有一个虚拟 IP 地址。

    2

    一个或多个票据的名称。

    3

    不属于群集的计算机的主机名或 IP 地址。

该引导脚本会创建投票间配置文件,并在群集站点间同步该文件。它还会创建投票间所需的的基本群集资源。执行过程 1步骤 4 将创建以下投票间配置和群集资源:

例 1︰ crm cluster geo_init 创建的投票间配置
# The booth configuration file is "/etc/booth/booth.conf". You need to
# prepare the same booth configuration file on each arbitrator and
# each node in the cluster sites where the booth daemon can be launched.

# "transport" means which transport layer booth daemon will use.
# Currently only "UDP" is supported.
transport="UDP"
port="9929"

arbitrator="192.168.203.100"
site="192.168.201.100"
site="192.168.202.100"
authfile="/etc/booth/authkey"
ticket="ticket-nfs"
expire="600"
例 2︰ crm cluster geo_init 创建的群集资源
primitive1 booth-ip IPaddr2 \
  params rule #cluster-name eq amsterdam ip=192.168.201.100 \
  params rule #cluster-name eq berlin ip=192.168.202.100 \
primitive2 booth-site ocf:pacemaker:booth-site \
  meta resource-stickiness=INFINITY \
  params config=booth \
  op monitor interval=10s
group3 g-booth booth-ip booth-site \
meta target-role=Stopped4

1

每个群集站点的虚拟 IP 地址。必须为投票间守护程序提供该虚拟 IP 地址,因为其需要每个群集站点上都有永久的 IP 地址。

2

投票间守护程序的原始资源。它会与其余群集站点上的投票间守护程序通讯。该守护程序可以在站点的任何节点上启动。为了使资源分布在同一节点上(如果可能),resource-stickiness 设置为 INFINITY

3

两个原始资源的群集资源组。通过这种配置,每个投票间守护程序都将在各自的 IP 地址处可用,独立于运行守护程序的节点。

4

该群集资源组默认不会启动。校验群集资源的配置(并添加完成设置所需的资源)后,您需要启动该资源组。有关详细信息,请参见 完成 Geo 群集设置所需的步骤

7 向 Geo 群集添加另一个站点

初始化 Geo 群集的第一个站点后,请按过程 2 中所述使用 crm cluster geo_join 添加第二个群集。该脚本需要通过 SSH 访问已配置的群集站点,并且会将当前的群集添加到 Geo 群集。

过程 2︰ 使用 crm cluster geo_join 添加第二个站点 (berlin)
  1. 登录要添加的群集站点的某个节点(例如,群集 berlin 的节点 charlie)。

  2. 运行 crm cluster geo_join 命令。例如:

    root # crm cluster geo_join \
      --cluster-node1 192.168.201.100\
      --clusters2 "amsterdam=192.168.201.100 berlin=192.168.202.100"

    1

    指定要从何处复制投票间配置。请使用已配置的 Geo 群集站点中某节点的 IP 地址或主机名。也可以使用现有群集站点的虚拟 IP 地址(如本示例中所示)。或者,使用已为 Geo 群集配置的仲裁方的 IP 地址或主机名。

    2

    群集站点的名称(定义于 /etc/corosync/corosync.conf 中)和您想要为每个群集站点使用的虚拟 IP 地址。在本例中,我们有两个群集站点(amsterdamberlin),每个站点各有一个虚拟 IP 地址。

crm cluster geo_join 命令会从 1 复制投票间配置,请参见例 1。此外,它还会创建投票间所需的群集资源(请参见例 2)。

8 添加仲裁方

使用 crm cluster geo_initcrm cluster geo_join 设置 Geo 群集的所有站点后,使用 crm cluster geo_init_arbitrator 设置仲裁方。

过程 3︰ 使用 crm cluster geo_init_arbitrator 设置仲裁方
  1. 登录要用作仲裁方的计算机。

  2. 运行以下命令。例如:

    root # crm cluster geo_init_arbitrator --cluster-node1 192.168.201.100

    1

    指定要从何处复制投票间配置。请使用已配置的 Geo 群集站点中某节点的 IP 地址或主机名。或者,使用现有群集站点的虚拟 IP 地址(如本示例中所示)。

crm cluster geo_init_arbitrator 脚本会从 1 复制投票间配置,请参见例 1。它还会在仲裁方上启用并启动投票间服务。因此,当群集站点上也在运行投票间服务时,仲裁方便可以与这些群集站点上的投票间实例通讯。

9 监视群集站点

要查看您已在引导过程中创建的群集站点及资源与票据,请使用 Hawk2。通过 Hawk2 Web 界面,您可以监视和管理多个(不相关的)群集和 Geo 群集。

先决条件
  • 要通过 Hawk4 的仪表板监视的所有群集必须运行 SUSE Linux Enterprise High Availability Extension 15 SP2

  • 如果您之前未在每个群集节点上用自己的证书(或官方证书颁发机构签名的证书)替换 Hawk2 的自我签名证书,请执行以下操作:在每个群集的每个节点上至少登录 Hawk2 一次。验证证书(或在浏览器中添加例外以绕过警告)。否则,Hawk2 将无法连接到群集。

过程 4︰ 使用 Hawk2 仪表板
  1. 启动 Web 浏览器并输入第一个群集站点 amsterdam 的虚拟 IP。

    https://192.168.201.100:7630/

    或者,使用 alicebob 的 IP 地址或主机名。如果您已使用引导脚本设置两个节点,则 hawk 服务在这两个节点上应当都会运行。

  2. 登录到 Hawk2 Web 界面。

  3. 在左侧导航栏中,选择仪表板

    Hawk2 会显示当前群集站点的资源和节点的概述。此外,它还会显示已为 Geo 群集配置的所有票据。如需有关此视图中所用图标的信息,请单击图例

    包含一个群集站点 (amsterdam) 的 Hawk2 仪表板
    图 2︰ 包含一个群集站点 (amsterdam) 的 Hawk2 仪表板
  4. 要添加第二个群集站点的仪表板,请单击添加群集

    1. 输入用于在仪表板中标识该群集的群集名称。在本例中为 berlin

    2. 输入其中一个群集节点(在本例中为 charliedoro)的完全限定的主机名。

    3. 单击添加。Hawk2 会为新添加的群集站点显示另一个选项卡,其中会列出该群集站点的节点和资源的概述。

      包含两个群集站点的 Hawk2 仪表板
      图 3︰ 包含两个群集站点的 Hawk2 仪表板
  5. 要查看群集站点的更多细节或管理群集站点,请切换到站点的选项卡并单击锁链图标。

    Hawk2 会在新的浏览器窗口或选项卡中打开此站点的状态视图。在此视图中,您可以管理 Geo 群集的这部分内容。

10 后续步骤

使用 Geo 群集引导脚本,您可以快速地设置可用于测试用途的基本 Geo 群集。不过,要将创建的 Geo 群集迁移到正常工作的可用于生产环境的 Geo 群集,则需执行更多步骤(请参见完成 Geo 群集设置所需的步骤)。

完成 Geo 群集设置所需的步骤
在群集站点上启动投票间服务

引导过程完成后,仲裁方投票间服务还不能与群集站点上的投票间服务通讯,因为这些服务默认不会启动。

每个群集站点的投票间服务都由投票间资源组 g-booth 管理(请参见例 2 “crm cluster geo_init 创建的群集资源”)。要为每个站点启动一个投票间服务实例,请在每个群集站点上启动相应的投票间资源组。这样可让所有投票间实例互相通讯。

配置票据依赖项和顺序约束

要使资源依赖您已在 Geo 群集引导过程中创建的票据,请配置约束。请为每个约束设置 loss-policy,它用于定义当从群集站点撤消票据时相应资源应发生的情况。

有关详细信息,请参见第 6 章 “配置群集资源和约束

在开始时向站点授予票据

在投票间可以管理 Geo 群集中的特定票据前,您首先需要手动将该票据授予给站点。您可以使用投票间客户端命令行工具或 Hawk2 授予票据。

有关细节,请参见第 8 章 “管理 Geo 群集

引导脚本会在两个群集站点上创建相同的投票间资源,并在所有站点(包括仲裁方)上创建相同的投票间配置文件。如果您扩展 Geo 群集设置(以便迁移到生产环境),可能需要调整投票间配置,并更改与投票间有关的群集资源的配置。之后,您需要将更改同步到 Geo 群集的其余站点才能使其生效。

注意
注意:跨群集站点同步更改

11 更多信息

12 法律声明

版权所有 © 2006– 2023 SUSE LLC 和贡献者。保留所有权利。

根据 GNU 自由文档许可 (GNU Free Documentation License) 版本 1.2 或(根据您的选择)版本 1.3 中的条款,在此授予您复制、分发和/或修改本文档的权限;本版权声明和许可附带不可变部分。许可版本 1.2 的副本包含在题为GNU Free Documentation License的部分。

有关 SUSE 商标,请参见 http://www.suse.com/company/legal/。所有其他第三方商标分别为相应所有者的财产。商标符号(®、™ 等)代表 SUSE 及其关联公司的商标。星号 (*) 代表第三方商标。

本指南力求涵盖所有细节,但这不能确保本指南准确无误。SUSE LLC 及其关联公司、作者和译者对于可能出现的错误或由此造成的后果皆不承担责任。