Von Ghulam Qadir, Alibaba Cloud Tech Share Autor. Tech Share ist das Anreizprogramm von Alibaba Cloud, um den Austausch von technischem Wissen und Best Practices innerhalb der Cloud-Community zu fördern.

OpenStack ist eine freie und quelloffene Softwareplattform, die IaaS (Infrastructure-as-a-Service) für öffentliche und private Clouds bereitstellt.

Die OpenStack-Plattform besteht aus mehreren miteinander verbundenen Projekten, die Hardware-, Speicher- und Netzwerkressourcen eines Rechenzentrums steuern, wie z. B.: Compute, Image Service, Block Storage, Identity Service, Networking, Object Storage, Telemetry, Orchestration und Database.

Obwohl die Kernfunktion von OpenStack die Bereitstellung einer IaaS-Plattform ist, wird sie auch als DBaaS (database-as-a-service), Aufbau von Hadoop-Clustern, Container-Orchestrierung und vieles mehr genutzt. Die Verwaltung dieser Komponenten kann über die webbasierte Schnittstelle oder mit Hilfe der OpenStack-Befehlszeile erfolgen.

In diesem Tutorial wird gezeigt, wie Sie Ihre eigene private Cloud-Infrastruktur mit OpenStack auf einem einzigen Knoten mithilfe von rdo-Repositories bereitstellen können, obwohl die Bereitstellung auch auf mehreren Knoten möglich ist. Wir werden diesen Dienst auf Alibaba Cloud Elastic Compute Service (ECS) Instanzen mit CentOS 7 bereitstellen.

  1. Hostname = openstack.example.com
  2. IP-Adresse = 192.168.1.40
  3. Netzmaske = 255.255.255.0
  4. Gateway = 192.168.1.1
  5. DNS = 192.168.1.254

Voraussetzungen

  1. Sie müssen Alibaba Cloud Elastic Compute Service (ECS) aktiviert und Ihre gültige Zahlungsmethode verifiziert haben. Wenn Sie ein neuer Benutzer sind, können Sie ein kostenloses Konto in Ihrem Alibaba Cloud-Konto erhalten. Wenn Sie nicht wissen, wie Sie Ihre ECS-Instanz einrichten, können Sie sich auf dieses Tutorial oder die Schnellstartanleitung beziehen.
  2. Sie sollten den Hostnamen Ihres Servers einrichten.
  3. Zugang zur VNC-Konsole in Ihrer Alibaba Cloud oder SSH-Client auf Ihrem PC installiert.

Nachdem Sie die Voraussetzungen erfüllt haben, melden Sie sich als Root-Benutzer mit Ihrem Root-Benutzernamen &Passwort über einen SSH-Client (z.B. Putty) oder die VNC-Konsole in Ihrem Alibaba Cloud-Konto-Dashboard an.

Stellen Sie sicher, dass Ihr System mindestens 16 GB RAM und einen Prozessor mit VT-Unterstützung hat. Überprüfen Sie die VT-Unterstützung mit dem folgenden Befehl.

 egrep --color 'vmx|svm' /proc/cpuinfo | wc –l

Output: (sollte nicht Null sein)

 2

Initial System Configurations

  1. Bevor Sie mit der Vorbereitung des Knotens beginnen, um Ihre eigene virtuelle Cloud-Infrastruktur bereitzustellen, melden Sie sich zunächst mit dem Root-Konto an und stellen Sie sicher, dass das System auf dem neuesten Stand ist.

    Stellen Sie sicher, dass auf Ihrem Rechner die neueste Version von CentOS 7 installiert ist.

     yum -y update
  2. Nächste geben Sie den Befehl ss -tulpn ein, um alle laufenden Dienste aufzulisten.
     Ss -tulpn

1

Nun identifizieren Sie unnötige Dienste, stoppen, deaktivieren und entfernen sie. In erster Linie Postfix, NetworkManager und Firewalld. Danach sollte der einzige Dienst, der auf Ihrem Linux-Rechner läuft, nur noch sshd sein.

 # systemctl stop postfix firewalld NetworkManager # systemctl disable postfix firewalld NetworkManager # systemctl mask NetworkManager # yum remove postfix NetworkManager NetworkManager-libnm

Deaktivieren Sie die Selinux-Richtlinie auf Ihrem Linux-Rechner dauerhaft, indem Sie die folgenden Befehle ausführen. Bearbeiten Sie auch die Datei /etc/selinux/config und ändern Sie SELINUX von enforcing auf disabled, wie im Bild unten gezeigt.

 # setenforce 0 # getenforce # vi /etc/selinux/config

2

Im nächsten Schritt verwenden Sie den Befehl hostnamectl, um den Hostnamen Ihres Linux-Systems festzulegen. Ersetzen Sie die FQDN-Variable entsprechend.

 # hostnamectl set-hostname cloud.centos.lan

3

Zu guter Letzt installieren Sie ntpdate, um die Zeit mit einem NTP-Server zu synchronisieren.

 # yum install ntpdate

Installieren Sie OpenStack in CentOS und RHEL

OpenStack wird mit Hilfe des PackStack-Pakets aus dem rdo-Repository (RPM-Distribution von OpenStack) auf Ihrem Knoten bereitgestellt.

Um rdo-Repositories auf RHEL 7 zu aktivieren, führen Sie den folgenden Befehl aus.

 # yum install https://www.rdoproject.org/repos/rdo-release.rpm

Auf CentOS 7 enthält das Extras-Repository das RPM, das das OpenStack-Repository aktiviert. Extras ist bereits aktiviert, so dass Sie das RPM einfach installieren können, um das OpenStack-Repository einzurichten:

 # yum install -y centos-release-openstack-mitaka # yum update –y

Lassen Sie uns das Packstat-Paket auf Ihrem Linux-Rechner mit dem folgenden Befehl installieren:

 # yum install openstack-packstack

Im nächsten Schritt erzeugen Sie eine Antwortdatei für Packstack mit den Standardkonfigurationen, die später mit den erforderlichen Parametern bearbeitet wird, um eine eigenständige Installation von Openstack (einzelner Knoten) bereitzustellen.

Die Datei wird nach dem Zeitstempel des aktuellen Tages benannt, wenn sie generiert wird (Tag, Monat und Jahr).

 # packstack --gen-answer-file='date +"%d.%m.%y"'.conf # ls

4

Bearbeiten Sie nun die Antwortdatei mit Ihrem bevorzugten Texteditor.

 vi 26.07.18.conf

und ersetzen Sie die folgenden Parameter, damit sie mit den folgenden Werten übereinstimmen. Um sicherzugehen, ersetzen Sie die Kennwortfelder entsprechend.

 CONFIG_NTP_SERVERS=0.ro.pool.ntp.org

5

 CONFIG_PROVISION_DEMO=n

6

 CONFIG_KEYSTONE_ADMIN_PW=your_password for Admin user

7

Zugriff auf das OpenStack-Dashboard über HTTP mit aktiviertem SSL.

 CONFIG_HORIZON_SSL=y

8

Das Root-Passwort für den MySQL-Server.

 CONFIG_MARIADB_PW=mypassword1234

9

Nach der Bearbeitung speichern und schließen Sie die Datei. Öffnen Sie außerdem die SSH-Server-Konfigurationsdatei und entfernen Sie die PermitRootLogin-Zeile, indem Sie das vorangestellte Hashtag entfernen, wie im folgenden Screenshot dargestellt.

 # vi /etc/ssh/sshd_config

10

Dann starten Sie den SSH-Dienst neu, um die Änderungen zu berücksichtigen.

 # systemctl restart sshd 

Starten Sie die Openstack-Installation mithilfe der Packstack-Antwortdatei

Starten Sie abschließend den Openstack-Installationsprozess über die oben bearbeitete Antwortdatei, indem Sie die folgende Befehlssyntax ausführen:

 # packstack --answer-file 13.04.16.conf

11

Nachdem die Installation der OpenStack-Komponenten erfolgreich abgeschlossen ist, zeigt das Installationsprogramm einige Zeilen mit den lokalen Dashboard-Links für OpenStack und Nagios sowie die erforderlichen Anmeldedaten an, die bereits oben konfiguriert wurden, um sich an beiden Panels anzumelden.

12

Die Anmeldedaten werden auch in Ihrem Home-Verzeichnis in der Datei keystonerc_admin gespeichert.

Wenn der Installationsprozess aus irgendeinem Grund mit einem Fehler bezüglich des httpd-Dienstes endet, öffnen Sie die Datei /etc/httpd/conf.d/ssl.conf und kommentieren Sie die folgende Zeile wie unten dargestellt aus.

 #Listen 443 https

13

Dann starten Sie den Apache-Daemon neu, um die Änderungen anzuwenden.

 # systemctl restart httpd.service

Hinweis: Falls Sie das Openstack-Webpanel auf Port 443 immer noch nicht durchsuchen können, starten Sie den Installationsprozess von vorne mit demselben Befehl, der für die erste Bereitstellung ausgegeben wurde.

 # packstack --answer-file /root/26.07.18.conf

Fernzugriff auf das OpenStack Dashboard

Um von einem Remote-Host in Ihrem LAN auf das OpenStack-Webpanel zuzugreifen, navigieren Sie zu Ihrer Rechner-IP-Adresse oder Ihrem FQDN/Dashboard über das HTTPS-Protokoll.

Da Sie ein selbstsigniertes Zertifikat verwenden, das von einer nicht vertrauenswürdigen Zertifizierungsstelle ausgestellt wurde, sollte in Ihrem Browser ein Fehler angezeigt werden.

Akzeptieren Sie den Fehler und melden Sie sich beim Dashboard mit dem Benutzer admin und dem Kennwort an, das im Parameter CONFIG_KEYSTONE_ADMIN_PW aus der oben eingestellten Antwortdatei festgelegt wurde.

 https://192.168.1.40/dashboard

14

15

Alternativ, wenn Sie sich für die Installation der Nagios-Komponente für OpenStack entschieden haben, können Sie das Nagios-Webpanel unter der folgenden URI aufrufen und sich mit den in der Antwortdatei festgelegten Anmeldeinformationen anmelden.

 https://192.168.1.40/nagios

16

17

Konfiguration

OpenStack ist eine Sammlung von Open-Source-Projektkomponenten, die die Einrichtung von Cloud-Diensten ermöglichen. Jede Komponente verwendet ähnliche Konfigurationstechniken und einen gemeinsamen Rahmen für INI-Dateioptionen.

Dieser Leitfaden fasst mehrere Referenzen und Konfigurationsoptionen für die folgenden OpenStack-Komponenten zusammen:

  1. Bare Metal service
  2. Block Storage service
  3. Compute service
  4. Dashboard
  5. Database service
  6. Data Processing service
  7. Identity service
  8. Image service
  9. Message service
  10. Networking service
  11. Object Storage service
  12. Orchestration service
  13. Shared File Systems service
  14. Telemetry service

OpenStack verwendet das INI-Dateiformat für Konfigurationsdateien. Eine INI-Datei ist eine einfache Textdatei, die Optionen als Schlüssel=Wert-Paare angibt, die in Abschnitte gruppiert sind. Der Abschnitt DEFAULT enthält die meisten Konfigurationsoptionen. Zeilen, die mit einem Rautenzeichen (#) beginnen, sind Kommentarzeilen. Zum Beispiel:

 # Print debugging output (set logging level to DEBUG instead # of default WARNING level). (boolean value) debug = true # The SQLAlchemy connection string used to connect to the # database (string value) connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone

Optionen können verschiedene Typen von Werten haben. Die Kommentare in den Beispiel-Konfigurationsdateien erwähnen diese immer und die Tabellen erwähnen den Opt-Wert als erstes Element wie (BoolOpt) Toggle…. Die folgenden Typen werden von OpenStack verwendet:

Boolscher Wert (BoolOpt)

Aktiviert oder deaktiviert eine Option. Die zulässigen Werte sind true und false.

 # Enable the experimental use of database reconnect on # connection lost (boolean value) use_db_reconnect = false

Gleitkommawert (FloatOpt)

Eine Gleitkommazahl wie 0,25 oder 1000.

 # Sleep time in seconds for polling an ongoing async task # (floating point value) task_poll_interval = 0.5

Ganzzahliger Wert (IntOpt)

Eine Ganzzahl ist eine Zahl ohne gebrochene Bestandteile, wie 0 oder 42.

 # The port which the OpenStack Compute service listens on. # (integer value) compute_port = 8774

IP-Adresse (IPOpt)

Eine IPv4- oder IPv6-Adresse.

 # Address to bind the server. Useful when selecting a particular network # interface. (ip address value) bind_host = 0.0.0.0

Schlüssel-Wert-Paare (DictOpt)

Ein Schlüssel-Wert-Paar, auch als Diktat bezeichnet. Die Schlüssel-Wert-Paare werden durch Kommas getrennt und ein Doppelpunkt wird verwendet, um Schlüssel und Wert zu trennen. Beispiel: key1:value1,key2:value2.

 # Parameter for l2_l3 workflow setup. (dict value) l2_l3_setup_params = data_ip_address:192.168.200.99, \ data_ip_mask:255.255.255.0,data_port:1,gateway:192.168.200.1,ha_port:2

list value (ListOpt)

Die Werte werden durch Kommas getrennt und stehen für andere Typen. Das folgende Beispiel setzt allowed_rpc_exception_modules auf eine Liste, die die vier Elemente oslo.messaging.exceptions, nova.exception, cinder.exception und exceptions:

 # Modules of exceptions that are permitted to be recreated # upon receiving exception data from an rpc call. (list value) allowed_rpc_exception_modules = oslo.messaging.exceptions,nova.exception

multi valued (MultiStrOpt)

Eine mehrwertige Option ist ein String-Wert und kann mehr als einmal angegeben werden, alle Werte werden verwendet.

 # Driver or drivers to handle sending notifications. (multi valued) notification_driver = nova.openstack.common.notifier.rpc_notifier notification_driver = ceilometer.compute.nova_notifier

port value (PortOpt)

Eine TCP/IP-Portnummer. Ports können zwischen 1 und 65535 liegen.

 # Port to which the UDP socket is bound. (port value) # Minimum value: 1 # Maximum value: 65535 udp_port = 4952

String-Wert (StrOpt)

Strings können wahlweise in einfache oder doppelte Anführungszeichen gesetzt werden.

 # Enables or disables publication of error events. (boolean value) publish_errors = false # The format for an instance that is passed with the log message. # (string value) instance_format = " "

Abschnitte

Konfigurationsoptionen sind nach Abschnitten gruppiert. Die meisten Konfigurationsdateien unterstützen mindestens die folgenden Abschnitte:

Enthält die meisten Konfigurationsoptionen. Wenn in der Dokumentation für eine Konfigurationsoption der Abschnitt nicht angegeben ist, wird davon ausgegangen, dass sie in diesem Abschnitt erscheint.

Konfigurationsoptionen für die Datenbank, die den Status des OpenStack-Dienstes speichert.

Substitution

Die Konfigurationsdatei unterstützt die Variablensubstitution. Nachdem Sie eine Konfigurationsoption festgelegt haben, kann diese in späteren Konfigurationswerten referenziert werden, wenn Sie ihr ein $ voranstellen, wie $OPTION.

Das folgende Beispiel verwendet die Werte von rabbit_host und rabbit_port, um den Wert der Option rabbit_hosts zu definieren, in diesem Fall als Controller:5672.

 # The RabbitMQ broker address where a single node is used. # (string value) rabbit_host = controller # The RabbitMQ broker port where a single node is used. # (integer value) rabbit_port = 5672 # RabbitMQ HA cluster host:port pairs. (list value) rabbit_hosts = $rabbit_host:$rabbit_port

Um eine Substitution zu vermeiden, verwenden Sie

$$, es wird durch ein einzelnes $ ersetzt. Wenn Ihr LDAP-DNS-Passwort beispielsweise $xkj432 lautet, geben Sie es wie folgt an:

 ldap_dns_password = $$xkj432

Der Code verwendet die Python-Zeichenkette. Template.safe_substitute()-Methode, um die Variablensubstitution zu implementieren. Für weitere Details zur Auflösung der Variablensubstitution:

Whitespace

Um Leerzeichen in einen Konfigurationswert einzuschließen, verwenden Sie eine Zeichenkette in Anführungszeichen. Beispiel:

 ldap_dns_passsword='a password with spaces'

Definieren Sie einen alternativen Speicherort für eine Konfigurationsdatei

Die meisten Dienste und die -manage Befehlszeilen-Clients laden die Konfigurationsdatei. Um einen alternativen Speicherort für die Konfigurationsdatei zu definieren, übergeben Sie den Parameter –config-file CONFIG_FILE, wenn Sie einen Dienst starten oder einen -manage-Befehl aufrufen.

Abschluss

Wir haben die OpenStack-Installation auf Red Hat, CentOS und Fedora Linux demonstriert. Jetzt können Sie Ihre eigene private Cloud-Umgebung auf Alibaba Cloud Elastic Compute Service (ECS) einfach mit OpenStack einrichten.

Articles

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.