为了获得最大可用性或最佳性能,某些服务组合需要在群集节点之间对联机资源组进行特定的分布。分布联机资源组包括在资源组之间创建关联,以用于以下目的:
资源组首次联机时强制执行所需的分布
尝试故障转移或切换转移某个资源组后保留所需的分布
此节提供了以下示例,以说明如何使用资源组关联在群集节点之间分布联机资源组:
强制一个资源组与另一个资源组位于同一位置
指定一个资源组与另一个资源组的首选共同位置
平衡一组资源组的负载
指定关键服务优先
委托资源组的故障转移或切换转移
组合资源组之间的关联以指定更复杂的操作
资源组之间的关联限制了在哪些节点上可使资源组同时联机。在每个关联中,源资源组可声明与一个或若干个目标资源组有关联。要在资源组之间创建关联,请按如下所示设置源资源组的 RG_affinities 资源组特性:
-y RG_affinities=operator target-rg-list |
operator 和 target-rg-list 之间不包含空格。
指定要创建的关联的类型。有关更多信息,请参见表 2–2。
指定资源组(以逗号分隔)列表,这些资源组是要创建的关联的目标资源组。您可以在列表中指定单个资源组。
操作员 |
关联类型 |
作用 |
---|---|---|
+ |
如果可能,使源资源组在目标资源组处于联机状态或启动状态的一个或多个节点上联机。不过,系统允许源资源组和目标资源组在不同的节点上联机。 |
|
++ |
使源资源组仅在目标资源组处于联机状态或启动状态的一个或多个节点上联机。不允许源资源组和目标资源组在不同的节点上联机。 |
|
- |
如果可能,使源资源组在目标资源组未处于联机状态或启动状态的一个或多个节点上联机。不过,系统允许源资源组和目标资源组在同一节点上联机。 |
|
-- |
使源资源组仅在目标资源组未处于联机状态的一个或多个节点上联机。不允许源资源组和目标资源组在同一节点上联机。 |
|
+++ |
与强正相同,唯一区别是将源资源组的故障转移尝试委托给目标资源组。有关更多信息,请参见委托资源组的故障转移或切换转移。 |
其他资源组的当前状态可以防止在任何节点上满足强关联。在此情况下,该关联的源资源组将保持脱机状态。如果其他资源组的状态发生更改,从而使强关联得到满足,则该关联的源资源组将恢复联机。
在源资源组上为多个目标资源组声明强关联时要小心。如果无法全部满足所有已声明的强关联,则源资源组将保持脱机状态。
一个资源组所表示的服务可能非常强烈地依赖于另一个资源组中的服务,从而要求这两种服务必须在同一节点上运行。例如,由多个相互依赖的服务守护进程组成的应用程序可能需要所有守护进程都在同一节点上运行。
在此情况下,应强制依赖服务的资源组与另一个服务的资源组位于同一节点上。要强制某个资源组与另一个资源组位于同一位置,请在该资源组上为另一个资源组声明强正关联。
# scrgadm -c|-a -g source-rg -y RG_affinities=++target-rg |
指定强正关联的源资源组。此资源组是要在其上声明与另一个资源组有强正关联的资源组。
指定强正关联的目标资源组。此资源组是要声明与其有强正关联的资源组。
资源组跟在与其有强正关联的资源组的后面。但是,声明强正关联的资源组无法故障转移到关联的目标资源组尚未在其上运行的节点。
仅禁止资源监视器启动的故障转移。如果源资源组和目标资源组正在其上运行的节点发生故障,则这两个资源组将在仍然可用的同一节点上重新启动。
例如,资源组 rg1 为资源组 rg2 声明强正关联。如果 rg2 故障转移到另一个节点,则 rg1 也将故障转移到该节点。即使 rg1 中的所有资源均运行正常,仍将发生此故障转移。但是,如果 rg1 中的资源尝试将 rg1 故障转移到 rg2 未在其上运行的节点,此尝试将被阻止。
如果需要允许声明强正关联的资源组进行故障转移,则必须委托故障转移。有关更多信息,请参见委托资源组的故障转移或切换转移。
此例说明了用于修改资源组 rg1 以声明与资源组 rg2 有强正关联的命令。由于存在此关联关系,因此 rg1 仅在 rg2 运行所在的节点上联机。此例假定两个资源组都存在。
# scrgadm -c -g rg1 -y RG_affinities=++rg2 |
一个资源组所表示的服务可以使用另一个资源组中的服务。这样,当这些服务在同一节点上运行时,其运行将最有效。例如,如果应用程序与它所使用的数据库在同一节点上运行,应用程序的运行将最有效。但是,这些服务可以在不同的节点上运行,因为有效性的降低比资源组的附加故障转移造成的破坏要小。
在此情况下,请指定两个资源组应位于同一位置(如果可能)。要指定一个资源组与另一个资源组的首选共同位置,请在该资源组上为另一个资源组声明弱正关联。
# scrgadm -c|-a -g source-rg -y RG_affinities=+target-rg |
指定弱正关联的源资源组。此资源组是要在其上声明与另一个资源组有弱正关联的资源组。
指定弱正关联的目标资源组。此资源组是要声明与其有弱正关联的资源组。
通过在一个资源组上声明与另一个资源组有弱正关联,可以增加两个资源组在同一节点上运行的可能性。弱正关联的源资源组将首先在弱正关联的目标资源组已经在其上运行的节点上联机。但是,如果资源监视器导致关联的目标资源组发生故障转移,弱正关联的源资源组将不会进行故障转移。同样地,如果关联的目标资源组被切换转移,弱正关联的源资源组也不会进行故障转移。在这两种情况下,源资源组在其运行所在的节点上仍处于联机状态。
如果源资源组和目标资源组正在其上运行的节点出现故障,则这两个资源组将在仍然可用的同一节点上重新启动。
此例说明了用于修改资源组 rg1 以声明与资源组 rg2 有弱正关联的命令。由于存在此关联关系,因此将首先在同一节点上使 rg1 和 rg2 联机。但是,如果 rg2 中的资源导致 rg2 发生故障转移,rg1 将在这两个资源组最初联机的节点上保持联机状态。此例假定两个资源组都存在。
# scrgadm -c -g rg1 -y RG_affinities=+rg2 |
一组资源组中的每个资源组都可能在群集上强加相同的负载。在此情况下,通过在群集节点之间平均分布资源组,可以平衡群集上的负载。
要在群集节点之间平均分布一组资源组,请在每个资源组上声明与集合中的其他资源组有弱负关联。
# scrgadm -c|-a -g source-rg -y RG_affinities=-target-rg-list |
指定弱负关联的源资源组。此资源组是要在其上声明与其他资源组有弱负关联的资源组。
指定资源组(以逗号分隔)列表,这些资源组是弱负关联的目标资源组。这些资源组是要声明与其有弱负关联的资源组。
通过在一个资源组上声明与其他资源组有弱负关联,能够确保使资源组始终在群集中负载最轻的节点上联机。仅有极少的其他资源组在该节点上运行。因此,只有极少数弱负关联被破坏。
此例说明了用于修改资源组 rg1、rg2、rg3 和 rg4 以确保在群集中的可用节点之间平均分布这些资源组的命令。此例假定资源组 rg1、rg2、rg3 和 rg4 都存在。
# scrgadm -c -g rg1 RG_affinities=-rg2,-rg3,-rg4 # scrgadm -c -g rg2 RG_affinities=-rg1,-rg3,-rg4 # scrgadm -c -g rg3 RG_affinities=-rg1,-rg2,-rg4 # scrgadm -c -g rg4 RG_affinities=-rg1,-rg2,-rg3 |
可以将群集配置为运行任务关键的服务和非关键服务的组合。例如,支持关键用户服务的数据库与非关键调查任务可以在同一群集中运行。
为确保非关键服务不影响关键服务的性能,请指定关键服务优先。通过指定关键服务优先,可以防止非关键服务在关键服务所在的节点上运行。
如果所有节点均运行正常,关键服务和非关键服务将在不同的节点上运行。但是,如果关键服务出现故障,则可能会导致该服务故障转移到非关键服务正在其上运行的节点。在此情况下,非关键服务将立即脱机,以确保该节点的计算资源完全用于任务关键的服务。
要指定关键服务优先,请在每个非关键服务的资源组上声明与包含关键服务的资源组有强负关联。
# scrgadm -c|-a -g noncritical-rg -y RG_affinities=--critical-rg |
指定包含非关键服务的资源组。此资源组是要在其上声明与另一个资源组有强负关联的资源组。
指定包含关键服务的资源组。此资源组是要声明与其有强负关联的资源组。
资源组将从与其有强负关联的资源组移走。
此例说明了用于修改非关键资源组 ncrg1 和 ncrg2 以确保关键资源组 mcdbrg 比这些资源组优先的命令。此例假定资源组 mcdbrg、ncrg1 和 ncrg2 都存在。
# scrgadm -c -g ncrg1 RG_affinities=--mcdbrg # scrgadm -c -g ncrg2 RG_affinities=--mcdbrg |
强正关联的源资源组不能故障转移到或被切换转移到关联的目标资源组没有在其上运行的节点上。如果需要允许强正关联的源资源组能够进行故障转移或被切换转移,则必须将故障转移委托给目标资源组。关联的目标资源组进行故障转移时,将强制关联的源资源组与目标资源组一起进行故障转移。
您可能需要切换转移由 ++ 操作符指定的强正关联的源资源组。在此情况下,将同时切换转移关联的目标资源组和源资源组。
要将某个资源组的故障转移或切换转移委托给另一个资源组,请在该资源组上声明与另一个资源组有包含故障转移委托的强正关联。
# scrgadm -c|-a -g source-rg -y RG_affinities=+++target-rg |
指定委托故障转移或切换转移的资源组。此资源组是要在其上声明与另一个资源组有包含故障转移委托的强正关联的资源组。
指定 source-rg 将故障转移或切换转移委托到的资源组。此资源组是要声明与其有包含故障转移委托的强正关联的资源组。
资源组最多只能声明与一个资源组有包含故障转移委托的强正关联。不过,给定资源组可以是任意多个其他资源组声明的包含故障转移委托的强正关联的目标资源组。
包含故障转移委托的强正关联不完全对称。目标资源组可以在源资源组保持脱机状态的情况下联机。但是,如果目标资源处于脱机状态,源资源组将无法联机。
如果目标资源组声明与第三个资源组有包含故障转移委托的强正关联,故障转移或切换转移将被进一步委托给第三个资源组。第三个资源组将执行故障转移或切换转移,还将强制其他资源组进行故障转移或切换转移。
此例说明了用于修改资源组 rg1 以声明与资源组 rg2 有包含故障转移委托的强正关联的命令。由于存在此关联关系,rg1 将故障转移或切换转移委托给 rg2。此例假定两个资源组都存在。
# scrgadm -c -g rg1 -y RG_affinities=+++rg2 |
您可以通过组合多个关联来创建更复杂的操作。例如,可以由相关的拷贝服务器来记录应用程序的状态。此例的节点选择要求如下:
拷贝服务器与应用程序必须在不同的节点上运行。
如果应用程序从其当前节点上进行故障转移,该应用程序应故障转移到拷贝服务器正在其上运行的节点上。
如果应用程序故障转移到拷贝服务器正在其上运行的节点上,则拷贝服务器必须故障转移到另一个节点上。如果没有其他节点可用,则拷贝服务器必须脱机。
按以下所示为应用程序和拷贝服务器配置资源组可以满足这些要求:
包含应用程序的资源组声明与包含拷贝服务器的资源组有弱正关联。
包含拷贝服务器的资源组声明与包含应用程序的资源组有强负关联。
此例说明了用于组合以下资源组之间的关联的命令。
资源组 app-rg 表示其状态由拷贝服务器跟踪的应用程序。
资源组 rep-rg 表示拷贝服务器。
在此例中,资源组声明了以下关联:
资源组 app-rg 声明与资源组 rep-rg 有弱正关联。
资源组 rep-rg 声明与资源组 app-rg 有强负关联。
此例假定两个资源组都存在。
# scrgadm -c -g app-rg RG_affinities=+rep-rg # scrgadm -c -g rep-rg RG_affinities=--app-rg |