あるリソースグループによって表されるサービスが 2 つ目のリソースグループ内のサービスに強く依存しすぎているために、両方のサービスを同じノード上で実行しなければならないことがあります。たとえば、互いに依存する複数のサービスデーモンで構成されているアプリケーションでは、すべてデーモンを同じノード上で実行することが必要な場合があります。
このような状況では、依存するサービスのリソースグループがもう一方のサービスのリソースグループと共用関係を持つように強制します。リソースグループの別のリソースグループとの共用関係を適用するには、そのリソースグループ上で、ほかのリソースグループに対する強い肯定的なアフィニティーを宣言します。
# clresourcegroup set|create -p RG_affinities=++target-rg source-rg
強い肯定的なアフィニティーのソースであるリソースグループを指定します。このリソースグループは、別のリソースグループに対する強い肯定的なアフィニティーを宣言している場所のリソースグループです。
強い肯定的なアフィニティーのターゲットであるリソースグループを指定します。このリソースグループは、強い肯定的なアフィニティーを宣言している相手のリソースグループです。
リソースグループは、強い肯定的なアフィニティーを持っている相手のリソースグループに追従します。ターゲットリソースグループが別のノードに再配置された場合、ソースリソースグループは、ターゲットと同じノードに自動的に切り替えられます。ただし、強い肯定的なアフィニティーを宣言しているリソースグループが、そのアフィニティーのターゲットがまだ実行されていないノードにフェイルオーバーすることは妨げられます。
たとえば、リソースグループ rg1 が、リソースグループ rg2 に対する強い肯定的なアフィニティーを宣言しているとします。rg2 が別のノードにフェイルオーバーした場合は、rg1 もそのノードにフェイルオーバーします。このフェイルオーバーは、rg1 内のすべてのリソースが動作中であっても実行されます。ただし、rg1 内のリソースが rg1 を rg2 が実行されていないノードにフェイルオーバーしようとした場合、この試みはブロックされます。
強い肯定的なアフィニティーのターゲットをオンラインにしたとき、その強い肯定的なアフィニティーのソースは、すべてのノード上でオフラインである可能性があります。この状況では、その強い肯定的なアフィニティーのソースは、ターゲットと同じノード上で自動的にオンラインになります。
たとえば、リソースグループ rg1 が、リソースグループ rg2 に対する強い肯定的なアフィニティーを宣言しているとします。両方のリソースグループは最初、すべてのノード上でオフラインです。管理者があるノード上で rg2 をオンラインにした場合、rg1 は同じノード上で自動的にオンラインになります。
clresourcegroup suspend コマンドを使用すると、強いアフィニティーまたはクラスタ再構成のために、リソースグループが自動的にオンラインになることを回避できます。
強い肯定的なアフィニティーを宣言しているリソースグループをフェイルオーバーできるようにする必要がある場合は、フェイルオーバーを委託する必要があります。詳細は、リソースグループのフェイルオーバーまたはスイッチオーバーの委託を参照してください。
使用例 2-48 リソースグループの別のリソースグループとの共用関係の適用この例では、リソースグループ rg1 を、リソースグループ rg2 に対する強い肯定的なアフィニティーを宣言するように変更するためのコマンドを示します。このアフィニティー関係の結果として、rg1 は、rg2 が実行されているノード上でのみオンラインになります。この例では、両方のリソースグループが存在すると仮定します。
# clresourcegroup set -p RG_affinities=++rg2 rg1