Geo 群集快速入门 #
Geo 群集可保护全局分布式数据中心范围的工作负载。本文档会指导您使用 crm 外壳提供的 Geo 引导脚本完成 Geo 群集的基本设置。
1 概念概述 #
基于 SUSE® Linux Enterprise High Availability Extension 的 Geo 群集可视为“覆盖”群集,其中每个群集站点对应传统群集中的一个群集节点。覆盖群集由投票间群集票据管理器(以下简称“投票间”)管理。Geo 群集中的各方都会运行一个服务,即 boothd
。它连接到其余站点上运行的投票间守护程序,并交换连接性细节。投票间依靠称为“票据”的群集对象来确保群集资源在各站点之间的高度可用性。票据授予在特定群集站点上运行某些资源的权限。投票间可保证每个票据一次只会授予给一个站点。
如果两个投票间实例之间的通讯断开,则可能是因为群集站点之间的网络发生故障或其中一个群集站点中断。在此情况下,您需要使用一个额外的实例(第三个群集站点或仲裁方
)来就各决策(例如在站点间进行资源的故障转移)达成一致意见。仲裁方是一台以特殊模式运行投票间实例的计算机(不属于群集)。每个 Geo 群集都可以有一个或多个仲裁方。
也可以运行无仲裁方的双站点 Geo 群集。在此情况下,Geo 群集管理员需要手动管理票据。如果同时将一个票据授予多个站点,投票间会显示一条警告。
有关用于 Geo 群集的概念、组件和票据管理的更多细节,请参见管理指南。
2 使用情形 #
下面,我们将会设置一个包含两个群集站点和一个仲裁方的基本 Geo 群集:
我们假设群集站点名为
amsterdam
和berlin
。我们假设每个站点分别包含两个节点。节点
alice
和bob
属于群集amsterdam
。节点charlie
和doro
属于群集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 群集中使用奇数数量的站点。这样可确保在网络连接断开时仍存有大部分站点(从而避免出现节点分裂情形)。如果群集站点的数量为偶数,请使用一个仲裁方来处理票据的自动故障转移。如果您不使用仲裁方,则需要手动处理票据故障转移。
每个站点上的群集都有一个有意义的名称,例如
amsterdam
和berlin
。已在相应的
/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_sles
和ha_geo
软件集。您不必在要加入群集的所有计算机上手动安装这些软件包,而应使用 AutoYaST 克隆现有节点。有关详细信息,请参见第 3.2 节 “使用 AutoYaST 进行批量安装和部署”。
6 设置 Geo 群集的第一个站点 #
使用 crm cluster geo_init
命令可将一个现有群集变为 Geo 群集的第一个站点。
crm cluster geo_init
设置第一个站点 (amsterdam
) #为每个群集站点定义一个虚拟 IP,以便访问该站点。在此,我们假设使用
192.168.201.100
和192.168.202.100
。您并不需要将虚拟 IP 配置为群集资源。此工作将由引导脚本完成。至少定义一个票据的名称,该票据用于授予在群集站点上运行特定资源的权限。使用一个有意义的名称来反映将依赖于该票据的资源,例如
ticket-nfs
。引导脚本只需要票据名称,您可以稍后再按第 10 节 “后续步骤”中所述定义其余的细节(资源的票据依赖项)。登录现有群集的节点(例如,群集
amsterdam
的节点alice
)。运行
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 的步骤 4 将创建以下投票间配置和群集资源:
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"
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
每个群集站点的虚拟 IP 地址。必须为投票间守护程序提供该虚拟 IP 地址,因为其需要每个群集站点上都有永久的 IP 地址。 | |
投票间守护程序的原始资源。它会与其余群集站点上的投票间守护程序通讯。该守护程序可以在站点的任何节点上启动。为了使资源分布在同一节点上(如果可能),resource-stickiness 设置为 | |
两个原始资源的群集资源组。通过这种配置,每个投票间守护程序都将在各自的 IP 地址处可用,独立于运行守护程序的节点。 | |
该群集资源组默认不会启动。校验群集资源的配置(并添加完成设置所需的资源)后,您需要启动该资源组。有关详细信息,请参见 完成 Geo 群集设置所需的步骤。 |
7 向 Geo 群集添加另一个站点 #
初始化 Geo 群集的第一个站点后,请按过程 2 中所述使用 crm cluster geo_join
添加第二个群集。该脚本需要通过 SSH 访问已配置的群集站点,并且会将当前的群集添加到 Geo 群集。
crm cluster geo_join
添加第二个站点 (berlin
) #登录要添加的群集站点的某个节点(例如,群集
berlin
的节点charlie
)。运行
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"
crm cluster geo_join
命令会从 1 复制投票间配置,请参见例 1。此外,它还会创建投票间所需的群集资源(请参见例 2)。
8 添加仲裁方 #
使用 crm cluster geo_init
和 crm cluster geo_join
设置 Geo 群集的所有站点后,使用 crm cluster geo_init_arbitrator
设置仲裁方。
crm cluster geo_init_arbitrator
设置仲裁方 #登录要用作仲裁方的计算机。
运行以下命令。例如:
root #
crm cluster geo_init_arbitrator
--cluster-node1 192.168.201.100指定要从何处复制投票间配置。请使用已配置的 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 将无法连接到群集。
启动 Web 浏览器并输入第一个群集站点
amsterdam
的虚拟 IP。https://192.168.201.100:7630/
或者,使用
alice
或bob
的 IP 地址或主机名。如果您已使用引导脚本设置两个节点,则hawk
服务在这两个节点上应当都会运行。登录到 Hawk2 Web 界面。
在左侧导航栏中,选择
。Hawk2 会显示当前群集站点的资源和节点的概述。此外,它还会显示已为 Geo 群集配置的所有
。如需有关此视图中所用图标的信息,请单击 。图 2︰ 包含一个群集站点 (amsterdam
) 的 Hawk2 仪表板 #要添加第二个群集站点的仪表板,请单击
。输入用于在
中标识该群集的 。在本例中为berlin
。输入其中一个群集节点(在本例中为
charlie
或doro
)的完全限定的主机名。单击
。Hawk2 会为新添加的群集站点显示另一个选项卡,其中会列出该群集站点的节点和资源的概述。图 3︰ 包含两个群集站点的 Hawk2 仪表板 #
要查看群集站点的更多细节或管理群集站点,请切换到站点的选项卡并单击锁链图标。
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 群集的其余站点才能使其生效。
要将投票间配置中的更改同步到所有群集站点(包括仲裁方),请使用 Csync2。有关详细信息,请参见第 5 章 “跨所有站点和仲裁方同步配置文件”。
CIB(群集信息数据库)不会跨 Geo 群集的群集站点自动同步。这意味着需要将所有群集站点上必需的资源配置中的所有更改手动传输到其余站点。要执行此操作,请标记相应资源,从当前 CIB 导出这些资源并将其导入到其余群集站点上的 CIB。有关详细信息,请参见第 6.4 节 “将资源配置传输到其他群集站点”。
11 更多信息 #
https://documentation.suse.com/sle-ha/ 上提供了更多有关此产品的文档。有关其他配置和管理任务,请参见详尽的 《Geo 群集指南》。
在以下 SUSE 最佳实践文档 中可找到有关通过 DRBD 跨 Geo 群集进行数据复制的信息。
12 法律声明 #
版权所有 © 2006– 2024 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 及其关联公司、作者和译者对于可能出现的错误或由此造成的后果皆不承担责任。