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

Geo 群集快速入门

出版日期:2025 年 3 月 20 日

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

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

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

有关 SUSE 商标,请参见 https://www.suse.com/company/legal/。所有第三方商标均是其各自所有者的财产。商标符号(®、™ 等)代表 SUSE 及其关联公司的商标。星号 (*) 代表第三方商标。

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

1 概念概述

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

如果两个投票间实例之间的通讯断开,则可能是因为群集站点之间的网络发生故障其中一个群集站点中断。在此情况下,您需要使用一个额外的实例(第三个群集站点或 arbitrator)来就各决策(例如在站点间进行资源的故障转移)达成一致意见。仲裁方是一台以特殊模式运行投票间实例的计算机(不属于群集)。每个 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 群集的现有群集(如果需要先设置两个群集,请按照安装和设置快速入门中的说明操作)。

有意义的群集名称

每个群集都有一个有意义的名称来反映其位置,例如:amsterdamberlin。群集名称在 /etc/corosync/corosync.conf 中定义。

仲裁方

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

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

3 要求

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

  • Basesystem Module 15 SP6

  • Server Applications Module 15 SP6

  • SUSE Linux Enterprise High Availability 15 SP6

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

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

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

  • 其他设置决定可能需要打开更多端口(例如,为 DRBD 或进行数据库复制)。

其他要求和建议
  • 所有站点上的所有群集节点应同步到群集外部的 NTP 服务器。有关详细信息,请参见Administration Guide for SUSE Linux Enterprise Server 15 SP6

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

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

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

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

    totem {
        [...]
        cluster_name: amsterdam
        }

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

    # crm cluster rename NEW_NAME

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

    # crm cluster restart
  • 不支持在一个群集中采用混合体系结构。但是,对于 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 安装 High Availability 和 Geo 群集软件包

High AvailabilityGeo Clustering for High Availability 安装软件集中包含用于配置和管理 Geo 群集的软件包。只有在安装 SUSE Linux Enterprise High Availability 后,才能使用这些软件集。

在安装 SUSE Linux Enterprise Server 期间或之后,您可以注册到 SUSE Customer Center 中并安装 SUSE Linux Enterprise High Availability。有关详细信息,请参见 SUSE Linux Enterprise Server 的 Deployment Guide

过程 1︰ 安装 High Availability 和 Geo 群集软件集
  1. 从命令行安装 High Availability 和 Geo 群集软件集:

    # zypper install -t pattern ha_sles ha_geo
  2. 在要加入群集的所有计算机上安装 High Availability 和 Geo 群集软件集。

    注意
    注意:在所有节点上安装软件包

    如果要自动安装 SUSE Linux Enterprise Server 15 SP6 和 SUSE Linux Enterprise High Availability 15 SP6,请使用 AutoYaST 克隆现有节点。有关详细信息,请参见第 3.2 节 “使用 AutoYaST 进行批量安装和部署”

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

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

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

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

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

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

    # crm cluster geo_init \
      --clusters "amsterdam=192.168.201.100 berlin=192.168.202.100" \1
      --tickets ticket-nfs \2
      --arbitrator 192.168.203.1003

    1

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

    2

    一个或多个票据的名称。

    3

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

该引导脚本会创建投票间配置文件,并在群集站点间同步该文件。它还会创建投票间所需的的基本群集资源。执行过程 2步骤 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 群集的第一个站点后,请按crm cluster geo_join 中所述使用 过程 3 添加第二个群集。该脚本需要通过 SSH 访问已配置的群集站点,并且会将当前群集添加到 Geo 群集。

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

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

    # crm cluster geo_join \
      --cluster-node 192.168.201.100\1
      --clusters "amsterdam=192.168.201.100 berlin=192.168.202.100"2

    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 设置仲裁方。

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

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

    # crm cluster geo_init_arbitrator --cluster-node 192.168.201.1001

    1

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

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

9 监控群集站点

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

先决条件
  • 要通过 Hawk2 的仪表板监控的所有群集都必须运行 SUSE Linux Enterprise High Availability 15 SP6。

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

过程 5︰ 使用 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 群集设置所需的步骤
在群集站点上启动投票间服务

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

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

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

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

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

在开始时向站点授予票据

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

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

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

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

11 更多信息