In den Organisationen, in denen das OpenStack wird aggressiv verwendet, sodass Anwendungs- und Datenbankteams in solchen Organisationen die Anforderung aufstellen können, dass ihre Anwendungs- und Datenbankinstanzen entweder auf denselben Rechenknoten gestartet werden müssen (Hypervisor) oder andere Rechenknoten.
Diese Anforderung wird in OpenStack also über Servergruppen erfüllt mit Affinität und Anti-Affinität Richtlinien. Die Servergruppe wird zur Steuerung von Affinitäts- und Anti-Affinitätsregeln für die Planung von Openstack-Instanzen verwendet.
Wenn wir versuchen, virtuelle Maschinen mit einer Affinitätsservergruppe bereitzustellen, werden alle virtuellen Maschinen auf demselben Rechenknoten gestartet. Wenn VMs mit einer Ameisen-Affinitäts-Servergruppe bereitgestellt werden, werden alle VMs auf verschiedenen Compute-Knoten gestartet. In diesem Artikel zeigen wir, wie man OpenStack-Servergruppen mit Affinitäts- und Anti-Affinitätsregeln erstellt.
Lassen Sie uns zunächst überprüfen, ob Ihr OpenStack-Setup Affinitäts- und Anti-Affinitätsrichtlinien unterstützt oder nicht, führen Sie den folgenden grep-Befehl von Ihren Controller-Knoten aus,
# grep -i "scheduler_default_filters" /etc/nova/nova.conf
Die Ausgabe sollte in etwa so aussehen,
Wie wir sehen können, sind Affinity- und Ant-Affinity-Filter aktiviert, aber falls diese nicht aktiviert sind, fügen Sie diese Filter in /etc/nova/nova.conf hinzu Datei der Controller-Knoten unter „scheduler_default_filters ” Parameter.
# vi /etc/nova/nova.conf ……………… scheduler_default_filters=xx,xxx,xxx,xxxxx,xxxx,xxx,xxx,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter,xx,xxx,xxxx,xx ………………
Speichern und beenden Sie die Datei
Um die obigen Änderungen am Effekt vorzunehmen, starten Sie die folgenden Dienste neu
# systemctl restart openstack-nova-scheduler # systemctl restart openstack-nova-conductor
Lassen Sie uns nun OpenStack-Servergruppen mit Affinitäts- und Anti-Affinitätsrichtlinien erstellen
Servergruppe mit Affinitätsrichtlinie
Um eine Servergruppe mit dem Namen „app“ für die Affinitätsrichtlinie zu erstellen, führen Sie den folgenden openstack-Befehl vom Controller-Knoten aus,
Syntax:
# openstack server group create –policy affinity
Oder
# nova server-group-create
Hinweis: Bevor Sie mit der Ausführung des openstack-Befehls beginnen, vergewissern Sie sich bitte, dass Sie die Projektanmeldedatei als Quelle verwenden, in meinem Fall ist die Projektanmeldedatei „openrc ”
Beispiel:
# source openrc # openstack server group create --policy affinity app
Servergruppe mit Anti-Affinitätsrichtlinie
Um eine Servergruppe mit Anti-Affinitätsrichtlinie zu erstellen, führen Sie den folgenden openstack-Befehl vom Controller-Knoten aus, ich gehe davon aus, dass der Name der Servergruppe „Datenbank“ ist
Syntax:
# openstack server group create –policy anti-affinity
Oder
# nova server-group-create
Beispiel:
# source openrc # openstack server group create --policy anti-affinity database
ID und Richtlinien der Servergruppe auflisten
Führen Sie entweder den nova-Befehl oder den Openstack-Befehl aus, um die ID der Servergruppe und ihre Richtlinien abzurufen
# nova server-group-list | grep -Ei "Policies|database" Or # openstack server group list --long | grep -Ei "Policies|app|database"
Die Ausgabe wäre so etwas wie unten,
Starten Sie virtuelle Maschinen (VMs) mit Affinitätsrichtlinie
Angenommen, wir möchten 4 VMs mit Affinitätsrichtlinie starten, führen Sie die folgende „openstack server create ” Befehl
Syntax:
# openstack server create –image
Beispiel:
# openstack server create --image Cirros --flavor m1.small --security-group default --nic net-id=37b9ab9a-f198-4db1-a5d6-5789b05bfb4c --hint group="a9847c7f-b7c2-4751-9c9a-03b117e704ff" --max 4 affinity-test
Ausgabe des obigen Befehls,
Lassen Sie uns überprüfen, ob VMs auf demselben Rechenknoten gestartet werden oder nicht, führen Sie den folgenden Befehl aus
# openstack server list --long -c Name -c Status -c Host -c "Power State" | grep -i affinity-test
Dies bestätigt, dass unsere Affinitätsrichtlinie gut funktioniert, da alle VMs auf demselben Rechenknoten gestartet werden.
Lassen Sie uns nun die Anti-Affinitätsrichtlinie testen
Starten Sie virtuelle Maschinen (VMs) mit Anti-Affinitätsrichtlinie
Für die Anti-Affinitätsrichtlinie werden wir 4 VMs starten. Im obigen Befehl „openstack server create“ müssen wir die ID der Anti-Affinitätsservergruppe ersetzen. In unserem Fall verwenden wir die Gruppen-ID des Datenbankservers.
Führen Sie den folgenden Openstack-Befehl aus, um 4 VMs auf verschiedenen Computern mit Anti-Affinitätsrichtlinie zu starten,
# openstack server create --image Cirros --flavor m1.small --security-group default --nic net-id=37b9ab9a-f198-4db1-a5d6-5789b05bfb4c --hint group="498fd41b-8a8a-497a-afd8-bc361da2d74e" --max 4 anti-affinity-test
Ausgabe
Verwenden Sie den folgenden Openstack-Befehl, um zu überprüfen, ob VMs auf verschiedenen Rechenknoten gestartet werden oder nicht
# openstack server list --long -c Name -c Status -c Host -c "Power State" | grep -i anti-affinity-test
Die obige Ausgabe bestätigt, dass unsere Anti-Affinitätsrichtlinie ebenfalls gut funktioniert.
Hinweis: Das Standardkontingent für die Servergruppe beträgt 10 für jeden Mandanten. Dies bedeutet, dass Sie bis zu 10 Servergruppen innerhalb des Projekts erstellen können, die mehr als 10 VMs steuern können.
Verwenden Sie den folgenden Befehl, um das Servergruppenkontingent für einen bestimmten Mandanten anzuzeigen, und ersetzen Sie die Mandanten-ID, die zu Ihrem Setup passt
# openstack quota show f6852d73eaee497a8a640757fe02b785 | grep -i server_group | server_group_members | 10 | | server_groups | 10 | #
Führen Sie zum Aktualisieren der Servergruppenquote die folgenden Befehle aus
# nova quota-update --server-group-members 15 f6852d73eaee497a8a640757fe02b785 # nova quota-update --server-groups 15 f6852d73eaee497a8a640757fe02b785
Führen Sie nun den openstack-Kontingentbefehl erneut aus, um das Kontingent der Servergruppe zu überprüfen
# openstack quota show f6852d73eaee497a8a640757fe02b785 | grep -i server_group | server_group_members | 15 | | server_groups | 15 | #
Das ist alles, wir haben das Kontingent der Servergruppe für den Mandanten erfolgreich aktualisiert. Auch dies schließt den Artikel ab, bitte zögern Sie nicht, ihn mit Ihren Technikfreunden zu teilen.