OpenStack installieren
Wenn Sie schnell loslegen möchten, gehen Sie stattdessen hier:
Diese Antwort gibt einen genaueren Einblick in die Verwendung von Juju mit OpenStack.
Umfang
Die OpenStack-Plattform ist leistungsfähig und vielseitig einsetzbar. Dieser Abschnitt der Dokumentation befasst sich hauptsächlich mit der Bereitstellung eines "Standard" -Systems, auf dem OpenStack ausgeführt wird, unter Verwendung von Canonical-Komponenten wie MAAS, Juju und Ubuntu. Gegebenenfalls werden andere Methoden und Software erwähnt.
Annahmen
- Verwendung von MAAS - Befolgen Sie zuerst diese Anweisungen.
- Verwendung von Juju
- Lokale Netzwerkkonfiguration - In diesem Dokument wird davon ausgegangen, dass Sie über eine angemessene lokale Netzwerkkonfiguration verfügen, einschließlich separater Schnittstellen für den Zugriff auf die OpenStack-Cloud. Ideale Netzwerke sind in der [MAAS] [MAAS-Dokumentation für OpenStack] beschrieben.
Installation planen
Vor der Bereitstellung von Diensten ist es sehr nützlich, eine Bestandsaufnahme der verfügbaren Ressourcen und ihrer Verwendung vorzunehmen. OpenStack besteht aus einer Reihe von miteinander verbundenen Diensten (Nova, Swift usw.), die unterschiedliche Anforderungen an die Hosts stellen. Beispielsweise hat der Swift-Dienst, der Objektspeicher bereitstellt, eine andere Anforderung als der Nova-Dienst, der Rechenressourcen bereitstellt.
Die Mindestanforderungen für die einzelnen Dienste und Empfehlungen sind im offiziellen OpenStack-Betriebshandbuch aufgeführt
Die empfohlene Zusammensetzung der Knoten für die Bereitstellung von OpenStack mit MAAS und Juju ist, dass alle Knoten im System in der Lage sein sollten, JEDE der Dienste auszuführen . Dies ist eine bewährte Methode für die Robustheit des Systems. Da ein physischer Knoten ausfallen sollte, kann ein anderer als Ersatz für ihn verwendet werden. Dies gilt natürlich auch für Hardwareanforderungen wie zusätzliche Netzwerkschnittstellen.
Wenn Sie aus Gründen der Wirtschaftlichkeit oder aus anderen Gründen unterschiedliche Hardwarekonfigurationen verwenden, sollten Sie beachten, dass sich Ihre Fähigkeit zur Überwindung von Hardwarefehlern verringert. Es ist auch erforderlich, Bereitstellungen auf bestimmte Knoten auszurichten - siehe Abschnitt in der MAAS-Dokumentation zu Tags .
Erstellen Sie die OpenStack-Konfigurationsdatei
Wir werden Juju-Charms verwenden, um die Komponenten von OpenStack bereitzustellen. Jeder Charme umfasst alles, was zum Einrichten eines bestimmten Dienstes erforderlich ist. Die einzelnen Dienste verfügen jedoch über viele Konfigurationsoptionen, von denen wir einige ändern möchten.
Um diese Aufgabe einfacher und reproduzierbarer zu machen, erstellen wir eine separate Konfigurationsdatei mit den entsprechenden Optionen für alle Dienste. Dies ist in einem Standard-YAML-Format geschrieben ( siehe www.yaml.org, falls Ihnen dies nicht vertraut ist ).
Hier ist ein Beispiel für eine openstack-config.yaml:
keystone:
admin-password: openstack
debug: 'true'
log-level: DEBUG
nova-cloud-controller:
network-manager: 'Neutron'
quantum-security-groups: 'yes'
neutron-external-network: Public_Network
nova-compute:
enable-live-migration: 'True'
migration-auth-type: "none"
virt-type: kvm
#virt-type: lxc
enable-resize: 'True'
quantum-gateway:
ext-port: 'eth1'
plugin: ovs
glance:
ceph-osd-replication-count: 3
cinder:
block-device: None
ceph-osd-replication-count: 3
overwrite: "true"
glance-api-version: 2
ceph:
fsid: a51ce9ea-35cd-4639-9b5e-668625d3c1d8
monitor-secret: AQCk5+dR6NRDMRAAKUd3B8SdAD7jLJ5nbzxXXA==
osd-devices: /dev/sdb
osd-reformat: 'True'
Für alle Dienste können wir das so konfigurieren openstack-origin
, dass es auf eine Installationsquelle verweist. In diesem Fall verlassen wir uns auf den Standard, der auf die relevanten Quellen für das Ubuntu 14.04 LTS Trusty-Release verweist. Weitere Informationen zur Konfiguration der einzelnen Dienste finden Sie in diesem Dokument .
Andere Konfigurationen
Für die Bereitstellung der OpenStack-Dienste sind andere Einstellungen und Konfigurationsoptionen möglich. Diese sind in der Dokumentation der einzelnen von Juju verwendeten Charms detailliert aufgeführt. Sie können sie einsehen, indem Sie den Online-Juju-Charm-Store besuchen und über das Suchfeld oben links auf der Seite nach dem Charm suchen. Die Konfigurationseinstellungen werden dann unter "Konfiguration" auf der Hauptseite wie folgt aufgeführt:
OpenStack mit Juju bereitstellen
Nachdem die Konfiguration definiert wurde, können wir Juju verwenden, um die Dienste bereitzustellen und zu verknüpfen.
Initialisierung von Juju
Juju erfordert eine minimale Menge an Setup. In diesem Fall wird davon ausgegangen, dass es bereits für die Zusammenarbeit mit Ihrem MAAS-Cluster konfiguriert wurde (weitere Informationen hierzu finden Sie im [Juju-Installationshandbuch] [juju_install].
Erstens müssen wir Bilder und Werkzeuge abrufen, die Juju verwenden wird:
juju sync-tools --debug
Dann können wir die Bootstrap-Instanz erstellen:
juju bootstrap --upload-tools --debug
Wir verwenden den Upload-Tools-Schalter, um die lokalen Versionen der Tools zu verwenden, die wir gerade abgerufen haben. Der Debug-Schalter gibt eine ausführliche Ausgabe aus, die nützlich sein kann. Dieser Vorgang kann einige Minuten dauern, da Juju eine Instanz erstellt und die Tools installiert. Wenn es fertig ist, können Sie den Status des Systems mit dem folgenden Befehl überprüfen:
juju status
Dies sollte ungefähr so aussehen:
environment: maas
machines:
"0":
agent-state: started
agent-version: 1.18.1.1
dns-name: localhost
instance-id: localhost
series: trusty
Stellen Sie die OpenStack Charms bereit
Jetzt, da der Juju-Bootstrap-Knoten aktiv ist, können wir die Dienste bereitstellen, die für die OpenStack-Installation erforderlich sind. Um diese Dienste bei der Bereitstellung ordnungsgemäß zu konfigurieren, verwenden wir die zuvor definierte Konfigurationsdatei, indem wir sie --config
bei jedem Bereitstellungsbefehl zusammen mit dem Switch übergeben. Ersetzen Sie gegebenenfalls den Namen und den Pfad Ihrer Konfigurationsdatei.
Es ist nützlich, aber nicht unbedingt erforderlich, die Dienste in der unten angegebenen Reihenfolge bereitzustellen. Es wird außerdem dringend empfohlen, ein zusätzliches Terminalfenster zu öffnen und den Befehl auszuführen juju debug-log
. Dadurch werden die Protokolle aller ausgeführten Dienste ausgegeben. Dies kann bei der Fehlerbehebung hilfreich sein.
Es wird außerdem empfohlen, juju status
regelmäßig einen Befehl auszuführen , um zu überprüfen, ob die einzelnen Dienste installiert wurden und ordnungsgemäß ausgeführt werden. Juju wird automatisch versuchen, die bestmögliche Version des Charms aus dem Online Charm Store zu holen. Wenn Sie von einem eingeschränkten oder geschlossenen Netzwerk aus installieren, können Sie die erforderlichen Charms vorab abrufen. Siehe [die Dokumentation für Offline-Charms] [charms-offline].
juju deploy --to=0 juju-gui
juju deploy rabbitmq-server
juju deploy mysql
juju deploy --config openstack-config.yaml openstack-dashboard
juju deploy --config openstack-config.yaml keystone
juju deploy --config openstack-config.yaml ceph -n 3
juju deploy --config openstack-config.yaml nova-compute -n 3
juju deploy --config openstack-config.yaml quantum-gateway
juju deploy --config openstack-config.yaml cinder
juju deploy --config openstack-config.yaml nova-cloud-controller
juju deploy --config openstack-config.yaml glance
juju deploy --config openstack-config.yaml ceph-radosgw
Fügen Sie Beziehungen zwischen den OpenStack-Diensten hinzu
Obwohl die Dienste jetzt bereitgestellt werden, sind sie noch nicht miteinander verbunden. Jeder Dienst ist derzeit isoliert vorhanden. Wir verwenden den juju add-relation
Befehl, um sie voneinander in Kenntnis zu setzen und relevante Verbindungen und Protokolle einzurichten. Diese zusätzliche Konfiguration wird durch die individuellen Reize selbst erledigt.
Wir sollten damit beginnen, Beziehungen zwischen Charms hinzuzufügen, indem wir den Keystone-Autorisierungsdienst und seine Datenbank einrichten, da dies von vielen anderen Verbindungen benötigt wird:
juju add-relation keystone mysql
Wir warten, bis die Beziehung hergestellt ist. Nachdem es fertig ist, überprüfe es mit dem Juju-Status:
juju status mysql
juju status keystone
Es kann einige Momente dauern, bis sich dieser Service erledigt hat. Obwohl es durchaus möglich ist, weitere Relationen hinzuzufügen (Juju verwaltet eine Warteschlange für ausstehende Aktionen), kann dies in Bezug auf die Gesamtzeit kontraproduktiv sein, da sich viele Relationen auf dieselben Services beziehen.
Die folgenden Beziehungen müssen ebenfalls hergestellt werden:
juju add-relation nova-cloud-controller mysql
juju add-relation nova-cloud-controller rabbitmq-server
juju add-relation nova-cloud-controller glance
juju add-relation nova-cloud-controller keystone
juju add-relation nova-compute mysql
juju add-relation nova-compute rabbitmq-server
juju add-relation nova-compute glance
juju add-relation nova-compute nova-cloud-controller
juju add-relation glance mysql
juju add-relation glance keystone
juju add-relation cinder keystone
juju add-relation cinder mysql
juju add-relation cinder rabbitmq-server
juju add-relation cinder nova-cloud-controller
juju add-relation openstack-dashboard keystone
juju add-relation swift-proxy swift-storage
juju add-relation swift-proxy keystone
Schließlich sollte die Ausgabe des Juju-Status alle Beziehungen als vollständig anzeigen. Die OpenStack-Cloud wird jetzt ausgeführt, muss jedoch mit einigen zusätzlichen Komponenten gefüllt werden, bevor sie verwendet werden kann.