C.4. Récupération de défaillance et sous-arbres indépendants

Dans la plupart des environnements d'entreprise, le déroulement habituel de la récupération d'un service après une défaillance est d'effectuer un redémarrage complet du service si l'un des composants du service échoue. Par exemple, dans Exemple C.6, « Récupération normale après défaillance du service foo », si l'un des scripts défini dans ce service échoue, le déroulement habituel est de redémarrer (ou de transférer ou désactiver, selon la politique de restauration du service) le service. Cependant, sous certaines circonstances, des parties du services peuvent être considérées comme non-critiques ; il peut se révéler nécessaire de ne redémarrer qu'une partie du service en place avant de tenter une récupération normale. Pour effectuer ceci, vous pouvez utiliser l'attribut __independent_subtree. Par exemple, dans l'Exemple C.7, « Récupération après défaillance du service foo avec l'attribut __independent_subtree », l'attribut __independent_subtree est utilisé afin d'effectuer les actions suivantes :
  • Si script:script_one échoue, redémarrez script:script_one, script:script_two, et script:script_three.
  • Si script:script_two échoue, redémarrez script:script_two uniquement­.
  • Si script:script_three échoue, redémarrez restart script:script_one, script:script_two, et script:script_three.
  • Si script:script_four échoue, redémarrez la totalité du service.

Exemple C.6. Récupération normale après défaillance du service foo

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

Exemple C.7. Récupération après défaillance du service foo avec l'attribut __independent_subtree

<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>
Dans certaines circonstances, si le composant d'un service échoue, vous devriez désactiver ce composant uniquement, sans désactiver le service entier afin d'éviter que d'autres services utilisant d'autres composants de ce service soient affectés. À partir de Red Hat Enterprise Linux 6.1, ceci peut être accompli en utilisant l'attribut __independent_subtree="2", qui désigne le sous-arbre indépendant comme étant non-critique.

Note

Vous pouvez utiliser l'indicateur non-critique sur les ressources à référence unique uniquement. L'indicateur non-critique fonctionne avec toutes les ressources à tous les niveaux de l'arborescence des ressources, mais ne devrait pas être utilisé au niveau le plus haut lors de la définition des services ou des machines virtuelles.
À partir de la version 6.1 de Red Hat Enterprise Linux, vous pouvez définir maximum restart et les expirations restart sur une base par nœud dans l'arborescence des ressources des sous-arbres indépendants. Pour définir ces limites, vous pouvez utiliser les attributs suivants :
  • __max_restarts configure le nombre maximum de redémarrages tolérés avant d'abandonner.
  • __restart_expire_time configure le temps, en secondes, à partir duquel un redémarrage n'est plus tenté.