28 执行维护任务 #
要在群集节点上执行维护任务,可能需要停止该节点上运行的资源、移动这些资源,或者关闭或重引导该节点。此外,可能还需要暂时接管群集中资源的控制权,甚至需要在资源仍在运行时停止群集服务。
本章介绍如何在不产生负面影响的情况下手动关闭群集节点。此外,本章将会概述群集堆栈提供的用于执行维护任务的不同选项。
28.1 准备和完成维护工作 #
使用以下命令可启动、停止群集或查看群集状态:
crm cluster start [--all]
在一个或所有节点上启动群集服务
crm cluster stop [--all]
在一个或所有节点上停止群集服务
crm cluster restart [--all]
在一个或所有节点上重启动群集服务
crm cluster status
查看群集堆栈的状态
请以 root
用户身份或拥有所需特权的用户身份执行上述命令。
关闭或重引导某个群集节点(或停止节点上的群集服务)时,会触发以下过程:
该节点上运行的资源会停止,或被移出该节点。
如果停止资源的操作失败或超时,STONITH 机制会屏蔽该节点并将其关闭。
如果您需要执行测试或维护工作,请执行下面的一般步骤。
如果不执行,有可能会产生意外的负面影响,例如,资源不按顺序启动、CIB 在群集节点之间不同步,甚至丢失数据。
开始前,请选择第 28.2 节 “用于维护任务的不同选项”中所述的适当选项。
请使用 Hawk2 或 crmsh 应用此选项。
执行维护任务或测试。
完成后,请将资源、节点或群集恢复“正常”工作状态。
28.2 用于维护任务的不同选项 #
Pacemaker 提供了以下用于执行系统维护的选项:
- 将群集置于维护模式
使用全局群集属性
maintenance-mode
可以一次性将所有资源置于维护状态。群集会停止监控这些资源,因而不知道它们的状态。只有 Pacemaker 的资源管理功能会处于禁用状态。Corosync 和 SBD 仍会正常运行。请对涉及群集资源的所有任务都使用维护模式。对于涉及基础架构(例如存储或网络)的任何任务,最安全的方法是完全停止群集服务。请参见 停止整个群集的群集服务。- 停止整个群集的群集服务
一次性停止所有节点上的群集服务可以关闭群集,同时避免逐个关闭各个节点将会发生的大量资源迁移。由于不存在需要将资源迁移到的目标节点,因此所有资源都会停止。
- 将节点置于维护模式
此选项可以一次性将特定节点上运行的所有资源置于维护状态。群集会停止监控这些资源,因而不知道它们的状态。
- 将节点置于待机模式
处于待机模式的节点不再能够运行资源。该节点上运行的所有资源都会被移出或停止(如果没有其他节点可用于运行资源)。另外,该节点上的所有监控操作都会停止(设置了
role="Stopped"
的操作除外)。如果您需要停止群集中的某个节点,同时继续提供另一个节点上运行的服务,则可以使用此选项。
- 停止节点上的群集服务
此选项可停止单个节点上的所有群集服务。该节点上运行的所有资源都会被移出或停止(如果没有其他节点可用于运行资源)。如果停止资源的操作失败或超时,将会屏蔽该节点。
- 将资源置于维护模式
为某个资源启用此模式后,便不会针对该资源触发监控操作。
如果您需要手动调整此资源所管理的服务,并且不希望群集在此期间对该资源运行任何监控操作,则可以使用此选项。
- 将资源置于不受管理模式
使用
is-managed
元属性可以暂时“释放”某个资源,使其不受群集堆栈的管理。这意味着,您可以手动调整此资源管理的服务(例如,调整任何组件)。不过,群集会继续监控该资源,并继续报告任何故障。如果您希望群集同时停止监控该资源,请改为使用按资源维护模式(请参见将资源置于维护模式)。
28.3 将群集置于维护模式 #
将群集置于维护模式时,只有 Pacemaker 的资源管理功能会被禁用。Corosync 和 SBD 仍会正常运行。这可能会引发屏蔽操作,具体取决于您的维护任务。
请对涉及群集资源的所有任务都使用维护模式。对于涉及基础架构(例如存储或网络)的任何任务,最安全的方法是完全停止群集服务。请参见 第 28.4 节 “停止整个群集的群集服务”。
要在 crm shell 中将群集置于维护模式,请使用以下命令:
#
crm maintenance on
要在完成维护工作后将群集恢复正常模式,请使用以下命令:
#
crm maintenance off
按第 5.4.2 节 “登录”中所述,启动 Web 浏览器并登录到群集。
从左侧导航栏中,选择
› 。从空下拉框中选择
属性。从
maintenance-mode
下拉框中选择 。单击
。完成整个群集的维护任务后,从
maintenance-mode
下拉框中选择 ,然后单击 。从此刻起,High Availability 会再次接管群集管理工作。
28.4 停止整个群集的群集服务 #
要一次性停止所有节点上的群集服务,请使用以下命令:
#
crm cluster stop --all
要在完成维护工作后再次启动群集服务,请使用以下命令:
#
crm cluster start --all
单独使用 --all
选项不能保证可将群集正常关闭,因为应用程序级别的资源停止失败可能会触发意外的屏蔽。如果应用程序是关键型应用程序,请考虑先停止这些应用程序,再停止整个群集的群集服务。
28.5 将节点置于维护模式 #
要在 crm shell 中将节点置于维护模式,请使用以下命令:
#
crm node maintenance NODENAME
要在完成维护工作后将节点恢复正常模式,请使用以下命令:
#
crm node ready NODENAME
按第 5.4.2 节 “登录”中所述,启动 Web 浏览器并登录到群集。
在左侧导航栏中,选择
。在其中某个节点视图中,单击节点旁边的扳手图标,然后选择
。完成维护任务后,单击节点旁边的扳手图标,然后选择
。
28.6 将节点置于待机模式 #
要在 crm shell 中将节点置于待机模式,请使用以下命令:
#
crm node standby NODENAME
要在完成维护工作后将节点恢复上线状态,请使用以下命令:
#
crm node online NODENAME
按第 5.4.2 节 “登录”中所述,启动 Web 浏览器并登录到群集。
在左侧导航栏中,选择
。在其中某个节点的视图中,单击节点旁边的扳手图标,然后选择
。完成节点的维护任务。
要停用待机模式,请单击节点旁边的扳手图标,然后选择
。
28.7 停止节点上的群集服务 #
您可以按顺序将服务移出节点后再关闭或重引导该节点。这样可将服务迁移出节点,而不会受限于群集服务的关闭超时时长。
在要重引导或关闭的节点上,以
root
或同等身份登录。将节点置于
standby
模式:#
crm node standby
默认情况下,节点在重引导后将保持
standby
模式。您也可以使用crm node standby reboot
将节点设置为自动重新上线。检查群集状态:
#
crm status
此命令显示相关节点处于
standby
模式:[...] Node bob: standby [...]
停止该节点上的群集服务:
#
crm cluster stop
重引导该节点。
要再次检查节点是否已加入群集,请执行以下操作:
节点重引导后,请再次登录该节点。
检查群集服务是否已启动:
#
crm cluster status
这可能要花一些时间。如果群集服务无法自行重新启动,请手动启动它们:
#
crm cluster start
检查群集状态:
#
crm status
如果节点仍处于
standby
模式,请将其重新上线:#
crm node online
28.8 将资源置于维护模式 #
要在 crm shell 中将资源置于维护模式,请使用以下命令:
#
crm resource maintenance RESOURCE_ID true
要在完成维护工作后将资源恢复正常模式,请使用以下命令:
#
crm resource maintenance RESOURCE_ID false
按第 5.4.2 节 “登录”中所述,启动 Web 浏览器并登录到群集。
在左侧导航栏中,选择
。选择要置于维护模式或不受管理模式的资源,单击该资源旁边的扳手图标,然后选择
。打开
类别。从空下拉列表中,选择
属性,然后单击加号图标添加该属性。选中
maintenance
旁边的复选框,以将 maintenance 属性设置为yes
。确认更改。
完成该资源的维护任务之后,取消选中该资源的
maintenance
属性旁边的复选框。从此刻起,资源再次由 High Availability 软件管理。
28.9 将资源置于不受管理模式 #
要在 crm shell 中将资源置于不受管理模式,请使用以下命令:
#
crm resource unmanage RESOURCE_ID
要在完成维护工作后再次将资源置于受管模式,请使用以下命令:
#
crm resource manage RESOURCE_ID
按第 5.4.2 节 “登录”中所述,启动 Web 浏览器并登录到群集。
在左侧导航栏中选择
,然后转到 列表。在
列中,单击要修改的资源旁边的向下箭头图标,然后选择 。资源配置屏幕即会打开。
在
下面,从空下拉框中选择 项。将其值设置为
No
,然后单击 。完成维护任务后,将
设置为Yes
(即默认值)并应用更改。从此刻起,资源再次由 High Availability 软件管理。
28.10 在维护模式下重引导群集节点 #
如果群集或某个节点处于维护模式,您可以使用群集堆栈外部的工具(例如 systemctl
)手动将群集管理的组件作为资源进行操作。High Availability 软件不会监控这些组件或尝试重启动它们。
如果您停止节点上的群集服务,所有守护程序和进程(最初作为 Pacemaker 管理的群集资源启动)都会继续运行。
如果您在群集或某个节点处于维护模式时尝试启动该节点上的群集服务,Pacemaker 会针对每个资源启动一次性的监控操作(“探测”),以确定哪些资源当前正在该节点上运行。不过,它只会确定资源的状态,而不执行其他操作。
在要重引导或关闭的节点上,以
root
或同等身份登录。如果您使用 DLM 资源(或依赖于 DLM 的其他资源),请确保在停止群集服务之前明确停止这些资源:
crm(live)resource#
stop RESOURCE_ID
这是因为停止 Pacemaker 也会停止 Corosync 服务,而 DLM 依赖于后者的成员资格和消息交换服务。如果 Corosync 停止,DLM 资源会表现为某种节点分裂情况并触发屏蔽操作。
停止该节点上的群集服务:
#
crm cluster stop
关闭或重引导节点。