GNU/Linux >> Tutoriels Linux >  >> Linux

Comprendre les stratégies de groupe d'affinité/anti-affinité dans OpenStack Mitaka

Le service Nova contrôle l'endroit où les instances sont démarrées dans l'environnement cloud OpenStack. Cela signifie, le nova-scheduler décide quel hyperviseur exécutera une instance particulière et ce comportement est contrôlé à l'aide de deux filtres (stratégies de groupe d'affinité/anti-affinité), à savoir ServerGroupAntiAffinityFilter et ServerGroupAffinityFilter . Le ServerGroupAffinityFilter permet à un utilisateur d'exécuter un groupe d'instances sur le même hyperviseur/hôte et ServerGroupAntiAffinityFilter s'assurera que toutes les instances demandées sont démarrées sur différents hypevisors/hosts.

Ces filtres sont activés par défaut dans /etc/nova/nova.conf comme indiqué ci-dessous :

scheduler_driver_task_period = 60
scheduler_driver = nova.scheduler.filter_scheduler.FilterScheduler
scheduler_available_filters = nova.scheduler.filters.all_filters
scheduler_default_filters = RetryFilter, AvailabilityZoneFilter, RamFilter, ComputeFilter, ComputeCapabilitiesFilter, ImagePropertiesFilter, ServerGroupAntiAffinityFilter, ServerGroupAffinityFilter

Au cas où, si vous ne trouvez pas ces filtres, modifiez nova.conf , ajoutez les lignes ci-dessus et redémarrez nova-scheduler et nova-conducteur services.

# /etc/init.d/nova-scheduler restart
# /etc/init.d/nova-conductor restart

Remarque  :Redémarrage de nova-scheduler service seul suffit sur certaines versions d'OpenStack, mais dans OpenStack Mitaka, je dois redémarrer nova-conductor service également.

Pour travailler avec ces filtres, l'utilisateur doit créer un groupe de serveurs, attribuer une stratégie au groupe et ajouter des instances à ce groupe.

Remarque  :Les commandes ci-dessous ont été exécutées sur la configuration d'OpenStack Mitaka.

Comment utiliser la politique ServerGroupAffinityFilter ?

Étape 1 :Créer un groupe de serveurs

# nova server-group-create <Group_Name> affinity
# nova server-group-create affinityHost affinity
+--------------------------------------+--------------+------------------------- ---------+----------------------------------+---------------+---------+--------- -+
| Id | Name | Project Id | User Id | Policies | Members | Metadata |
+--------------------------------------+--------------+------------------------- ---------+----------------------------------+---------------+---------+--------- -+
| 565948b0-076e-4de0-97dd-11d58862b64e | affinityHost | 9563fa5bb6dd479aa9f18048 cd35ca36 | d4053faa2c374045bd37d96ccb7f1b6c | [u'affinity'] | [] | {} |
+--------------------------------------+--------------+------------------------- ---------+----------------------------------+---------------+---------+--------- -+

Assurez-vous que le groupe est créé à l'aide de la commande ci-dessous :

# nova server-group-get 565948b0-076e-4de0-97dd-11d58862b64e
+--------------------------------------+--------------+----------------------------------+----------------------------------+---------------+---------+----------+
| Id | Name | Project Id | User Id | Policies | Members | Metadata |
+--------------------------------------+--------------+----------------------------------+----------------------------------+---------------+---------+----------+
| 565948b0-076e-4de0-97dd-11d58862b64e | affinityHost | 9563fa5bb6dd479aa9f18048cd35ca36 | d4053faa2c374045bd37d96ccb7f1b6c | [u'affinity'] | [] | {} |
+--------------------------------------+--------------+----------------------------------+----------------------------------+---------------+---------+----------+

Étape 2  :lancer des instances au sein du groupe créé à l'étape 1

# nova boot --flavor 1 --image cirros --security-groups default --nic net-id=9381abae-e0c5-4844-b605-da6b04ce9a36 --hint group=565948b0-076e-4de0-97dd-11d58862b64e --max 4 affinityVM

Recherchez –groupe d'indices option avec Id du groupe créé à l'étape 1. En outre, la commande ci-dessus demande 4 VM à l'aide de –max option.

Étape 3 :Vérifiez si toutes les VM demandées sont lancées sur le même hôte.

for i in `seq 1 4`
 > do
 > openstack server show affinityVM-${i} -c hostId -f shell
 > done
 hostid="1148bff316258766a721cef177307ce597d80b0e2d95b7603bbfb16d"
 hostid="1148bff316258766a721cef177307ce597d80b0e2d95b7603bbfb16d"
 hostid="1148bff316258766a721cef177307ce597d80b0e2d95b7603bbfb16d"
 hostid="1148bff316258766a721cef177307ce597d80b0e2d95b7603bbfb16d"

La commande ci-dessus indique que toutes les machines virtuelles ont été démarrées sur le même hôte.

Travaillons maintenant avec la règle de groupe anti-affinité .

Comment utiliser ServerGroupAntiAffinityFilter politique ?

Utilisation de ServerGroupAntiAffinityFilter, l'utilisateur peut s'assurer que les VM sont démarrées sur différents hyperviseurs. Par exemple, considérez la situation où vous ne voulez pas que tous vos services soient hébergés sur la même machine, car la défaillance de la machine hôte affectera tous vos services. L'utilisation de ServerGroupAntiAffinityFilter garantit que tous vos services sont perturbés dans différents hôtes physiques.

Étape 1  : Créer un groupe avec une règle d'anti-affinité

# nova server-group-create anti-affinityHost anti-affinity
 +--------------------------------------+-------------------+----------------------------------+----------------------------------+--------------------+---------+----------+
 | Id | Name | Project Id | User Id | Policies | Members | Metadata |
 +--------------------------------------+-------------------+----------------------------------+----------------------------------+--------------------+---------+----------+
 | a1c8220a-275f-4ff1-8ce1-6fbb54f7cf46 | anti-affinityHost | 9563fa5bb6dd479aa9f18048cd35ca36 | d4053faa2c374045bd37d96ccb7f1b6c | [u'anti-affinity'] | [] | {} |
 +--------------------------------------+-------------------+----------------------------------+----------------------------------+--------------------+---------+----------+

Étape 2  :lancez des instances au sein du groupe d'anti-affinité.

# nova boot --flavor 1 --image cirros --security-groups default --nic net-id=9381abae-e0c5-4844-b605-da6b04ce9a36 --hint group=a1c8220a-275f-4ff1-8ce1-6fbb54f7cf46 --max 3 anti-affinityVM

Recherchez –-groupe d'indices option avec identifiant du groupe créé à l'étape 1. En outre, –max demande 3 machines virtuelles et toutes devraient être lancées sur des hôtes différents.

Étape 3  :Vérifiez que les VM sont démarrées sur différents hôtes/hyperviseurs.

# for i in `seq 1 3`; do openstack server show anti-affinityVM-${i} -c hostId -f shell; done
 hostid="09fac9c46a3dc5f6219e2af3e3a7da6dad7de843cfba7d8d4feb9054"
 hostid="1148bff316258766a721cef177307ce597d80b0e2d95b7603bbfb16d"
 hostid="4e488190b3d18a501dd719c051771636b6f73f6fd292f00e8622b185"

La commande ci-dessus confirme que les trois machines virtuelles ont été démarrées sur des hôtes différents.

Au cas où, s'il n'y a pas de ressources disponibles pour satisfaire l'anti-affinité stratégie, puis nova boot la commande échouera avec le message d'erreur ci-dessous :

# nova boot --flavor 1 --image cirros --security-groups default --nic net-id=9381abae-e0c5-4844-b605-da6b04ce9a36 --hint group=a1c8220a-275f-4ff1-8ce1-6fbb54f7cf46 anti-affinityVM

Exemple de résultat :

"No valid host was found. There are not enough hosts available."

Comme ma configuration n'a que trois hôtes de calcul, la commande ci-dessus est incapable de trouver des hôtes valides pour démarrer une nouvelle machine virtuelle.


Linux
  1. Comprendre le bureau Linux ?

  2. Gestion des politiques de mot de passe

  3. Comprendre l'utilitaire logrotate

  4. Comprendre les politiques SELinux sous Linux

  5. Comprendre les privilèges MySQL

Comment créer une politique d'affinité et d'anti-affinité dans OpenStack

Comprendre les autorisations de fichiers Linux

Comprendre les processus sous Linux

Comprendre le fichier /etc/group

Comprendre les autorisations de fichiers de base et la propriété sous Linux

/etc/passwd affiche l'utilisateur dans un groupe, mais /etc/group ne le fait pas