8 管理群集资源 #
配置群集中的资源后,可使用群集管理工具启动、停止、清理、去除或迁移资源。本章介绍如何使用 Hawk2 或 crmsh 执行资源管理任务。
8.1 显示群集资源 #
8.1.1 使用 crmsh 显示群集资源 #
管理群集时,crm configure show
命令可列出当前 CIB 对象(例如群集配置、全局选项、原始资源等):
#
crm configure show
node 178326192: alice
node 178326448: bob
primitive admin_addr IPaddr2 \
params ip=192.168.2.1 \
op monitor interval=10 timeout=20
primitive stonith-sbd stonith:external/sbd \
params pcmk_delay_max=30
property cib-bootstrap-options: \
have-watchdog=true \
dc-version=1.1.15-17.1-e174ec8 \
cluster-infrastructure=corosync \
cluster-name=hacluster \
stonith-enabled=true \
placement-strategy=balanced \
standby-mode=true
rsc_defaults rsc-options: \
resource-stickiness=1 \
migration-threshold=3
op_defaults op-options: \
timeout=600 \
record-pending=true
如果您有许多资源,show
的输出会十分冗长。为限制输出,请使用资源名称。例如,如果只想列出原始资源 admin_addr
的属性,请将资源名称追加到 show
后:
#
crm configure show admin_addr
primitive admin_addr IPaddr2 \
params ip=192.168.2.1 \
op monitor interval=10 timeout=20
但在某些情况下,您可能希望更精确地限制特定资源的输出。那么,您可以使用过滤器。过滤器可将输出限定到特定组件。例如,要想仅列出节点,可使用 type:node
:
#
crm configure show type:node
node 178326192: alice
node 178326448: bob
如果您还想列出原始资源,请使用 or
运算符:
#
crm configure show type:node or type:primitive
node 178326192: alice
node 178326448: bob
primitive admin_addr IPaddr2 \
params ip=192.168.2.1 \
op monitor interval=10 timeout=20
primitive stonith-sbd stonith:external/sbd \
params pcmk_delay_max=30
此外,要搜索以特定字符串开头的对象,请使用以下表示法:
#
crm configure show type:primitive and 'admin*'
primitive admin_addr IPaddr2 \
params ip=192.168.2.1 \
op monitor interval=10 timeout=20
要列出所有可用类型,请输入 crm configure show type:
,然后按 →| 键。Bash 补全功能会列出所有类型。
8.2 编辑资源和组 #
可以使用 Hawk2 或 crmsh 来编辑资源或组。
8.2.1 使用 Hawk2 编辑资源和组 #
创建资源后,您随时都可以编辑其配置,根据需要调整参数、操作或元属性。
登录 Hawk2:
https://HAWKSERVER:7630/
在 Hawk2 的
屏幕中,转到 列表。在
列中,单击要修改的资源或组旁边的向下箭头图标,然后选择 。资源配置屏幕即会打开。
图 8.1︰ Hawk2 - 编辑原始资源 #在配置屏幕顶部,可以选择要执行的操作。
如果要编辑原始资源,可以执行以下操作:
复制资源
重命名资源(更改其 ID)
删除资源
如果要编辑组,可以执行以下操作:
创建要添加到此组的新原始资源
重命名组(更改其 ID)
拖放组成员以改变其排列顺序
要添加新参数、操作或元属性,请从空下拉框中选择一项。
要编辑
类别中的任何值,请单击相应项的 图标,为该操作输入不同的值,然后单击 。完成后,单击资源配置屏幕中的
按钮,以确认对参数、操作或元属性所做的更改。如果操作成功,屏幕顶部会显示一条消息。
8.2.2 使用 crmsh 编辑组 #
要更改组成员的顺序,请使用 modgroup
子命令中的 configure
命令。例如,使用下面的命令可将原始资源 Email
移到 Public-IP
前面:
crm(live)configure#
modgroup g-mailsvc add Email before Public-IP
要从组中去除某个资源(例如 Email
),请使用以下命令:
crm(live)configure#
modgroup g-mailsvc remove Email
8.3 启动群集资源 #
启动群集资源之前,应确保资源设置正确。例如,如果使用 Apache 服务器作为群集资源,请先设置 Apache 服务器。完成 Apache 配置,然后再启动群集中的相应资源。
当您通过 High Availability 软件管理资源时,就不能以其他方式启动或停止该资源(例如,不能在群集外手动启动或停止,或者在系统引导或重引导时启动或停止)。该 High Availability 软件会负责所有服务的启动或停止操作。
但如果要检查服务是否配置正确,可手动启动该服务,不过请确保在 High Availability 软件接管前再次停止该服务。
要对群集当前管理的资源进行干预,请先将资源设置为 maintenance mode
。有关详细信息,请参见 过程 28.5 “使用 Hawk2 将资源置于维护模式”。
可以使用 Hawk2 或 crmsh 来启动群集资源。
8.3.1 使用 Hawk2 启动群集资源 #
使用 Hawk2 创建资源时,可通过 target-role
元属性设置其初始状态。如果将其值设置为 stopped
,则该资源在创建后不会自动启动。
登录 Hawk2:
https://HAWKSERVER:7630/
从左侧导航栏中,选择
› 。 列表还会显示 。选择要启动的资源。在相应的
列中,单击 图标。要继续,请对显示的消息进行确认。
资源启动后,Hawk2 会将资源的
变为绿色,并显示当前运行该资源的节点。8.3.2 使用 crmsh 启动群集资源 #
要启动新群集资源,需要提供相应的标识符。
以
root
用户身份登录,然后启动crm
交互式外壳:#
crm
切换到资源级别:
crm(live)#
resource
使用
start
启动资源,然后按 →| 键显示所有已知资源:crm(live)resource#
start ID
8.4 停止群集资源 #
8.4.1 使用 crmsh 停止群集资源 #
要停止一个或多个现有群集资源,需要提供相应的标识符。
以
root
用户身份登录,然后启动crm
交互式外壳:#
crm
切换到资源级别:
crm(live)#
resource
使用
stop
停止资源,然后按 →| 键显示所有已知资源:crm(live)resource#
stop ID
您一次可以停止多个资源:
crm(live)resource#
stop ID1 ID2
...
8.5 清理群集资源 #
资源失败时会自动重启动,但每次失败都会使资源的失败计数增加。
如果为资源设置了 migration-threshold
,当失败次数达到该迁移阈值时,节点便无法再运行该资源。
默认情况下,失败计数不会自动重置。您可以通过为资源设置 failure-timeout
选项将失败计数配置为自动重置,也可以使用 Hawk2 或 crmsh 手动重置失败计数。
8.5.1 使用 Hawk2 清理群集资源 #
登录 Hawk2:
https://HAWKSERVER:7630/
从左侧导航栏中,选择
。 列表还会显示 。转到要清理的资源。在
列中,单击向下箭头按钮并选择 。要继续,请对显示的消息进行确认。如此即会执行
crm resource cleanup
命令并在所有节点上清理该资源。
8.5.2 使用 crmsh 清理群集资源 #
打开外壳并以
root
用户身份登录。获取所有资源的列表。
#
crm resource status
Full List of Resources * admin-ip (ocf:heartbeat:IPaddr2): Started * stonith-sbd (stonith:external/sbd): Started * Resource Group: dlm-clvm: * dlm: (ocf:pacemaker:controld) Started * clvm: (ocf:heartbeat:lvmlockd) Started显示资源的失败计数:
#
crm resource failcount RESOURCE show NODE
例如,要显示节点
alice
上dlm
资源的失败计数,请使用以下命令:#
crm resource failcount dlm show alice
scope=status name=fail-count-dlm value=2清理资源:
#
crm resource cleanup RESOURCE
此命令会清理所有节点上的资源。如果该资源是组的一部分,crmsh 还会清理组中的其他资源。
8.6 去除群集资源 #
要从群集中去除资源,请按照下面的 Hawk2 或 crmsh 过程操作,以免出现配置错误。
8.6.1 使用 Hawk2 去除群集资源 #
登录 Hawk2:
https://HAWKSERVER:7630/
按过程 8.5 “清理资源”中所述清理所有节点上的资源。
停止资源:
从左侧导航栏中,选择
› 。 列表还会显示 。在
列中,单击资源旁边的 按钮。要继续,请对显示的消息进行确认。
资源停止后,
列会反映此变化。
删除资源:
从左侧导航栏中,选择
› 。在
列表中,转到相应资源。在 列中,单击资源旁边的 图标。要继续,请对显示的消息进行确认。
8.6.2 使用 crmsh 去除群集资源 #
以
root
用户身份登录,然后启动crm
交互式外壳:#
crm
获取资源列表:
crm(live)#
resource status
Full List of Resources: * admin-ip (ocf:heartbeat:IPaddr2): Started * stonith-sbd (stonith:external/sbd): Started * nfsserver (ocf:heartbeat:nfsserver): Started停止要去除的资源:
crm(live)#
resource stop RESOURCE
删除资源:
crm(live)#
configure delete RESOURCE
8.7 迁移群集资源 #
当软件或硬件发生故障时,群集会根据您可以定义的特定参数(例如迁移阈值或资源粘性),自动将资源故障转移(迁移)。您也可以手动将资源迁移到群集中的其他节点,或将其从当前节点移出,让群集决定将资源放置在哪里。
可以使用 Hawk2 或 crmsh 来迁移群集资源。
8.7.1 使用 Hawk2 迁移群集资源 #
登录 Hawk2:
https://HAWKSERVER:7630/
从左侧导航栏中,选择
› 。 列表还会显示 。在
列表中,选择相应资源。在
列中,单击向下箭头按钮并选择 。随后打开的窗口中会提供以下选项:
-INFINITY
的位置约束。或者,您也可以将资源移到另一节点上。此选项将为目标节点创建分数为
INFINITY
的位置约束。
确认您的选择。
要使资源重新移回,请按如下操作:
登录 Hawk2:
https://HAWKSERVER:7630/
从左侧导航栏中,选择
› 。 列表还会显示 。在
列表中,转到相应资源。在
列中,单击向下箭头按钮并选择 。要继续,请对显示的消息进行确认。Hawk2 会使用
crm_resource
--clear
命令。资源可以移回到其原始位置,也可以留在当前位置(取决于资源粘性)。
有关详细信息,请参见 https://www.clusterlabs.org/pacemaker/doc/ 上的 Pacemaker Explained。请参见 Resource Migration 部分。
8.7.2 使用 crmsh 迁移群集资源 #
可以使用 move
命令来完成此任务。例如,要将 ipaddress1
资源迁移到名为 bob
的群集节点,请使用以下命令:
#
crm resource
crm(live)resource#
move ipaddress1 bob
8.8 使用标记对资源分组 #
使用标记可以一次性引用多个资源,而无需在这些资源之间创建任何共置或顺序关系。此功能十分适用于对概念上相关的资源进行分组。例如,如果有多个资源与某个数据库相关,您可以创建名为 databases
的标记,并将与该数据库相关的所有资源都添加到此标记。这样,只需使用一条命令就能停止或启动所有这些资源。
标记也可以用于约束。例如,loc-db-prefer
位置约束将应用到标记了 databases
的一组资源:
location loc-db-prefer databases 100: alice
可以使用 Hawk2 或 crmsh 来创建标记。
8.8.1 使用 Hawk2 通过标记对资源分组 #
登录 Hawk2:
https://HAWKSERVER:7630/
从左侧导航栏中,选择
› › 。输入唯一的
。从
列表中,选择要使用标记引用的资源。单击
以完成配置。如果操作成功,屏幕顶部会显示一条消息。
8.8.2 使用 crmsh 通过标记对资源分组 #
例如,如果有多个资源与某个数据库相关,您可以创建名为 databases
的标记,并将与该数据库相关的所有资源都添加到此标记:
#
crm configure tag databases: db1 db2 db3
这样,只需使用一条命令就能启动所有这些资源:
#
crm resource start databases
同样,也可以一次性停止所有这些资源:
#
crm resource stop databases