SUSE Linux Enterprise High Availability Extension 15

Geo 群集快速入门

SUSE Linux Enterprise High Availability Extension 15

使用 Geo 群集,您可以拥有多个地理位置分散的站点并且在每个站点部署一个本地群集。这些群集之间的故障转移由更高级别的实体进行协调,即投票间群集票据管理器。本文档会指导您使用 ha-cluster-bootstrap 包提供的 Geo 引导脚本完成 Geo 群集的基本设置。

作者: Tanja RothThomas Schraitle
出版日期:July 11, 2018

1 概念概述

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

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

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

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

有关用于 Geo 群集的概念、组件和票据管理的更多细节,请参见Book “Geo Clustering Guide”

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 要求

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

  • Base System Module 15

  • Server Applications Module 15

  • SUSE Linux Enterprise High Availability Extension 15

安装计算机时,请选择系统角色 HA GEO 节点。如此将安装最小系统,这种情况下,默认会安装模式 Geo Clustering for High Availability (ha_geo) 中的包。

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

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

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

其他要求和建议
  • 所有站点上的所有群集节点应同步到群集外部的 NTP 服务器。有关更多信息,请参见 http://www.suse.com/documentation/ 上的《SUSE Linux Enterprise Server 15 管理指南》。请参见“使用 NTP 同步时间”一章。

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

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

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

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

    totem {
        [...]
        cluster_name: amsterdam
        }

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

    root # crm cluster rename NEW_NAME

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

    root # systemctl stop pacemaker
    root # systemctl start pacemaker

4 Geo 引导脚本概述

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

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

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

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

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

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

所有引导脚本都会记录到 /var/log/ha-cluster-bootstrap.log 中。如需引导过程的任何细节,请查看日志文件。在引导过程中设置的任何选项都可在稍后加以修改(通过修改投票间设置、修改资源等)。有关细节,请参见《Geo Clustering Guide》(Geo 群集指南)。https://www.suse.com/documentation 上提供了该文档。

5 安装

安装 Geo Clustering for SUSE Linux Enterprise High Availability Extension 后,即可不受距离限制使用高可用性群集。

要设置 Geo 群集,您需要包含在以下安装模式中的包:

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

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

仅当您已在 SUSE Customer Center(或本地注册服务器)中注册了系统,并且已添加相应的模块或安装媒体作为扩展时,这两个模式才可用。有关如何安装扩展的信息,请参见 http://www.suse.com/documentation/sles 上的《SUSE Linux Enterprise 15 部署指南》。请参考“安装模块、扩展和第三方外接式附件”一章。

要通过命令行从这两个模式安装包,请使用 Zypper:

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

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

  • 请在将加入 Geo 群集的所有计算机上安装 SUSE Linux Enterprise Server 15,以及 ha_slesha_geo 模式。

  • 您不必在要加入群集的所有计算机上手动安装这些包,而应使用 AutoYaST 克隆现有节点。有关详细信息,请参见Book “管理指南”, Chapter 3 “安装 High Availability Extension”, Section 3.2 “使用 AutoYaST 进行批量安装和部署”

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

使用 ha-cluster-geo-init 脚本可将现有群集变为 Geo 群集的第一个站点。

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

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

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

  4. 运行 ha-cluster-geo-init。例如,使用以下选项:

    root # ha-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 地址。

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

例 1︰ ha-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︰ ha-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 中所述使用 ha-cluster-geo-join 添加第二个群集。该脚本需要通过 SSH 访问已配置的群集站点,并且会将当前的群集添加到 Geo 群集。

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

  2. 运行 ha-cluster-geo-join 命令。例如:

    root # ha-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 地址。

ha-cluster-geo-join 脚本会从 1 复制投票间配置,请参见例 1。此外,它还会创建投票间所需的群集资源(请参见例 2)。

8 添加仲裁方

使用 ha-cluster-geo-initha-cluster-geo-join 设置 Geo 群集的所有站点后,请使用 ha-cluster-geo-init-arbitrator 设置仲裁方。

过程 3︰ 使用 ha-cluster-geo-init-arbitrator 设置仲裁方
  1. 登录要用作仲裁方的计算机。

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

    root # ha-cluster-geo-init-arbitrator --cluster-node1 192.168.201.100

    1

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

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

9 监视群集站点

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

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

  • 如果您之前未在每个群集节点上用自己的证书(或官方证书颁发机构签名的证书)替换 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 “ha-cluster-geo-init 创建的群集资源”)。要为每个站点启动一个投票间服务实例,请在每个群集站点上启动相应的投票间资源组。这样可让所有投票间实例互相通讯。

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

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

有关细节,请参见Book “Geo Clustering Guide”, Chapter 6 “Configuring Cluster Resources and Constraints”

在开始时向站点授予票据

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

有关细节,请参见Book “Geo Clustering Guide”, Chapter 8 “Managing Geo Clusters”

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

注意
注意:跨群集站点同步更改
  • 要将投票间配置中的更改同步到所有群集站点(包括仲裁方),请使用 Csync2。有关详细信息,请参见Book “Geo Clustering Guide”, Chapter 5 “Synchronizing Configuration Files Across All Sites and Arbitrators”

  • CIB(群集信息数据库)不会跨 Geo 群集的群集站点自动同步。这意味着需要将所有群集站点上必需的资源配置中的所有更改手动传输到其余站点。要执行此操作,请标记相应资源,从当前 CIB 导出这些资源并将其导入到其余群集站点上的 CIB。有关细节,请参见Book “Geo Clustering Guide”, Chapter 6 “Configuring Cluster Resources and Constraints”, Section 6.4 “Transferring the Resource Configuration to Other Cluster Sites”

11 更多信息

12 法律声明

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

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

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

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

打印此页