6.2. Szenario 2: Erstellen einer Einfachen Overcloud mithilfe des CLI
Dieses Szenario erstellt eine OpenStack Platform Umgebung auf Ebene eines kleinen Unternehmens. Dieses Szenario besteht aus zwei Knoten in der Overcloud: einem Controller-Knoten und einem Compute-Knoten. Beide Rechner sind Bare-Metal Systeme, die IPMI für die Energieverwaltung benutzen. Dieses Szenario konzentriert sich auf die Befehlszeilentools, um die Fähigkeit des Directors zu demonstrieren, eine Red Hat Enterprise Linux OpenStack Platform Umgebung auf niedriger Produktionsebene zu erstellen, die zukünftig Compute-Knoten skalieren kann.
Arbeitsablauf
- Knoten-Definitionsvorlage erstellen und leere Knoten im Director registrieren
- Hardware aller Knoten überprüfen.
- Knoten manuell in Rollen taggen.
- Varianten erstellen und in Rollen taggen
- Heat-Vorlagen erstellen um das Externe Netzwerk zu isolieren.
- Overcloud-Umgebung mit dem Standardplan des Directors und den Isolationsvorlagen des Zusatznetzwerks erstellen
Anforderungen
- Der in Kapitel 3, Installieren der Undercloud erstellte Director-Knoten
- Zwei Bare-Metal Rechner. Diese Rechner müssen den Anforderungen entsprechen, die für Controller- und Compute-Knoten festgelegt sind. Mehr zu diesen Anforderungen unter:Diese Knoten benötigen kein Betriebssystem, da der Director ein Red Hat Enterprise Linux 7 Image zu jedem Knoten kopiert.
- Eine Netzwerkverbindung für Ihr Provisioning-Netzwerk, die als systemeigene VLAN konfiguriert ist. Alle Knoten müssen mit diesem Netzwerk verbunden sein und den in Abschnitt 2.3, »Netzwerkanforderungen« gesetzten Anforderungen entsprechen. Für dieses Beispiel benutzt man 192.0.2.0/24 als Provisioning-Subnetz mit den folgenden IP-Adresszuweisungen:
Tabelle 6.2. IP-Zuweisungen des Provisioning-Netzwerks
KnotennameIP-AdresseMAC-AdresseIPMI IP-AdresseDirector192.0.2.1aa:aa:aa:aa:aa:aaControllerDHCP definiertbb:bb:bb:bb:bb:bb192.0.2.205ComputeDHCP definiertcc:cc:cc:cc:cc:cc192.0.2.206 - Eine Netzwerkverbindung für Ihr Externes Netzwerk. Alle Knoten müssen mit diesem Netzwerk verbunden sein. Für dieses Beispiel benutzt man 10.1.1.0/24 für das Externe Netzwerk.
- Alle anderen Netzwerktypen benutzen das Provisioning-Netzwerk für OpenStack Dienste
6.2.1. Registrieren der Knoten für die Einfache Overcloud
In diesem Abschnitt wird eine Knoten-Definitionsvorlage erstellt. Diese Datei (
instackenv.json
) ist eine JSON Formatdatei und enthält die Hardware und Energieverwaltungsdetails für Ihre zwei Knoten. Zum Beispiel:
{ "nodes":[ { "mac":[ "bb:bb:bb:bb:bb:bb" ], "cpu":"4", "memory":"6144", "disk":"40", "arch":"x86_64", "pm_type":"pxe_ipmitool", "pm_user":"admin", "pm_password":"p@55w0rd!", "pm_addr":"192.0.2.205" }, { "mac":[ "cc:cc:cc:cc:cc:cc" ], "cpu":"4", "memory":"6144", "disk":"40", "arch":"x86_64", "pm_type":"pxe_ipmitool", "pm_user":"admin", "pm_password":"p@55w0rd!", "pm_addr":"192.0.2.206" } ] }
Diese Vorlage benutzt folgende Attribute
- mac
- Eine Liste von MAC-Adressen für die Netzwerkschnittstellen auf dem Knoten. Benutzen Sie nur die MAC-Adresse für den Provisioning NIC jedes Systems.
- cpu
- Die Anzahl der CPUs auf dem Knoten.
- Speicher
- Die Speichermenge in MB.
- Datenträger
- Die Größe der Festplatte in GB.
- arch
- Die Systemarchitektur
- pm_type
- Zu verwendender Energieverwaltungs-Driver. Dieses Beispiel benutzt den IPMI-Driver (
pxe_ipmitool
). - pm_user, pm_password
- IPMI-Benutzername und Passwort.
- pm_addr
- Die IP-Adresse des IPMI-Geräts.
Anmerkung
Weitere unterstützte Energieverwaltungstypen und deren Optionen finden Sie unter Anhang B, Energieverwaltungs-Driver.
Speichern Sie die Datei nach Erstellung der Vorlage im
stack
Home-Verzeichnis des Benutzers (/home/stack/instackenv.json
) und importieren Sie sie dann in den Director. Benutzen Sie dafür folgenden Befehl:
$ openstack baremetal import --json ~/instackenv.json
Das importiert die Vorlage und registriert jeden Knoten aus der Vorlage im Director.
Kernel und ramdisk Images allen Knoten zuweisen:
$ openstack baremetal configure boot
Die Knoten sind jetzt im Director registriert und konfiguriert. Mit folgendem Befehl wird Ihnen eine Liste dieser Knoten im CLI angezeigt:
$ openstack baremetal list
6.2.2. Prüfen der Knoten-Hardware
Nach Registrierung der Knoten überprüft man die Hardware-Attribute jedes Knotens. Führen Sie folgenden Befehl aus um die Hardwareattribute jedes Knotens zu überprüfen:
$ openstack baremetal introspection bulk start
Wichtig
Lassen Sie diesen Prozess bis zum Ende durchlaufen. Dieser Prozess dauert gewöhnlich 15 Minuten für Bare-Metal Knoten.
6.2.3. Manuelles Taggen der Knoten
Nach Registrierung und Überprüfung der Hardware jedes Knotens müssen sie in bestimmte Profile getaggt werden. Diese Profil-Tags sind mit den Varianten Ihrer Knoten abgestimmt und die Varianten sind wiederum einer Bereitstellungsrolle zugewiesen. Für das Einfache Bereitstellungsszenario taggt man die Knoten manuell, da es nur zwei gibt. Für eine größere Anzahl von Knoten, verwenden Sie die Tools zum Automated Health Check (AHC) im Erweiterten Bereitstellungsszenario. Weitere Details über die Tools zum Automated Health Check (AHC) unter Abschnitt 6.3.3, »Automatisches Knoten-Tagging mit Automated Health Check (AHC) Tools«.
Um einen Knoten manuell zu einem bestimmten Profil zu taggen, fügen Sie eine
profile
Option zum properties/capabilities
Parameter für jeden Knoten hinzu. Zum Beispiel können Sie mit folgendem Befehl Ihre beiden Knoten tagen jeweils ein Controller-Profil und ein Compute-Profil zu benutzen:
$ ironic node-update 58c3d07e-24f2-48a7-bbb6-6843f0e8ee13 add properties/capabilities='profile:compute,boot_option:local' $ ironic node-update 1a4e30da-b6dc-499d-ba87-0bd8a3819bc0 add properties/capabilities='profile:control,boot_option:local'
Das Hinzufügen der
profile:compute
und profile:control
Optionen taggt die zwei Knoten in die jeweiligen Profile.
Diese Befehle setzen auch den
boot_option:local
Parameter, der den Startmodus für jeden Knoten definiert.
6.2.4. Erstellen von Varianten für das Einfache Szenario
Der Director benötigt auch eine Reihe von Hardware-Profilen oder Varianten für die registrierten Knoten. In diesem Szenario wird ein Profil für den Compute und ein Profil für den Controller-Knoten erstellt.
$ openstack flavor create --id auto --ram 6144 --disk 40 --vcpus 4 control $ openstack flavor create --id auto --ram 6144 --disk 40 --vcpus 4 compute
Dies erstellt zwei Varianten für Ihre Knoten:
control
und compute
. Zudem werden auch die zusätzlichen Eigenschaften für jede Variante bestimmt.
$ openstack flavor set --property "cpu_arch"="x86_64" --property "capabilities:boot_option"="local" --property "capabilities:profile"="compute" compute $ openstack flavor set --property "cpu_arch"="x86_64" --property "capabilities:boot_option"="local" --property "capabilities:profile"="control" control
capabilities:boot_option
setzt den Startmodus für die Variante und capabilities:profile
bestimmt das zu verwendende Profil. Dies verknüpft mit demselben Tag auf dem jeweiligen Knoten gemäß Abschnitt 6.2.3, »Manuelles Taggen der Knoten«.
6.2.5. Isolieren des Externen Netzwerks
Der Director bietet Methoden um isolierte Overcloud-Netzwerke zu konfigurieren. Das bedeutet, dass die Overcloud-Umgebung Netzwerkdatenverkehrstypen auf verschiedene Netzwerke aufteilt, was wiederum Netzwerkdatenverkehr bestimmten Netzwerkschnittstellen oder Bonds zuweist. Nach dem Konfigurieren isolierter Netzwerke konfiguriert der Director die OpenStack Dienste darauf, isolierte Netzwerke zu benutzen. Wenn keine isolierten Netzwerke konfiguriert sind, laufen alle Dienste auf dem Provisioning-Netzwerk.
Dieses Szenario benutzt zwei separate Netzwerke:
- Netzwerk 1 - Provisioning-Netzwerk. Das Interne API, Speicher, Speicherverwaltung und auch Mandantennetzwerke verwenden dieses Netzwerk.
- Netzwerk 2 - Externes Netzwerk. Dieses Netzwerk verwendet eine dedizierte Schnittstelle zur Verbindung außerhalb der Overcloud.
Die folgenden Abschnitte zeigen, wie man Heat-Vorlagen erstellt um das Externe Netzwerk von den übrigen Diensten zu isolieren.
6.2.5.1. Erstellen von benutzerdefinierten Schnittstellenvorlagen
Die Netzwerkkonfiguration der Overcloud erfordert eine Reihe von Netzwerkschnittstellenvorlagen. Passen Sie diese Vorlagen an um die Knotenschnittstellen auf einer pro-Rolle-Basis zu konfigurieren. Diese Vorlagen sind Standard-Heat-Vorlagen im YAML Format (vgl. Kapitel 5, Heat-Vorlagen verstehen). Der Director enthält eine Reihe von Beispielvorlagen um Ihnen den Einstig zu erleichtern:
/usr/share/openstack-tripleo-heat-templates/network/config/single-nic-vlans
- Verzeichnis mit Vorlagen für einzelnen NIC mit VLANs Konfiguration auf pro-Rolle-Basis./usr/share/openstack-tripleo-heat-templates/network/config/bond-with-vlans
- Verzeichnis mit Vorlagen für verbundene NIC Konfiguration auf einer pro-Rolle-Basis.
Für das Einfache Overcloud-Szenario benutzt man die standardmäßige, einfache NIC-Beispielkonfiguration. Kopieren Sie das Standard-Konfiguationsverzeichnis in das
stack
Home-Verzeichnis des Benutzers als nic-configs
.
$ cp -r /usr/share/openstack-tripleo-heat-templates/network/config/single-nic-vlans ~/templates/nic-configs
Dies erstellt eine lokale Gruppe von Heat-Vorlagen, die eine einzelne Netzwerkschnittstellenkonfiguration definieren, welche das Externe Netzwerk benutzt. Jede Vorlage enthält Standard
parameters
, resources
und output
Abschnitte. Für Ihre Zwecke muss nur der resources
Abschnitt bearbeitet werden. Jeder resources
Abschnitt beginnt folgendermaßen:
resources: OsNetConfigImpl: type: OS::Heat::StructuredConfig properties: group: os-apply-config config: os_net_config: network_config:
Dies erstellt eine Anforderung für den
os-apply-config
Befehl und os-net-config
Sub-Befehl um die Netzwerkeigenschaften für einen Knoten zu konfigurieren. Der network_config
Abschnitt enthält Ihre benutzerdefinierte Schnittstellenkonfiguration, angeordnet in einer Typ-basierten Sequenz, die Folgendes beinhaltet:
- Schnittstelle
- Definiert eine einzelne Netzwerkschnittstelle. Die Konfiguration definiert jede Schnittstelle, indem sie entweder den eigentlichen Schnittstellennamen ("eth0", "eth1", "enp0s25") oder eine Reihe von nummerierten Schnittstellen ("nic1", "nic2", "nic3") verwendet.
- type: interface name: nic2
- vlan
- Definiert ein VLAN. Benutzen Sie VLAN-ID und Subnetz aus dem
parameters
Abschnitt.- type: vlan vlan_id: {get_param: ExternalNetworkVlanID} addresses: - ip_netmask: {get_param: ExternalIpSubnet}
- ovs_bond
- Definiert ein Bond in Open vSwitch. Ein Bond verbindet zwei oder mehrere
interfaces
miteinander um mit Redundanz zu helfen und die Bandbreite zu erhöhen.- type: ovs_bond name: bond1 members: - type: interface name: nic2 - type: interface name: nic3
- ovs_bridge
- Definiert eine Brücke in Open vSwitch. Eine Brücke verbindet mehrere
interface
,bond
undvlan
Objekte miteinander.- type: ovs_bridge name: {get_input: bridge_name} members: - type: ovs_bond name: bond1 members: - type: interface name: nic2 primary: true - type: interface name: nic3 - type: vlan device: bond1 vlan_id: {get_param: ExternalNetworkVlanID} addresses: - ip_netmask: {get_param: ExternalIpSubnet}
Unter Anhang D, Netzwerkschnittstellen-Parameter finden Sie eine vollständige Liste von Parametern für jedes dieser Elemente.
Ändern Sie für das Einfache Szenario jede Schnittstellen-Vorlage, um das Externe Netzwerk auf
nic2
zu verschieben. So wird sichergestellt, dass die zweite Netzwerkschnittstelle auf jedem Knoten für das Externe Netzwerk benutzt wird. Zum Beispiel bei der templates/nic-configs/controller.yaml
Vorlage:
network_config: - type: ovs_bridge name: {get_input: bridge_name} use_dhcp: true members: - type: interface name: nic1 # force the MAC address of the bridge to this interface primary: true - type: vlan vlan_id: {get_param: InternalApiNetworkVlanID} addresses: - ip_netmask: {get_param: InternalApiIpSubnet} - type: vlan vlan_id: {get_param: StorageNetworkVlanID} addresses: - ip_netmask: {get_param: StorageIpSubnet} - type: vlan vlan_id: {get_param: StorageMgmtNetworkVlanID} addresses: - ip_netmask: {get_param: StorageMgmtIpSubnet} - type: vlan vlan_id: {get_param: TenantNetworkVlanID} addresses: - ip_netmask: {get_param: TenantIpSubnet} - type: interface name: nic2 addresses: - ip_netmask: {get_param: ExternalIpSubnet} routes: - ip_netmask: 0.0.0.0/0 next_hop: {get_param: ExternalInterfaceDefaultRoute}
Das Beispiel oben erstellt eine neue Schnittstelle (
nic2
) und weist die Adressen und Routen des Externen Netzwerks der neuen Schnittstelle zu.
Weitere Beispiele für Vorlagen von Netzwerkschnittstellen finden Sie unter Anhang E, Beispiele für Netzwerkschnittstellenvorlagen.
Beachten Sie, dass viele dieser Parameter die
get_param
Funktion verwenden. Man definiert diese in einer Umgebungsdatei, die man speziell für Ihre Netzwerke erstellt.
Wichtig
Deaktivieren Sie unbenutzte Schnittstellen um ungewollte Standardrouten und Netzwerkschleifen zu vermeiden. Zum Beispiel:
- type: interface name: nic1 use_dhcp: true
Stellen Sie sicher, dass diese Schnittstellen aus allen Brücken entfernt sind.
6.2.5.2. Erstellen der Netzwerkumgebungs-Vorlage einer Einfachen Overcloud
Die Netzwerkumgebungsdatei beschreibt die Netzwerkumgebung der Overcloud und verweist auf die Netzwerkschnittstellen-Konfigurationsdateien des vorherigen Abschnitts. Man definiert die Subnetze für das Netzwerk mit IP-Adressbereichen und passt diese Werte der lokalen Umgebung an.
Dieses Szenario benutzt die folgende, als
/home/stack/templates/network-environment.yaml
gespeicherte Netzwerkumgebungsdatei:
resource_registry: OS::TripleO::BlockStorage::Net::SoftwareConfig: /home/stack/templates/nic-configs/cinder-storage.yaml OS::TripleO::Compute::Net::SoftwareConfig: /home/stack/templates/nic-configs/compute.yaml OS::TripleO::Controller::Net::SoftwareConfig: /home/stack/templates/nic-configs/controller.yaml OS::TripleO::ObjectStorage::Net::SoftwareConfig: /home/stack/templates/nic-configs/swift-storage.yaml OS::TripleO::CephStorage::Net::SoftwareConfig: /home/stack/templates/nic-configs/ceph-storage.yaml parameters: # Set to "br-ex" if using floating IPs on native VLAN on bridge br-ex Controller-1::NeutronExternalNetworkBridge: "''" parameter_defaults: ExternalNetCidr: 10.1.1.0/24 ExternalAllocationPools: [{'start': '10.1.1.2', 'end': '10.1.1.50'}] ExternalNetworkVlanID: 100 ExternalInterfaceDefaultRoute: 10.1.1.1
Der
resource_registry
Abschnitt enthält Links zu den Netzwerkschnittstellenvorlagen für jede Knotenrolle. Beachten Sie, dass der ExternalAllocationPools
Parameter nur einen kleinen Bereich von IP-Adressen definiert, damit man später einen separaten Bereich von floating IP-Adressen definieren kann.
Der
parameters
Abschnitt definiert die für floating IP-Adressen zu verwendende Brücke. Wenn floating IP-Adressen ein getaggtes VLAN benutzen, lassen Sie den Wert als einfache Anführungszeichen (vorgegeben als br-int
). Stellen Sie ihn ansonsten auf die vorgegebene externe Brücke, die normalerweise br-ex
ist.
Wichtig
Der
NeutronExternalNetworkBridge
Parameter erfordert das Controller-1::
Präfix und muss bei der Erstellung einer Plan-basierten Overcloud Teil des parameters
Abschnitts sein. Das liegt daran, dass der Plan seine Parameter auf eine bestimmte Weise verarbeitet. Bei der Erstellung einer benutzerdefinierten, auf Heat-Vorlagen basierten Overcloud, wie im Erweiterten Overcloud-Szenario, ist der Parameter NeutronExternalNetworkBridge
und im parameter_defaults
Abschnitt platziert. Diese Differenz können Sie unter Abschnitt 6.3.7.2, »Erstellen einer Netzwerkumgebungsdatei einer Erweiterten Overcloud « einsehen.
Der
parameter_defaults
Abschnitt enthält eine Liste von Parametern, die die Netzwerkoptionen für jeden Netzwerktyp definieren. Eine vollständige Referenz dieser Optionen finden Sie unter Anhang F, Netzwerkumgebungs-Optionen.
Dieses Szenario definiert nur die Optionen für das Externe Netzwerk. Alle anderen Datenverkehrstypen sind automatisch dem Provisioning-Netzwerk zugewiesen.
Wichtig
Eine Änderung der Netzwerkkonfiguration nach Erstellung der Overcloud kann aufgrund der Ressourcenverfügbarkeit zu Konfigurationsproblemen führen. Wenn ein Benutzer zum Beispiel den Subnetzbereich für ein Netzwerk in den Netzwerkisolationsvorlagen ändert, könnte die Neukonfiguration fehlschlagen, weil das Subnetz bereits benutzt wird.
6.2.6. Erstellen der Einfachen Overcloud
Als letzten Schritt zur Erstellung Ihrer OpenStack Umgebung müssen die notwendigen Befehle ausgeführt werden. Der Standardplan installiert einen Controller-Knoten und einen Compute-Knoten.
Prozedur 6.7. Erstellen der Overcloud
- Führen Sie folgenden Befehl aus um den Overcloud-Plan anzuzeigen:
$ openstack management plan list
Dies zeigt den Plan und seinen UUID an. Notieren Sie diesen UUID für den nächsten Schritt. - Führen Sie folgenden Befehl aus um die Erstellung der Einfachen Overcloud zu starten. Achten Sie darauf [UUID] mit dem UUID des vorherigen Schrittes zu ersetzen:
$ openstack overcloud deploy --plan "[UUID]" -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml -e /home/stack/network-environment.yaml --control-flavor control --compute-flavor compute
Dieser Befehl enthält folgende Zusatzoptionen:--plan
- Bestimmt, welcher Plan zur Erstellung der Overcloud benutzt werden soll. Dies ist immer der UUID des Overcloud-Plans.-e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml
- Die-e
Option fügt eine zusätzliche Umgebungsdatei zum Overcloud-Plan hinzu. In diesem Fall handelt es sich um eine Umgebungsdatei, die die Netzwerkisolations-Konfiguration initiiert.-e /home/stack/templates/network-environment.yaml
- Die-e
Option fügt eine zusätzliche Umgebungsdatei zum Overcloud-Plan hinzu. In diesem Fall handelt es sich um die Netzwerk-Umgebungsdatei, die Sie in Abschnitt 6.2.5.2, »Erstellen der Netzwerkumgebungs-Vorlage einer Einfachen Overcloud « erstellt haben.--control-flavor control
- Benutzen Sie eine spezielle Variante für die Controller-Knoten.--compute-flavor compute
- Benutzen Sie eine spezielle Variante für die Compute-Knoten.
Anmerkung
Um eine vollständige Liste anzuzeigen, führen Sie folgenden Befehl aus:
$ openstack help overcloud deploy
Unter Anhang G, Bereitstellungsparameter finden Sie Beispiele für Parameter.
Der Prozess zur Erstellung der Overcloud beginnt und der Director stellt Ihre Knoten bereit. Dieser Prozess dauert eine Weile. Um den Status der Overcloud-Erstellung sehen zu können, öffnen Sie ein separates Terminal als
stack
Benutzer und führen Sie folgenden Befehl aus:
$ source ~/stackrc # Initializes the stack user to use the CLI commands $ heat stack-list --show-nested
Der
heat stack-list --show-nested
Befehl zeigt die aktuelle Phase der Overcloud-Erstellung an.
Wichtig
Beachten Sie, dass die zur Overcloud hinzugefügten Umgebungsdateien die
-e
Option benutzen. Der Director benutzt diese Umgebungsdateien für bestimmte Funktionen in Kapitel 7, Aufgabenausführung nach Erstellung der Overcloud.
6.2.7. Zugriff auf die Einfache Overcloud
Der Director erzeugt eine Datei um Interaktionen mit Ihrer Overcloud von der Undercloud zu konfigurieren und zu authentifizieren. Der Director speichert diese Datei als
overcloudrc
im stack
Home-Verzeichnis Ihres Benutzers. Um diese Datei zu benutzen führen Sie folgenden Befehl aus:
$ source ~/overcloudrc
Dies lädt die notwendigen Umgebungsvariablen um mit Ihrer Overcloud vom CLI des Director Hosts zu interagieren. Um wieder mit dem Host des Directors zu interagieren, führen Sie folgenden Befehl aus:
$ source ~/stackrc
6.2.8. Fertigstellen der Einfachen Overcloud
Dies schließt die Erstellung der Einfachen Overcloud ab. Funktionen, die Sie nach der Erstellung benutzen können, finden Sie unter Kapitel 7, Aufgabenausführung nach Erstellung der Overcloud.