6 配置群集资源和约束 #
除了定义特定群集设置所需的资源和约束外,Geo 群集还需要下文所述的其他资源和约束。可按以下示例中所示使用 crm 外壳 (crmsh) 或者使用 Hawk2 来配置这些资源和约束。
本章重点介绍特定于 Geo 群集的任务。有关您的首选群集管理工具的简介以及如何使用该工具配置资源和约束的一般说明,请参见以下其中一章:
如果您是使用引导脚本设置 Geo 群集的,那么投票间所需的群集资源(包括 boothd 的资源组)均已配置好。在此情况下,您可以跳过第 6.2 节,只需执行以下剩余步骤即可完成群集资源配置。
如果您要手动设置 Geo 群集,则需要执行以下所有步骤:
CIB 不会跨 Geo 群集的群集站点自动同步。需要为每个站点相应地配置必须在 Geo 群集中保持高度可用的所有资源,或者需要将这些资源传输到其他一个或多个站点。
为简化传输过程,可以在配置任何包含站点特定参数的资源时为参数指定取决于运行资源的群集站点名称的值(另请参见第 3 章 “要求”中的其他要求和建议)。
在一个站点上配置资源后,可以标记所有群集站点上所需的资源,从当前 CIB 导出这些资源,然后将其导入另一站点的 CIB。有关详细信息,请参见第 6.4 节 “将资源配置传输到其他群集站点”。
6.1 配置资源的票据依赖项 #
对于 Geo 群集,可以指定哪些资源依赖于特定的票据。您可以与特定类型的约束一起,设置丢失策略
,该策略定义撤消票据时应对相应资源采取哪些操作。loss-policy
属性可能具有以下值:
fence
:屏蔽运行相关资源的节点。stop
:停止相关资源。freeze
:不对相关资源执行任何操作。demote
:将以master
模式运行的相关资源降级为以slave
模式运行。
在群集 amsterdam 的其中一个节点上,启动外壳并以
root
或同等身份登录。输入
crm configure
切换到交互式 crm 外壳。配置约束,用于定义哪些资源依赖于特定的票据。例如,要使原始资源
rsc1
依赖于ticketA
,请运行以下命令:crm(live)configure#
rsc_ticket
rsc1-req-ticketA ticketA: \ rsc1 loss-policy="fence"如果已撤消
ticketA
,应屏蔽运行资源的节点。如果希望其他资源依赖于其他票据,请使用
rsc_ticket
根据需要创建更多的约束。使用
show
复查更改。如果全部都正确,请使用
commit
提交更改,并使用exit
退出 crm 当前配置。配置将保存到 CIB。
6.2 配置 boothd
的资源组 #
如果您是使用 ha-cluster-init
引导脚本设置 Geo 群集的,则可以跳过下面的过程,因为在此情况下,boothd 的资源和资源组已配置好。
每个站点都需要运行 boothd
的一个实例以与其他投票间守护程序通讯。该守护程序可以在任何节点上启动,因此应将其配置为原始资源。要使 boothd
资源保持在同一节点上,则在可行的情况下将资源粘性添加到配置中。每个守护程序都需要一个永久 IP 地址,因此请用虚拟 IP 地址配置另一个原始资源。将两个原始资源分组:
在群集
amsterdam
的其中一个节点上,启动外壳并以root
或同等身份登录。输入
crm configure
切换到交互式 crm 外壳。输入以下命令创建两个原始资源,并将它们添加到一个组
g-booth
:crm(live)configure#
primitive
ip-booth ocf:heartbeat:IPaddr2 \ params iflabel="ha" nic="eth1" cidr_netmask="24" params rule #cluster-name eq amsterdam ip="192.168.201.100" \ params rule #cluster-name eq berlin ip="192.168.202.100"crm(live)configure#
primitive
booth-site ocf:pacemaker:booth-site \ meta resource-stickiness="INFINITY" \ params config="nfs" op monitor interval="10s"crm(live)configure#
group
g-booth ip-booth booth-site通过这种配置,每个投票间守护程序都将在各自的 IP 地址处可用,独立于运行守护程序的节点。
使用
show
复查更改。如果全部都正确,请使用
commit
提交更改,并使用exit
退出 crm 当前配置。配置将保存到 CIB。
6.3 添加顺序约束 #
如果票据已授予某个站点,但因任何原因导致该站点的所有节点无法托管 boothd
资源组,则可能导致分布于不同地理位置的站点之间出现“节点分裂”现象。在这种情况下,系统无法通过任何 boothd
实例针对其他站点安全地管理票据故障转移。要避免该票据出现潜在的并发性违规(票据同时授予给多个站点),请添加一个顺序约束:
在群集 amsterdam 的其中一个节点上,启动外壳并以
root
或同等身份登录。输入
crm configure
切换到交互式 crm 外壳。创建顺序约束,例如:
crm(live)configure#
order
o-booth-before-rsc1 Mandatory: g-booth rsc1该约束定义
rsc1
(依赖于ticketA
)只能在g-booth
资源组之后启动。对于依赖于某个特定票据的任何其他资源,定义更多顺序约束。
使用
show
复查更改。如果全部都正确,请使用
commit
提交更改,并使用exit
退出 crm 当前配置。配置将保存到 CIB。
6.4 将资源配置传输到其他群集站点 #
完成或更改一个群集站点的资源配置后,请将该配置传输到 Geo 群集的其他站点。
为了简化传输,可以标记所有群集站点上所需的任何资源,从当前 CIB 导出这些资源,然后将其导入另一站点的 CIB。标记不会在资源之间创建任何共置或顺序关系。
过程 6.2 “标记并导出资源配置”和过程 6.3 “导入标记的资源配置”中提供了操作方法的示例。它们基于以下先决条件:
有一个包含两个站点的 Geo 群集:群集
amsterdam
和群集berlin
。已在相应的
/etc/corosync/corosync.conf
文件中定义每个站点的群集名称。totem { [...] cluster_name: amsterdam }
您可以手动完成此操作(即编辑
/etc/corosync/corosync.conf
),也可以通过 YaST 群集模块进行(即切换到 类别,然后定义 )。随后,请停止pacemaker
服务然后再将其启动,以使更改生效:root #
crm
cluster restart已在站点
amsterdam
上的 CIB 中配置应在 Geo 群集中高度可用的投票间和所有服务的必要资源。这些资源将导入到站点berlin
上的 CIB 中。
登录到群集
amsterdam
的节点之一。使用以下命令启动群集:
root #
crm
cluster start输入
crm configure
切换到交互式 crm 外壳。查看当前 CIB 配置:
crm(live)configure#
show使用标记
geo_resources
来标记 Geo 群集中需要的资源和约束:crm(live)configure#
tag
geo_resources: \ LIST_OF_RESOURCES_and_CONSTRAINTS_FOR_REQUIRED_SERVICES 1\ rsc1-req-ticketA ip-booth booth-site g-booth o-booth-before-rsc1 2Geo 群集中所有站点上都需要的特定设置的任何资源和约束(例如,SUSE 最佳实践文档中所述的 DRBD 的资源)。
使用
show
查看更改。如果配置符合需要,请使用
submit
提交更改,然后使用exit
退出 crm 在线外壳。将标记的资源和约束导出到名为
exported.cib
的文件:root #
crm configure show
tag:geo_resources geo_resources > exported.cib命令
crm configure show tag:
标记名称将显示属于标记标记名称的所有资源。
要将保存的配置文件导入到第二个群集站点的 CIB 中,请执行以下操作:
登录群集
berlin
的其中一个节点。使用以下命令启动群集:
root #
crm
cluster start将群集
amsterdam
中的文件exported.cib
复制到此节点。将文件
exported.cib
中标记的资源和约束导入群集berlin
的 CIB:root #
crm configure load
update PATH_TO_FILE/exported.cib为
crm configure load
命令使用update
参数时,crmsh 会尝试将文件内容集成到当前的 CIB 配置(而不是将当前 CIB 替换为文件内容)。使用以下命令查看更新的 CIB 配置:
root #
crm configure show
导入的资源和约束将显示在 CIB 中。