Dies ist ein vollständiges Tutorial zur Installation von OpenStack (minimale Konfiguration). Ich würde sehr gerne Open-Source-Cloud-Betriebssystem versuchen, und Openstack ist eine der ernsthaften Lösungen, von vielen Institutionen und Unternehmen verwendet. Cern ist einer unter den Nutzern, und Red Hat ist ein starker Befürworter von Openstack.
Seien Sie sich bewusst: Selbst nach diesem „ausgebügelten“ Tutorial werden Sie mit Fehlern begrüßt, nachdem Sie alles eingerichtet haben, und Sie müssen mehr recherchieren, damit Ihr OpenStack einwandfrei funktioniert. Ich werde über einige der Probleme in ein paar weiteren Kurzanleitungen schreiben.
OpenStack hat auch den Ruf, kompliziert zu installieren und zu warten und nicht sehr stabil zu sein. Ich habe viel über das OpenStack-Thema gelesen, viel Dokumentation durchgesehen und dies ist das Ergebnis. Dies wird die manuelle Installation dieser Version abdecken, und diese umfangreiche Serie wird jede Komponente der minimalen OpenStack-Installation abdecken (lassen Sie sich von diesem Minimum nicht täuschen, es gibt viel zu tun).
Es gibt einige Unterschiede zwischen der offiziellen OpenStack-Dokumentation und der Bereitstellung selbst, daher sollte Ihnen dieses Tutorial auch dabei helfen, unzählige Stunden der Suche nach Fehlern und der Entschlüsselung von Fehlern zu sparen.
Das Verfahren ist mühsam, aber ich würde es sehr empfehlen, da Sie am Ende die Grundprinzipien von OpenStack gut verstehen werden.
Nächstes Mal mehr zum Thema, lasst uns an die Arbeit gehen.
Es gibt eine Lernkurve, und nach dem, was ich gelesen habe, glaube ich, dass OpenStack derzeit eine stabile Lösung für Ihre Cloud-Anforderungen ist.
Aber, wir werden auf dem Weg sehen, lasst uns eintauchen.
Voraussetzungen
Ich werde CentOS 7 für meine Installationen verwenden (v.1908). Ich werde mein LABOR in VMware Fusion / Workstation erstellen. Die Erstinstallation von CentOS ist ohne GUI oder Zusätze minimal.
Alle meine VMs haben 4CPU-Kerne und 8 GB RAM mit mindestens 120 GB Festplatte.Mindestanforderungen finden Sie hier – https://docs.openstack.org/install-guide/overview.html
Beachten Sie die zusätzlichen Anforderungen von Netzwerk- und Antriebskomponenten und fügen Sie sie entsprechend Ihrem LABOR hinzu.
Mein LABOR hat Internetzugang.
Ich werde die OpenStack–Dokumentation auf dem Weg verfolgen – https://docs.openstack.org/install-guide/common/conventions.html
Ich werde den Build installieren, der der aktuelle ist. Ich werde mit Controller Node 1 und Compute Node 1 beginnen.
Provider-Netzwerk wird wie folgt sein (Sie benötigen Internetzugang für diese Konfiguration):
10.0.0.1/24 – Gateway
10.0.0.11/24 – Controller-Knoten 1
10.0.0.31/24 – Rechenknoten 1
10.0.0.41/24 – Blockspeicherknoten 1
10.0.0.51/24 – Objektspeicherknoten 1
10.0.0.52/24 – Objektspeicherknoten 2
Ich werde später auch ein Netzwerk im Bereich 203.0.113.0/ 24 erstellen, das ein Verwaltungsnetzwerk sein wird.
Hier sind auch die Namen und IP-Adressen der Maschinen (Sie werden sie auch in der Hosts-Datei benötigen):
10.0.0.11 controller
10.0.0.31 compute1
10.0.0.41 block1
10.0.0.51 object1
10.0.0.52 object2
Ändern Sie den Hostnamen der Maschine
Ändern Sie für jede Maschine im Labor den Hostnamen. Ich werde meine Hostnamen in die Namen ändern, die ich direkt darüber angegeben habe.
Befehl ist unten, Controller ist der Name einer der Maschinen, ändern Sie es zu dem, was Sie für richtig halten.
sudo hostnamectl set-hostname controller
So sieht die Änderung nach dem Neustart aus.
Ich habe meine Maschinen benannt – controller, compute1, block1, object1, object2.
Konfigurieren Sie die Namensauflösung
Bearbeiten Sie Ihre Netzwerkschnittstelle in /etc/sysconfig/network-scripts
In meinem Fall habe ich die Schnittstelle ifcfg-ens33
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
Ich habe folgende Zeilen bearbeitet (Controller-Maschinenbeispiel):
BOOTPROTO=noneIPADDR=10.0.0.11PREFIX=24GATEWAY=10.0.0.1DNS1=10.0.0.1DNS2=8.8.8.8ONBOOT=yesIPV6INIT=no
Hier so sieht es aus
Starten Sie den Computer neu, nachdem Sie die IP-Konfiguration festgelegt haben. Wiederholen Sie diese Schritte für alle Maschinen im Labor (natürlich unterschiedliche IP-Adresse für jeden).
CentOS-Installation aktualisieren
Bevor wir fortfahren, werden wir unsere CentOS-Installationen aktualisieren. Auf diese Weise bestätigen wir auch unsere Internetverbindung.
sudo yum update -y
Hosts-Datei bearbeiten
Auch das müssen wir auf jedem Rechner machen. Wir werden Hosts-Datei bearbeiten, so dass Maschinen können sie durch den Namen sehen.
sudo vi /etc/hosts/
Das müssen wir eingeben
10.0.0.11 controller10.0.0.31 compute110.0.0.41 block110.0.0.51 object110.0.0.52 object2
So sieht meine Datei aus
Wenn wir alles in Ordnung gemacht haben, sollten wir jetzt in der Lage sein, von Controller zu compute1 und umgekehrt mit dem Namen zu pingen. (Stellen Sie sicher, dass Ihr Ping über die Firewall verfügbar ist)
Funktioniert.Geben Sie diese Werte in jede Hosts-Datei auf jedem Computer ein und stellen Sie sicher, dass Sie jeden Computer anpingen und von jedem Computer aus testen können.
NTP-Dienst einrichten
Eine genaue Zeitmessung ist wichtig, damit wir den Zeitserver einstellen und Clients daran anschließen können. Zeitserver wird unser Controller-Server und Client alle anderen Maschinen sein.
NTP-Server-Setup
Wir werden dies auf unserem Controller-Server tun.
sudo yum install chrony -y
Aktivieren und starten Sie den Dienst, indem Sie
sudo systemctl start chronydsudo systemctl enable chronyd
Sie können den Status des Dienstes auch überprüfen, indem Sie
systemctl status chronyd
Als nächstes bearbeiten wir /etc/chrony.conf-Datei
sudo vi /etc/chrony.conf
Für dieses Tutorial werde ich die Standard-Centos-NTP-Server belassen. Andernfalls, wenn Sie NTP-Server bearbeiten möchten, können Sie durch Hinzufügen des folgenden Befehls (NTP_SERVER durch NTP-Servernamen ersetzen)
server NTP_SERVER iburst
Außerdem müssen wir den Zugriff für unsere NTP-Clients vom lokalen Netzwerk aus aktivieren, indem Sie die folgende Zeile auskommentieren und bearbeiten
allow 10.0.0.0/24
Hier ist meine Konfiguration. Im grünen Teil geben Sie Ihre NTP-Server ein, und im roten Teil wird der Zugriff von unserem lokalen Netzwerk zur Zeitsynchronisierung aktiviert.
Starten Sie den Server oder den Chrony-Dienst neu, indem Sie Folgendes eingeben
sudo systemctl restart chronyd
Wir werden überprüfen, ob unser Server die Zeit synchronisiert, indem Sie folgendes eingeben
chronyc sources
Service funktioniert für mich.
Wir werden es auch über die Firewall aktivieren
sudo firewall-cmd --permanent --add-service=ntpsudo firewall-cmd --reload
NTP-Clients einrichten
Diese Schritte müssen auf den übrigen Computern ausgeführt werden.
Wieder müssen wir chrony installieren
sudo yum install chrony
Aktivieren und starten Sie den NTP-Dienst
sudo systemctl start chronydsudo systemctl enable chronyd
Danach müssen wir erneut /etc/chrony bearbeiten.conf
sudo vi /etc/chrony.conf
Sie müssen alle coment aus allen NTP-Servern löschen und Folgendes eingeben
server controller iburst
Lassen Sie alles wie es ist und schließen Sie die Datei. So sieht meins aus.
Starten Sie den NTP-Dienst erneut
sudo systemctl restart chronyd
chronyc sources
Es funktioniert, der Client kommuniziert mit dem NTP-Server.
Und auf dem NTP-Server, wenn wir Befehl eingeben
chronyc clients
Wir werden sehen, dass compute1 NTP-Client ist
Wiederholen Sie den schritt auf den Rest der Maschinen.
OpenStack-Pakete
Diese Schritte müssen auf allen Knoten ausgeführt werden. Wenn Sie Ihre CentOS-Installation nicht aktualisiert haben, deaktivieren Sie auch EPEL Repo.
!!!///NUR FÜR RED HAT-INSTALLATIONEN ÜBERSPRINGEN CENTOS DIES
subscription-manager repos --enable=rhel-7-server-optional-rpms \ --enable=rhel-7-server-extras-rpms --enable=rhel-7-server-rh-common-rpms
Führen Sie den folgenden Befehl aus (wir installieren diese Version)
sudo yum install centos-release-openstack-train
Der nächste Befehl, den wir ausführen werden, ist
sudo yum upgrade
Starten Sie danach neu und wählen Sie new kernel , um ihn zu aktivieren.
Der nächste Befehl lautet
sudo yum install python-openstackclient
Und schließlich müssen wir unsere OpenStack-Installation in SELinux integrieren
sudo yum install openstack-selinux
SQL-Datenbank
Datenbank wird auf dem Controller-Knoten installiert.Wir werden MariaDB installieren.
sudo yum install mariadb mariadb-server python2-PyMySQL
Nach der Installation müssen wir einen Openstack bearbeiten.conf befindet sich in /etc/my.cnf.d
sudo vi /etc/my.cnf.d/openstack.conf
Wir erstellen einen mysqld-Abschnitt mit folgenden Informationen (stellen Sie sicher, dass die Bind-Adresse die Adresse Ihres Controllers ist)
bind-address = 10.0.0.11default-storage-engine = innodbinnodb_file_per_table = onmax_connections = 4096collation-server = utf8_general_cicharacter-set-server = utf8
So sieht es in meinem Fall aus
MariaDB aktivieren und starten
sudo systemctl enable mariadb.servicesudo systemctl start mariadb.service
Wir werden auch eine Firewall-Ausnahme hinzufügen
sudo firewall-cmd --permanent --add-service=mysqlsudo firewall-cmd --reload
Schließlich werden wir unsere Installation sichern und das Passwort für root SQL-Benutzer festlegen
sudo mysql_secure_installation
Nachrichtenwarteschlange
OpenStack verwendet die Nachrichtenwarteschlange, um koordinieren Sie Vorgänge und Status zwischen Diensten. Es läuft in der regel auf controller, so werden wir installieren es auf controller. Wir werden RabbitMQ installieren
Installation
sudo yum install rabbitmq-server
Dienst starten und aktivieren
sudo systemctl enable rabbitmq-server.servicesudo systemctl start rabbitmq-server.service
Openstack-Benutzer hinzufügen. Ersetzen Sie RABBIT_PASS durch Ihr Passwort.
sudo rabbitmqctl add_user openstack RABBIT_PASS
Berechtigungen festlegen
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Dies sind Firewall-Einstellungen für RabbitMQ
sudo firewall-cmd --zone=public --permanent --add-port=4369/tcp --add-port=25672/tcp --add-port=5671-5672/tcp --add-port=15672/tcp --add-port=61613-61614/tcp --add-port=1883/tcp --add-port=8883/tcpsudo firewall-cmd --reload
Optionaler SELinux-Befehl
setsebool -P nis_enabled 1
Memcached
Der Authentifizierungsmechanismus für Identitätsdienste für Dienste verwendet Memcached zum Zwischenspeichern von Token. Der Memcached-Dienst wird normalerweise auf dem Controller-Knoten ausgeführt, daher werde ich ihn auf dem Controller-Knoten installieren.
Installation
sudo yum install memcached python-memcached
Next, we will edit /etc/sysconfig/memcached
sudo vi /etc/sysconfig/memcached
controller should be added to OPTIONS line, like this
OPTIONS="-l 127.0.0.1,::1,controller"
At last, we will enable and start service
sudo systemctl enable memcached.servicesudo systemctl start memcached.service
Optional firewall settings for memcached
sudo firewall-cmd --new-zone=memcached --permanentsudo firewall-cmd --zone=memcached --add-port=11211/udp --permanentsudo firewall-cmd --zone=memcached --add-port=11211/tcp --permanentsudo firewall-cmd --zone=memcached --add-source=10.0.0.0/24 --permanentsudo firewall-cmd --reload
Etcd
Short explanation from docs.openstack.org – OpenStack-Dienste können Etcd verwenden, einen verteilten zuverlässigen Schlüsselwertspeicher für die verteilte Schlüsselverriegelung, das Speichern von Konfigurationen, das Verfolgen der Dienstlebensdauer und andere Szenarien.
Etcd sollte auf dem Controller-Knoten installiert werden.
Installation
sudo yum install etcd
Als nächstes werden wir /etc/etcd/etcd bearbeiten.conf
sudo vi /etc/etcd/etcd.conf
Sie sollten die Datei wie folgt bearbeiten und die folgenden Werte ändern, um sie an die IP oder den Namen Ihres Controllers anzupassen.
#ETCD_DATA_DIR="/var/lib/etcd/default.etcd"ETCD_LISTEN_PEER_URLS="http://10.0.0.11:2380"ETCD_LISTEN_CLIENT_URLS="http://10.0.0.11:2379"ETCD_NAME="controller"#ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.0.0.11:2380"ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.11:2379"ETCD_INITIAL_CLUSTER="controller=http://10.0.0.11:2380"ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"ETCD_INITIAL_CLUSTER_STATE="new"
So sieht meine Datei aus
Dienst aktivieren und starten
sudo systemctl enable etcdsudo systemctl start etcd
Zusätzliche Firewall-Einstellungen
sudo firewall-cmd --add-port={2379,2380}/tcp --permanentsudo firewall-cmd --reload
Also, wir sind mehr oder weniger „fertig“ mit initiall Teil, wir werden jetzt minimale Bereitstellung für Zug tun.
Minimale Bereitstellung für Zug
Ok, also waren wir bisher erfolgreich. Wir werden jetzt einen minimalen Serviceeinsatz für den Zug durchführen. Weitere Details finden Sie hier – https://docs.openstack.org/install-guide/openstack-services.html
Dienste müssen in der angegebenen Reihenfolge installiert werden, wie unten dargestellt
Da dieses Tutorial schon etwas lang ist, habe ich ich werde es hier beenden und jeden der oben genannten Dienste in einem separaten Tutorial behandeln.
Wichtig ist, dass Sie alle Dienste in der folgenden Reihenfolge ausführen.
Hier sind die Links
- Identity service – keystone installation für Zug
2. Image Service – glance Installation für Zug
3. Platzierungsdienst – Platzierungsanlage für Zug
4. Compute service – nova Installation für Zug
5. Netzwerkdienst – Neutroneninstallation für Zug
Wir empfehlen, auch die folgenden Komponenten zu installieren, nachdem Sie die minimalen Bereitstellungsdienste installiert haben:
6. Armaturenbrett – Horizont-Installation für Zug
7. Blocklagerservice – Schlackeninstallation für Zug
8. Object Storage service – swift installation for Train
Additional links for after installation for errors you may encounter:
Disclaimer