C.4. 障害からの回復と独立したサブツリー

ほとんどのエンタープライズ環境において、いずれかのサービスコンポーネントに障害があった場合にサービス障害から回復するには、通常サービス全体を再起動します。例えば、例C.6「サービス foo 障害からの通常の回復」 では、このサービス内に定義されたスクリプトのいずれかが失敗した場合、通常の手順としてはサービスの再起動 (又は、サービス回復ポリシーに応じて再配置や無効化) を行います。しかし、一部のケースではサービスの特定の部分が非クリティカルであると見なされる場合があるため、通常の回復を試行する前にサービスの適切な部分だけを再起動する必要がある場合があります。これを行うには、 __independent_subtree 属性を使用します。例えば、例C.7「__independent_subtree 属性を使用した foo サービス障害からの回復」 では、 __independent_subtree 属性を使用して以下の動作を実行します:
  • script:script_one が失敗すると、script:script_one、script:script_two、及び script:script_three を再起動します。
  • script:script_two が失敗すると、script:script_two のみを再起動します。
  • script:script_three が失敗すると、restart script:script_one、script:script_two、及び script:script_three を再起動します。
  • script:script_four が失敗すると、全サービスを再起動します。

例C.6 サービス foo 障害からの通常の回復

<service name="foo">
      <script name="script_one" ...>
          <script name="script_two" .../>
      </script>
      <script name="script_three" .../>
</service>

例C.7 __independent_subtree 属性を使用した foo サービス障害からの回復

<service name="foo">
      <script name="script_one" __independent_subtree="1" ...>
          <script name="script_two" __independent_subtree="1" .../>
          <script name="script_three" .../>
      </script>
      <script name="script_four" .../>
</service>
一部の状況では、サービスの 1 つのコンポーネントに障害があった場合、サービス全体ではなく、そのコンポーネントのみを無効にすることをお勧めします。これは、そのサービスの他のコンポーネントを使用する他のサービスに影響を与えないようにするためです。Red Hat Enterprise Linux 6.1 リリース以降でこれを行うには、独立したサブツリーを非クリティカルとして指定する __independent_subtree="2" 属性を使用します。

注記

単一参照のリソースにのみ非クリティカルのフラグを使用できます。この非クリティカルフラグは、リソースツリーの全レベルにある全リソースで機能しますが、サービスや仮想マシンの定義時はトップレベルでは使用しないことをお勧めします。
Red Hat Enterprise Linux 6.1 リリース以降、独立したサブツリー用にリソースツリー内でノード毎に最大再開始数と再開始期限をセットすることができます。これらの閾値をセットするには、以下の属性を使用します:
  • __max_restarts は、中断するまでに許容される再起動の最大回数を設定します。
  • __restart_expire_time で設定する秒数が経過すると、再起動は試行されなくなります。