GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Grundlegendes zu Affinitäts-/Anti-Affinitätsgruppenrichtlinien in OpenStack Mitaka

Der Nova-Dienst steuert, wo die Instanzen in der OpenStack-Cloud-Umgebung gestartet werden. Es bedeutet, der nova-Scheduler entscheidet, welcher Hypervisor eine bestimmte Instanz ausführt, und dieses Verhalten wird mithilfe von zwei Filtern (Affinitäts-/Anti-Affinitäts-Gruppenrichtlinien) gesteuert – nämlich ServerGroupAntiAffinityFilter und ServerGroupAffinityFilter . Der ServerGroupAffinityFilter ermöglicht einem Benutzer, eine Gruppe von Instanzen auf demselben Hypervisor/Host und ServerGroupAntiAffinityFilter auszuführen stellt sicher, dass alle angeforderten Instanzen auf verschiedenen Hypervisoren/Hosts gestartet werden.

Diese Filter sind standardmäßig in /etc/nova/nova.conf aktiviert wie unten gezeigt:

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

Falls Sie diese Filter nicht finden, bearbeiten Sie nova.conf , fügen Sie die obigen Zeilen hinzu und starten Sie nova-scheduler neu und nova-dirigent Dienste.

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

Hinweis :Neustart von nova-scheduler Der Dienst allein reicht bei einigen Versionen von OpenStack aus, aber bei OpenStack Mitaka muss ich nova-conductor neu starten auch Service.

Um mit diesen Filtern zu arbeiten, muss der Benutzer eine Servergruppe erstellen, der Gruppe eine Richtlinie zuweisen und dieser Gruppe Instanzen hinzufügen.

Hinweis :Die folgenden Befehle wurden beim OpenStack Mitaka-Setup ausgeführt.

Wie verwende ich die ServerGroupAffinityFilter-Richtlinie?

Schritt 1 :Erstellen Sie eine Servergruppe

# 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'] | [] | {} |
+--------------------------------------+--------------+------------------------- ---------+----------------------------------+---------------+---------+--------- -+

Stellen Sie sicher, dass die Gruppe mit dem folgenden Befehl erstellt wurde:

# 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'] | [] | {} |
+--------------------------------------+--------------+----------------------------------+----------------------------------+---------------+---------+----------+

Schritt 2 :Instanzen innerhalb der in Schritt 1 erstellten Gruppe starten

# 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

Suchen Sie nach –Hinweisgruppe Option mit Id der in Schritt 1 erstellten Gruppe. Außerdem fordert der obige Befehl 4 VMs mit –max an Option.

Schritt 3 :Überprüfen Sie, ob alle angeforderten VMs auf demselben Host gestartet wurden.

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"

Der obige Befehl besagt, dass alle VMs auf demselben Host gestartet wurden.

Lassen Sie uns nun mit der Anti-Affinitätsgruppenrichtlinie arbeiten .

Verwendung von ServerGroupAntiAffinityFilter Politik?

Verwenden von ServerGroupAntiAffinityFilter, der Benutzer kann dafür sorgen, dass die VMs auf unterschiedlichen Hypervisoren gestartet werden. Betrachten Sie beispielsweise die Situation, in der Sie nicht möchten, dass alle Ihre Dienste auf demselben Computer gehostet werden, da der Ausfall des Hostcomputers alle Ihre Dienste betrifft. Die Verwendung von ServerGroupAntiAffinityFilter stellt sicher, dass alle Ihre Dienste auf verschiedenen physischen Hosts gestört werden.

Schritt 1 :Gruppe mit Antiaffinitätsrichtlinie erstellen

# 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'] | [] | {} |
 +--------------------------------------+-------------------+----------------------------------+----------------------------------+--------------------+---------+----------+

Schritt 2 :Instanzen innerhalb der Anti-Affinitätsgruppe starten.

# 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

Achten Sie auf die –-Hinweisgruppe Option mit Id der in Schritt 1 erstellten Gruppe. Auch –max fordert 3 VMs an und es wird erwartet, dass alle auf verschiedenen Hosts gestartet werden.

Schritt 3 :Stellen Sie sicher, VMs werden auf verschiedenen Hosts/Hypervisoren gestartet.

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

Der obige Befehl bestätigt, dass alle drei VMs auf unterschiedlichen Hosts gestartet wurden.

Falls keine Ressourcen verfügbar sind, um Anti-Affinität zu befriedigen Richtlinie, dann nova boot Der Befehl schlägt mit der folgenden Fehlermeldung fehl:

# 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

Beispielausgabe:

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

Da mein Setup nur drei Compute-Hosts hat, kann der obige Befehl keine gültigen Hosts zum Starten einer neuen VM finden.


Linux
  1. YAML für Ansible verstehen

  2. Wie starte ich eine VM auf einem bestimmten Host/Rechenknoten in OpenStack Mitaka?

  3. Wenns verstehen?

  4. Mitglieder einer Gruppe in Linux auflisten

  5. Grundlegendes zu SELinux-Richtlinien in Linux

So erstellen Sie Affinitäts- und Anti-Affinitätsrichtlinien in OpenStack

Grundlegendes zu Linux-Dateiberechtigungen

Prozesse unter Linux verstehen

/etc/group-Datei verstehen

rsyslog-Aktionen verstehen

Grundlegende Dateiberechtigungen und Eigentumsrechte in Linux verstehen