Comment utiliser les groupes d'affinité et d'anti-affinité ?

L’usage de l’affinité et de l’anti-affinité de serveurs est une bonne pratique à utiliser chez Cloudwatt pour atteindre un niveau d’architecture “designed for failure”.

Les fonctionnalités d’affinité d’anti-affinité de serveurs

OpenStack offre la possibilité de guider la répartition judicieuse des VMs sur un ou plusieurs hyperviseurs :

  • affinité : la “policy” veille à lancer toutes les VMs sur un même hyperviseur (limite le transit réseau entre hyperviseurs)
  • anti-affinité : la “policy” démarrera les VMs sur des hyperviseurs différents (améliore la résilience).

Les groupes de serveurs

Un groupe de serveurs ou server-group est utilisé pour rassembler toutes les VMs sur lesquelles il faudra appliquer une même policy (affinity ou anti-affinity). L’entité est initialement vide, puis les nouvelles VMs sont successivement lancées en spécifiant le groupe ad-hoc.

A noter qu’il n’est pas possible d’ajouter une instance existante à un groupe ni de retirer une VM d’un groupe. Dans ce cas, la solution consiste à supprimer l’instance et la recréer sans appartenance à un groupe.

La figure 1. représente quatre groupes : deux d’affinité et deux d’anti-affinité.

01

Création d’un groupe de serveurs

Avec nova-client:

nova server-group-create <group_name> [< policy >]

    < group_name >: nom du groupe de serveurs
    < policy >: policy du groupe de serveurs ("affinity" ou "anti-affinity")

Exemple:

nova server-group-create anti-group1 anti-affinity

Liste des groupes de serveurs

Avec nova-client:

nova server-group-list

Détails d’un groupe de serveurs

Avec nova-client:

nova server-group-get <group_id>

est l'ID du groupe de serveurs

Supprimer un groupe de serveurs

Avec nova-client:

nova server-group-delete <group_id>

est l'ID of the ServerGroup

Créer une instance dans un groupe de serveurs

Il s’agit d’ajouter l’ID de groupe avec l’option hint au sein de la commande nova boot.

Avec nova-client :

        --hint group=<group_id>

Exemple:

nova boot --image "Debian Wheezy" --flavor s1.cw.small-1 --hint group=aa8a62f4-b567-47c6-a28c-2934a8c7959c instance1

Notes

  • Supprimer un groupe de serveurs ne supprimera pas les instances qui en font partie.
  • Il est possible de vérifier la bonne application des “policies” en regardant le “hostId” après un nova show .

Attention : un même hyperviseur pourra avoir un hostId différent vu de deux tenants différents.

  • L’usage des politiques d’affinité et anti-affinité est limité par les ressources disponibles. En cas d’espace insuffisant sur l’hyperviseur ou sur l’agrégat, nova remontera une erreur “No valid host was found”.