31.3. 禁用、启用和禁止集群资源
除了 pcs resource move
和 pcs resource relocate
命令外,您还可以使用各种其他命令来控制集群资源的行为。
禁用集群资源
您可以手动停止正在运行的资源,并使用以下命令防止集群再次启动它。根据其余的配置,如约束、选项和失败,资源可能会保持启动状态。如果您指定了 --wait
选项,pcs
会等待最多 'n' 秒以便资源停止,然后返回 0 (如果资源停止)或返回 1 (如果资源尚未停止)。如果没有指定 n,则默认为 60 分钟。
pcs resource disable resource_id [--wait[=n]]
pcs resource disable resource_id [--wait[=n]]
模拟禁用资源
当建立了复杂的资源关系时,要确保禁用资源不会对其他资源产生影响,靠手工操作是不可能的。要确定禁用资源会对其他资源产生何种影响,请使用 pcs resource disable --simulate
命令显示在不更改集群配置的情况下禁用资源的影响。
安全禁用资源
在禁用资源不会影响其他资源的情况下,您可以指定一个资源被禁用。
-
pcs resource disable --safe
命令仅在没有任何方式影响任何其他资源时禁用资源,比如从一个节点迁移到另一个节点。pcs resource secure-disable
命令是pcs resource disable --safe
命令的别名。 -
pcs resource disable --safe --no-strict
命令仅在其它资源没有被停止或降级时才禁用资源。
确定受影响资源的资源 ID
如果安全禁用操作失败包含受影响的资源 ID,则 pcs resource disable --safe
命令会生成错误报告。如果您只需要知道受禁用资源影响的资源的资源 ID,请对 pcs resource disable --safe
命令使用 --brief
选项,这不会提供完整的模拟结果,仅打印错误。
启用集群资源
使用以下命令来允许集群启动资源。根据其余配置,资源可能会继续停止。如果您指定了 --wait
选项,pcs
将最多等待 'n' 秒,以启动资源,然后如果资源已启动,就返回 0 ,或如果资源未启动,就返回 1 。如果没有指定 'n',则默认为 60 分钟。
pcs resource enable resource_id [--wait[=n]]
pcs resource enable resource_id [--wait[=n]]
防止资源在特定节点上运行
使用以下命令来防止资源在指定节点上运行,如果没有指定节点则在当前节点上运行。
pcs resource ban resource_id [node] [--promoted] [lifetime=lifetime] [--wait[=n]]
pcs resource ban resource_id [node] [--promoted] [lifetime=lifetime] [--wait[=n]]
请注意,当执行 pcs resource ban
命令时,这会向资源添加 -INFINITY 位置约束,以防止其在指定的节点上运行。您可以执行 pcs resource clear
或 pcs constraint delete
命令来删除约束。这不一定将资源回指定节点 ; 此时可以在哪里运行这些资源取决于您最初配置的资源。有关资源约束的详情,请参阅 确定资源可在哪些节点上运行。
-
如果您指定
pcs resource ban
命令的--promoted
参数,则约束的范围仅限于提升的角色,您必须指定 promotable_id 而不是 resource_id。 -
您可选择为
pcs resource ban
命令配置lifetime
参数,以指示约束应保留的时间。 -
您可以选择为
pcs resource ban
命令配置--wait[=n] 参数
,以指示在返回 0(如果资源已启动)或 1 (如果资源尚未启动)之前,在目标节点上等待资源启动的秒数。如果没有指定 n,则使用默认资源超时。
强制资源在当前节点上启动
使用 pcs resource
命令的 debug-start
参数强制指定资源在当前节点上启动,忽略集群建议并打印启动资源的输出。这主要用于调试资源;在集群上启动资源总是(几乎)由 Pacemaker 来完成,而不是直接使用 pcs
命令。如果您的资源没有启动,这通常是由于资源配置错误(您在系统日志中调试)、阻止资源启动的限制,或者禁用资源。您可以使用这个命令来测试资源配置,但通常不应该用来启动集群中的资源。
debug-start
命令的格式如下:
pcs resource debug-start resource_id
pcs resource debug-start resource_id