Zum Inhalt springen
documentation.suse.com / Implementierungsleitfaden
SUSE Enterprise Storage 7

Implementierungsleitfaden

Autoren: Tomáš Bažant, Alexandra Settle und Liam Proven
Veröffentlicht: 11.12.2023

Copyright © 2020–2023 SUSE LLC und Mitwirkende. Alle Rechte vorbehalten.

Sofern nicht anders angegeben, ist dieses Dokument unter Creative Commons Attribution-ShareAlike 4.0 International (CC-BY-SA 4.0) lizenziert: https://creativecommons.org/licenses/by-sa/4.0/legalcode.

Die SUSE-Marken finden Sie unter http://www.suse.com/company/legal/. Die Rechte für alle Marken von Drittanbietern liegen bei den jeweiligen Eigentümern. Markensymbole (®, ™ usw.) kennzeichnen Marken von SUSE und ihren Tochtergesellschaften. Sternchen (*) kennzeichnen Marken von Drittanbietern.

Alle Informationen in diesem Buch wurden mit größter Sorgfalt zusammengestellt. Auch hierdurch kann jedoch keine hundertprozentige Richtigkeit gewährleistet werden. Weder SUSE LLC, ihre Tochtergesellschaften, die Autoren noch die Übersetzer können für mögliche Fehler und deren Folgen haftbar gemacht werden.

Informationen über dieses Handbuch

Diese Anleitung konzentriert sich auf die Bereitstellung eines grundlegenden Ceph-Clusters und zusätzlicher Services. Außerdem werden die Schritte für ein Upgrade auf SUSE Enterprise Storage 7 von der vorherigen Produktversion beschrieben.

SUSE Enterprise Storage 7 ist eine Erweiterung zu SUSE Linux Enterprise Server 15 SP2. Es kombiniert die Funktion des Ceph(http://ceph.com/)-Speicherobjekts mit der Unternehmenstechnik und dem Support von SUSE. Mit SUSE Enterprise Storage 7 stellen IT-Organisationen eine dezentrale Speicherarchitektur bereit, die eine Reihe von Anwendungsfällen auf kommerziellen Hardwareplattformen unterstützt.

1 Verfügbare Dokumentation

Anmerkung
Anmerkung: Online-Dokumentation und neueste Aktualisierungen

Die Dokumentation für unsere Produkte steht unter https://documentation.suse.com bereit. Hier finden Sie außerdem die neuesten Aktualisierungen und können die Dokumentation durchsuchen oder in verschiedenen Formaten herunterladen. Die neuesten Aktualisierungen der Dokumentation finden Sie in der englischen Sprachversion.

Darüber hinaus befindet sich die Dokumentation auf dem installierten System im Verzeichnis /usr/share/doc/manual. Sie ist enthalten in einem RPM-Paket namens ses-manual_LANG_CODE. Installieren Sie es, wenn es nicht bereits auf Ihrem System vorhanden ist. Beispiel:

root # zypper install ses-manual_en

Die folgende Dokumentation ist für dieses Produkt verfügbar:

Implementierungsleitfaden

Diese Anleitung konzentriert sich auf die Bereitstellung eines grundlegenden Ceph-Clusters und auf die Bereitstellung zusätzlicher Services. Außerdem werden die Schritte für ein Upgrade auf SUSE Enterprise Storage 7 von der vorherigen Produktversion beschrieben.

Betriebs- und Verwaltungshandbuch

Dieses Handbuch konzentriert sich auf Routineaufgaben, die Sie als Administrator erledigen müssen, nachdem der grundlegende Ceph-Cluster bereitgestellt wurde (Vorgänge ab Tag 2). Außerdem werden alle unterstützten Möglichkeiten zum Zugriff auf die in einem Ceph-Cluster gespeicherten Daten beschrieben.

Security Hardening Guide (Sicherheitshandbuch)

Diese Anleitung konzentriert sich darauf, wie Sie die Sicherheit Ihres Clusters gewährleisten können.

Troubleshooting Guide (Handbuch zur Fehlersuche)

In diesem Leitfaden werden verschiedene häufige Probleme bei der Ausführung von SUSE Enterprise Storage 7 und andere Fragen zu relevanten Komponenten wie Ceph oder Object Gateway behandelt.

SUSE Enterprise Storage for Windows Guide (Handbuch zu SUSE Enterprise Storage für Windows)

In diesem Handbuch wird die Integration, Installation und Konfiguration von Microsoft-Windows-Umgebungen und SUSE Enterprise Storage mithilfe des Windows-Treibers beschrieben.

2 Feedback

Wir freuen uns über Rückmeldungen und Beiträge zu dieser Dokumentation. Hierfür gibt es mehrere Kanäle:

Serviceanforderungen und Support

Informationen zu Services und Support-Optionen, die für Ihr Produkt verfügbar sind, finden Sie unter http://www.suse.com/support/.

Zum Öffnen einer Service-Anforderung benötigen Sie ein SUSE-Abonnement, das beim SUSE Customer Center registriert ist. Gehen Sie zu https://scc.suse.com/support/requests, melden Sie sich an und klicken Sie auf Neu erstellen.

Fehlerberichte

Melden Sie Probleme mit der Dokumentation unter https://bugzilla.suse.com/. Zum Melden von Problemen ist ein Bugzilla-Konto erforderlich.

Zur Vereinfachung dieses Vorgangs können Sie die Links Report Documentation Bug (Fehler in der Dokumentation melden) neben den Überschriften in der HTML-Version dieses Dokuments verwenden. Dadurch werden das richtige Produkt und die Kategorie in Bugzilla vorab ausgewählt und ein Link zum aktuellen Abschnitt hinzugefügt. Sie können somit sofort mit der Eingabe Ihres Berichts beginnen.

Beiträge

Verwenden Sie für einen Beitrag zu dieser Dokumentation die Links Edit Source (Quelle bearbeiten) neben den Überschriften in der HTML-Version dieses Dokuments. Sie führen Sie zum Quellcode auf GitHub, wo Sie eine Pull-Anforderung öffnen können. Für Beiträge ist ein GitHub-Konto erforderlich.

Weitere Informationen zur Dokumentationsumgebung für diese Dokumentation finden Sie in der README des Repositorys unter https://github.com/SUSE/doc-ses.

E-Mail

Alternativ können Sie E-Mails mit Fehlerberichten und Feedback zur Dokumentation an <> senden. Geben Sie den Titel der Dokumentation, die Produktversion und das Datum der Veröffentlichung der Dokumentation an. Geben Sie zudem die entsprechende Abschnittsnummer und den Titel (oder die URL) an und fügen Sie eine kurze Beschreibung des Problems hinzu.

3 Konventionen in der Dokumentation

In der vorliegenden Dokumentation werden die folgenden Hinweise und typografischen Konventionen verwendet:

  • /etc/passwd: Verzeichnis- und Dateinamen

  • PLATZHALTER: Ersetzen Sie PLATZHALTER durch den tatsächlichen Wert.

  • PFAD: Eine Umgebungsvariable

  • ls, --help: Kommandos, Optionen und Parameter

  • Benutzer: Der Name eines Benutzers oder einer Gruppe

  • name_des_pakets: Der Name eines Softwarepakets

  • Alt, AltF1: Eine zu drückende Taste bzw. Tastenkombination. Tasten werden wie auf einer Tastatur in Großbuchstaben dargestellt.

  • Datei, Datei › Speichern unter: Menüelemente, Schaltflächen

  • AMD/Intel Dieser Absatz ist nur für die Intel 64/AMD64-Architekturen von Bedeutung. Die Pfeile kennzeichnen den Anfang und das Ende des Textblocks.

    IBM Z, POWER Dieser Absatz ist nur für die Architekturen IBM Z und POWER relevant. Die Pfeile kennzeichnen den Anfang und das Ende des Textblocks.

  • Kapitel 1, Beispielkapitel: Ein Querverweis auf ein anderes Kapitel in diesem Handbuch.

  • Kommandos, die mit root-Privilegien ausgeführt werden müssen. Diesen Kommandos kann zur Ausführung als nicht privilegierter Benutzer auch häufig das Präfix sudo vorangestellt sein.

    root # command
    tux > sudo command
  • Kommandos, die von Benutzern ohne Privilegien ausgeführt werden können.

    tux > command
  • Hinweise

    Warnung
    Warnung: Warnhinweis

    Wichtige Informationen, die Sie kennen müssen, bevor Sie fortfahren. Warnt vor Sicherheitsrisiken, potenziellen Datenverlusten, Beschädigung der Hardware oder physischen Gefahren.

    Wichtig
    Wichtig: Wichtiger Hinweis

    Wichtige Informationen, die Sie beachten sollten, bevor Sie den Vorgang fortsetzen.

    Anmerkung
    Anmerkung: Anmerkung

    Ergänzende Informationen, beispielsweise zu unterschiedlichen Softwareversionen.

    Tipp
    Tipp: Tipp

    Hilfreiche Informationen, etwa als Richtlinie oder praktische Empfehlung.

  • Kompaktinfos

    Anmerkung

    Ergänzende Informationen, beispielsweise zu unterschiedlichen Softwareversionen.

    Tipp

    Hilfreiche Informationen, etwa als Richtlinie oder praktische Empfehlung.

4 Produktlebenszyklus und Support

Verschiedene SUSE-Produkte haben unterschiedliche Produktlebenszyklen. Die genauen Lebenszyklusdaten für SUSE Enterprise Storage finden Sie unter https://www.suse.com/lifecycle/.

4.1 SUSE-Support – Definitionen

Informationen zu unserer Support-Richtlinie und die entsprechenden Optionen finden Sie unter https://www.suse.com/support/policy.html und https://www.suse.com/support/programs/long-term-service-pack-support.html.

4.2 Erläuterung zum Support für SUSE Enterprise Storage

Sie benötigen ein entsprechendes Abonnement bei SUSE, um Support zu erhalten. Gehen Sie zur Anzeige der für Sie verfügbaren spezifischen Support-Angebote zu https://www.suse.com/support/ und wählen Sie das betreffende Produkt aus.

Die Support-Stufen sind folgendermaßen definiert:

L1

Problemermittlung: Technischer Support mit Informationen zur Kompatibilität, Nutzungs-Support, kontinuierliche Wartung, Informationssammlung und einfache Problembehandlung anhand der verfügbaren Dokumentation.

L2

Problemisolierung: Technischer Support zur Datenanalyse, Reproduktion von Kundenproblemen, Isolierung von Problembereichen und Lösung für Probleme, die in Stufe 1 nicht gelöst wurden, sowie Vorbereitung für Stufe 3.

L3

Problembehebung: Technischer Support zur Lösung von Problemen durch technische Maßnahmen zur Behebung von Produktfehlern, die durch den Support der Stufe 2 erkannt wurden.

Vertragskunden und Partner erhalten SUSE Enterprise Storage mit L3-Support für alle Pakete, ausgenommen:

  • Technologievorschauen

  • Audio, Grafik, Schriftarten und Artwork

  • Pakete, für die ein zusätzlicher Kundenvertrag erforderlich ist

  • Einige Pakete, die im Lieferumfang von Modul Workstation Extension enthalten sind, erhalten nur L2-Support.

  • Pakete mit dem Namensende -devel (die Header-Dateien und ähnliche Entwicklerressourcen enthalten) werden nur zusammen mit den entsprechenden Hauptpaketen unterstützt.

SUSE unterstützt nur die Nutzung von Originalpaketen, also unveränderten und nicht kompilierten Paketen.

4.3 Technologievorschauen

Mit Technologievorschauen sind Pakete, Stacks oder Funktionen gemeint, die SUSE bereitstellt, um einen kurzen Einblick in bevorstehende Innovationen zu geben. Durch Technologievorschauen haben Sie die Möglichkeit, neue Technologien in Ihrer Umgebung zu testen. Über Ihr Feedback würden wir uns sehr freuen. Wenn Sie eine Technologievorschau testen, kontaktieren Sie bitte Ihre Ansprechpartner bei SUSE und teilen Sie ihnen Ihre Erfahrungen und Anwendungsfälle mit. Ihr Input ist für zukünftige Entwicklungen sehr hilfreich.

Technologievorschauen haben jedoch folgende Nachteile:

  • Technologievorschauen befinden sich noch in Entwicklung. Daher sind die Funktionen möglicherweise unvollständig oder auf andere Weise nicht für die Produktionsnutzung geeignet.

  • Technologievorschauen werden nicht unterstützt.

  • Technologievorschauen sind möglicherweise nur für bestimmte Hardwarearchitekturen verfügbar.

  • Details und Funktionen von Technologievorschauen sind Änderungen unterworfen. Upgrades auf Folgeversionen sind demnach nicht möglich und erfordern eine Neuinstallation.

  • Technologievorschauen können jederzeit aus einem Produkt entfernt werden. SUSE ist nicht verpflichtet, eine unterstützte Version dieser Technologie in der Zukunft bereitzustellen, zum Beispiel, wenn SUSE erkennt, dass eine Vorschau den Kunden- oder Marktanforderungen oder den Unternehmensstandards nicht entspricht.

Eine Übersicht der Technologievorschauen, die im Lieferumfang Ihres Produkts enthalten sind, finden Sie in den Versionshinweisen unter https://www.suse.com/releasenotes/x86_64/SUSE-Enterprise-Storage/7.

5 Mitwirkende bei Ceph

Das Ceph-Projekt und dessen Dokumentation ist das Ergebnis der Arbeit von Hunderten von Mitwirkenden und Organisationen. Weitere Einzelheiten finden Sie in https://ceph.com/contributors/.

6 Kommandos und Kommandozeilen in diesem Handbuch

Als Ceph-Cluster-Administrator können Sie das Cluster-Verhalten mit bestimmten Kommandos konfigurieren und anpassen. Hierzu benötigen Sie verschiedene Arten von Kommandos:

6.1 Salt-spezifische Kommandos

Mit diesen Kommandos können Sie Ceph-Cluster-Knoten bereitstellen, Kommandos auf mehreren (oder allen) Cluster-Knoten gleichzeitig ausführen oder auch Cluster-Knoten hinzufügen oder entfernen. Die am häufigsten verwendeten Kommandos sind ceph-salt und ceph-salt config. Salt-Kommandos müssen auf dem Salt-Master-Knoten als root ausgeführt werden. Diese Kommandos werden in der folgenden Kommandozeile eingegeben:

root@master # 

Beispiel:

root@master # ceph-salt config ls

6.2 Ceph-spezifische Kommandos

Hierbei handelt es sich um Kommandos auf niedrigerer Ebene, mit denen alle Aspekte des Clusters und seiner Gateways auf der Kommandozeile konfiguriert und feinabgestimmt werden, zum Beispiel ceph, cephadm, rbd oder radosgw-admin.

Zum Ausführen von Ceph-spezifischen Kommandos benötigen Sie den Lesezugriff auf einen Ceph-Schlüssel. Die Capabilities des Schlüssels definieren dann Ihre Rechte in der Ceph-Umgebung. Sie können die Ceph-Kommandos als root (oder über sudo) ausführen und den uneingeschränkten Standard-Schlüsselbund „ceph.client.admin.key“ verwenden.

Als sicherere und empfohlene Alternative erstellen Sie je einen stärker eingeschränkten, individuellen Schlüssel für die einzelnen verwaltungsberechtigten Benutzer, den Sie dann in einem Verzeichnis ablegen, in dem die Benutzer ihn lesen können, beispielsweise:

~/.ceph/ceph.client.USERNAME.keyring
Tipp
Tipp: Pfad der Ceph-Schlüssel

Sollen ein benutzerdefinierter verwaltungsberechtigter Benutzer und Schlüsselbund verwendet werden, müssen Sie den Benutzernamen und den Pfad des Schlüssels bei jeder Ausführung des Kommandos ceph mit den Optionen -n client angeben.USER_NAME und --keyring PATH/TO/KEYRING angeben.

Um dies zu vermeiden, nehmen Sie diese Optionen in die Variable CEPH_ARGS in den ~/.bashrc-Dateien der einzelnen Benutzer auf.

Ceph-spezifische Kommandos können auf jedem Cluster-Knoten ausgeführt werden. Es wird jedoch empfohlen, sie ausschließlich auf dem Admin-Knoten auszuführen. In dieser Dokumentation werden die Kommandos mit dem Benutzer cephuser ausgeführt. Die Kommandozeile lautet daher:

cephuser@adm > 

Beispiel:

cephuser@adm > ceph auth list
Tipp
Tipp: Kommandos für bestimmte Knoten

Wenn Sie laut Dokumentation ein Kommando für einen Cluster-Knoten mit einer bestimmten Rolle ausführen sollen, ist dies an der Bezeichnung der Kommandozeile ersichtlich. Beispiel:

cephuser@mon > 

6.2.1 Ausführen von ceph-volume

Ab SUSE Enterprise Storage 7 werden Ceph-Services containerisiert ausgeführt. Wenn Sie ceph-volume auf einem OSD-Knoten ausführen müssen, müssen Sie ihm das Kommando cephadm voranstellen. Beispiel:

cephuser@adm > cephadm ceph-volume simple scan

6.3 Allgemeine Linux-Kommandos

Linux-Kommandos, die nicht Ceph-spezifisch sind, wie zum Beispiel mount, cat oder openssl, werden entweder mit der Kommandozeile cephuser@adm > oder root # eingeführt. Dies hängt davon ab, welche Rechte für das entsprechende Kommando erforderlich sind.

6.4 Zusätzliche Informationen

Weitere Informationen zur Ceph-Schlüsselverwaltung finden Sie in Book “Betriebs- und Verwaltungshandbuch”, Chapter 30 “Authentifizierung mit cephx”, Section 30.2 “Schlüsselverwaltungsbereiche”.

Teil I Einführung zu SUSE Enterprise Storage (SES)

  • 1 SES und Ceph
  • SUSE Enterprise Storage ist ein dezentrales Speichersystem, das auf Skalierbarkeit, Zuverlässigkeit und Leistung ausgelegt ist und auf der Ceph-Technologie basiert. Ein Ceph-Cluster kann auf Standardservern in einem gemeinsamen Netzwerk wie Ethernet ausgeführt werden. Der Cluster lässt sich gut für …

  • 2 Hardwareanforderungen und Empfehlungen
  • Die Hardwareanforderungen für Ceph hängen stark vom E/A-Workload ab. Die folgenden Hardwareanforderungen und Empfehlungen sollten als Ausgangspunkt für die detaillierte Planung betrachtet werden.

  • 3 Einrichten des Hochverfügbarkeits-Clusters für den Admin-Knoten
  • Der Admin-Knoten ist ein Ceph-Cluster-Knoten, in dem der Salt-Master-Service ausgeführt wird. Er verwaltet die restlichen Cluster-Knoten, indem er deren Salt-Minion-Services abfragt und anweist. Er enthält normalerweise auch andere Services, beispielsweise das Grafana Dashboard, das vom Prometheus-Ü…

1 SES und Ceph

SUSE Enterprise Storage ist ein dezentrales Speichersystem, das auf Skalierbarkeit, Zuverlässigkeit und Leistung ausgelegt ist und auf der Ceph-Technologie basiert. Ein Ceph-Cluster kann auf Standardservern in einem gemeinsamen Netzwerk wie Ethernet ausgeführt werden. Der Cluster lässt sich gut für Tausende von Servern (im Folgenden als Knoten bezeichnet) und im Petabyte-Bereich skalieren. Im Gegensatz zu herkömmlichen Systemen, die Daten über Zuordnungstabellen speichern und abrufen, verwendet Ceph einen deterministischen Algorithmus zum Zuordnen von Speicher für Daten und hat keine zentralisierte Informationsstruktur. Ceph geht davon aus, dass in Speicher-Clustern das Hinzufügen oder Entfernen von Hardware die Regel ist und nicht die Ausnahme. Der Ceph-Cluster automatisiert Verwaltungsaufgaben wie Datenverteilung und -neuverteilung, Datenreproduktion, Ausfallerkennung und Wiederherstellung. Ceph kann sich selbst reparieren und selbst verwalten, was den Verwaltungsaufwand und die Gemeinkosten reduziert.

In diesem Kapitel erhalten Sie einen ersten Überblick über SUSE Enterprise Storage 7 und eine kurze Beschreibung der wichtigsten Komponenten.

1.1 Eigenschaften von Ceph

Die Ceph-Umgebung weist die folgenden Eigenschaften auf:

Skalierbarkeit

Ceph ermöglicht das Skalieren auf Tausende von Knoten und kann Speicher im Petabyte-Bereich verwalten.

Kommerzielle Hardware

Zum Ausführen eines Ceph-Clusters ist keine spezielle Hardware erforderlich. Ausführliche Informationen finden Sie unter Kapitel 2, Hardwareanforderungen und Empfehlungen

Selbstverwaltung

Der Ceph-Cluster verwaltet sich selbst. Wenn Knoten hinzugefügt oder entfernt werden oder ausfallen, verteilt der Cluster die Daten automatisch um. Er erkennt auch überlastete Festplatten.

Keine Single Points of Failure

Kein Knoten im Cluster speichert wichtige Informationen exklusiv. Die Anzahl der Redundanzen kann konfiguriert werden.

Open-Source-Software

Ceph ist eine Open-Source-Softwarelösung und unabhängig von spezifischer Hardware oder Anbietern.

1.2 Wichtigste Ceph-Komponenten

Zur vollen Nutzung aller Funktionen in Ceph ist es erforderlich, einige Basiskomponenten und Konzepte zu verstehen. In diesem Abschnitt werden einige Komponenten von Ceph eingeführt, auf die oft in anderen Kapiteln verwiesen wird.

1.2.1 RADOS

Die Basiskomponente von Ceph wird RADOS (Reliable Autonomic Distributed Object Store, Zuverlässiger autonomer dezentraler Objektspeicher) genannt. Sie ist für die Verwaltung der im Cluster gespeicherten Daten zuständig. Daten werden in Ceph normalerweise als Objekte gespeichert. Jedes Objekt besteht aus einer Kennung und den Daten.

RADOS bietet die folgenden Methoden für den Zugriff auf gespeicherte Objekte, die viele Anwendungsfälle abdecken:

Object Gateway

Ein Object Gateway ist ein HTTP REST Gateway für den RADOS-Objektspeicher. Es ermöglicht den Direktzugriff auf Objekte, die im Ceph-Cluster gespeichert sind.

RADOS-Blockgerät

Der Zugriff auf ein RADOS-Blockgerät (RADOS Block Device, RBD) erfolgt genauso wie der auf andere Blockgeräte. Sie werden beispielsweise für Virtualisierungszwecke in Kombination mit libvirt verwendet.

CephFS

Das Ceph File System (CephFS) ist ein POSIX-fähiges Dateisystem.

librados

librados ist eine Bibliothek, die mit vielen Programmiersprachen verwendet werden kann, um eine Anwendung zu erstellen, die direkt mit dem Speicher-Cluster interagiert.

librados wird vom Object Gateway und RBD verwendet, während CephFS direkt mit RADOS (Abbildung 1.1, „Schnittstellen zum Ceph-Objektspeicher“) interagiert.

Schnittstellen zum Ceph-Objektspeicher
Abbildung 1.1: Schnittstellen zum Ceph-Objektspeicher

1.2.2 CRUSH

Der CRUSH-Algorithmus ist das zentrale Element eines Ceph-Clusters. CRUSH ist das Akronym für Controlled Replication Under Scalable Hashing. CRUSH ist eine Funktion für die Speicherzuordnung und benötigt vergleichsweise wenig Parameter. Es sind also nur wenige Informationen erforderlich, um die Speicherposition eines Objekts zu berechnen. Die Parameter stellen eine aktuelle Zuordnung für den Cluster dar, einschließlich Integrität, einiger vom Administrator definierter Platzierungsregeln und des Namens des Objekts, das gespeichert oder abgerufen werden muss. Mit diesen Informationen können alle Knoten im Ceph-Cluster berechnen, wo ein Objekt und dessen Reproduktionen gespeichert sind. Dies macht das Schreiben und Lesen von Daten sehr effizient. CRUSH versucht, Daten gleichmäßig auf alle Knoten im Cluster zu verteilen.

Die CRUSH-Zuordnung umfasst alle Speicherknoten und vom Administrator definierte Platzierungsregeln zum Speichern von Objekten im Cluster. Sie definiert eine hierarchische Struktur, die normalerweise mit der physischen Struktur des Clusters korrespondiert. Beispielsweise befinden sich Festplatten mit Daten in Hosts, Hosts in Racks, Racks in Reihen und Reihen in Rechenzentren. Diese Struktur wird zur Definition von Fehlerdomänen herangezogen. Ceph stellt dann sicher, dass Reproduktionen in verschiedenen Verzweigungen einer bestimmten Fehlerdomäne gespeichert werden.

Wenn die Fehlerdomäne auf „Rack“ festgelegt ist, werden Reproduktionen von Objekten auf verschiedene Racks verteilt. Dadurch werden Ausfälle entschärft, die durch einen fehlerhaften Schalter in einem Rack verursacht wurden. Wenn eine Stromversorgungseinheit eine Reihe von Racks bereitstellt, kann die Fehlerdomäne auf „Reihe“ festgelegt werden. Wenn die Stromversorgungseinheit ausfällt, sind die Reproduktionsdaten noch in anderen Reihen verfügbar.

1.2.3 Ceph-Knoten und -Daemons

In Ceph sind Knoten Server, die für den Cluster arbeiten. Sie können verschiedene Typen von Daemons ausführen. Es wird empfohlen, nur einen Typ von Daemon pro Knoten auszuführen, ausgenommen Ceph Manager Daemons, die gemeinsam mit Ceph Monitors auf einem Knoten ausgeführt werden. Für jeden Client sind mindestens Ceph Monitor, Ceph Manager und Ceph OSD Daemons erforderlich:

Admin-Knoten

Der Admin-Knoten ist ein Ceph-Cluster-Knoten, von dem aus Sie Befehle zur Verwaltung des Clusters ausführen. Der Admin-Knoten ist das Zentrum des Ceph-Clusters, weil er alle anderen Cluster-Knoten verwaltet, indem er deren Salt Minion Services abfragt und ihnen Anweisungen gibt.

Ceph Monitor

Ceph-Monitor-Knoten (oft zu MON abgekürzt) pflegen Informationen zur Cluster-Integrität, eine Zuordnung aller Knoten und Datenverteilungsregeln (weitere Informationen hierzu finden Sie in Abschnitt 1.2.2, „CRUSH“).

Wenn Fehler oder Konflikte auftreten, entscheiden die Ceph-Monitor-Knoten im Cluster nach dem Mehrheitsprinzip, welche Informationen korrekt sind. Um eine qualifizierte Mehrheit zu bilden, empfiehlt es sich, eine ungerade Anzahl von Ceph-Monitor-Knoten einzurichten, jedoch mindestens drei davon.

Bei mehreren Standorten sollten die Ceph-Monitor-Knoten auf eine ungerade Anzahl von Standorten verteilt werden. Die Anzahl der Ceph-Monitor-Knoten pro Standort sollte so gewählt werden, dass die Hälfte der Ceph-Monitor-Knoten funktionsfähig bleiben, wenn ein Standort ausfällt.

Ceph Manager

Der Ceph Manager sammelt die Statusinformationen aus dem gesamten Cluster. Der Ceph-Manager-Daemon wird neben den Ceph-Monitor-Daemons ausgeführt. Er bietet zusätzliche Überwachung und dient als Schnittstelle zwischen der externen Überwachung und den Verwaltungssystemen. Er umfasst auch andere Services. Beispielsweise wird die Weboberfläche des Ceph Dashboards auf demselben Knoten wie der Ceph Manager ausgeführt.

Der Ceph Manager muss nicht weiter konfiguriert werden. Sie müssen nur sicherstellen, dass er ausgeführt wird.

Ceph OSD

Ein Ceph OSD ist ein Daemon, der Objektspeichergeräte steuert. Dabei handelt es sich um physische oder logische Speichereinheiten (Festplatten oder Partitionen). Objektspeichergeräte können physische Datenträger/Partitionen oder logische Volumes sein. Der Daemon kümmert sich außerdem um die Datenreproduktion und den Ausgleich, falls Knoten hinzugefügt oder entfernt wurden.

Ceph OSD Daemons kommunizieren mit Monitor Daemons und informieren diese über den Zustand der anderen OSD Daemons.

Für CephFS, Object Gateway, NFS Ganesha oder iSCSI Gateway sind zusätzliche Knoten erforderlich:

Metadata Server (MDS)

CephFS-Metadaten werden in einem eigenen RADOS-Pool gespeichert (weitere Informationen finden Sie unter Abschnitt 1.3.1, „Pools“). Die Metadatenserver fungieren als intelligente Caching-Schicht für die Metadaten und serialisieren den Zugriff bei Bedarf. Dies ermöglicht den gleichzeitigen Zugriff von vielen Clients ohne explizite Synchronisierung.

Object Gateway

Das Object Gateway ist ein HTTP-REST-Gateway für den RADOS-Objektspeicher. Es ist mit OpenStack Swift und Amazon S3 kompatibel und verfügt über eine eigene Benutzerverwaltung.

NFS Ganesha

NFS Ganesha bietet NFS-Zugriff auf das Object Gateway oder auf das CephFS. Es wird im Benutzerbereich statt im Kernel-Bereich ausgeführt und interagiert direkt mit dem Object Gateway oder dem CephFS.

iSCSI Gateway

iSCSI ist ein Speichernetzwerkprotokoll, über das Clients SCSI-Kommandos an SCSI-Speichergeräte (Targets) auf Remote Servern senden können.

Samba Gateway

Das Samba Gateway bietet Samba-Zugriff auf die Daten, die auf CephFS gespeichert sind.

1.3 Ceph-Speicherstruktur

1.3.1 Pools

In einem Ceph-Cluster gespeicherte Objekte werden in Pools abgelegt. Pools stellen logische Partitionen des Clusters zur Außenwelt dar. Für jeden Pool kann ein Regelsatz definiert werden, beispielsweise wie viele Reproduktionen eines jeden Objekts vorhanden sein müssen. Die Standardkonfiguration von Pools wird als reproduzierter Pool bezeichnet.

Pools enthalten normalerweise Objekte, können jedoch auch so konfiguriert werden, dass sie wie ein RAID 5 funktionieren. In dieser Konfiguration werden Objekte in Datenblöcken zusammen mit zusätzlichen Codierungs-Datenblöcken gespeichert. Die Codierungs-Datenblöcke enthalten die redundanten Informationen. Die Anzahl der Daten und Codierungs-Datenblöcke werden vom Administrator definiert. In dieser Konfiguration werden Pools als Pools mit Löschcodierung oder EC-Pools (Erasure Coded Pools, EC) bezeichnet.

1.3.2 Platzierungsgruppen

Placement Groups (PGs) dienen zur Verteilung von Daten in einem Pool. Beim Erstellen eines Pools wird eine bestimmte Anzahl von Placement Groups festgelegt. Die Placement Groups werden intern zur Gruppierung von Objekten verwendet. Sie sind ein wichtiger Faktor für die Leistung eines Ceph-Clusters. Die PG für ein Objekt wird durch den Namen des Objekts bestimmt.

1.3.3 Beispiel

In diesem Abschnitt finden Sie ein vereinfachtes Beispiel dafür, wie Ceph Daten verwaltet (Abbildung 1.2, „Beispiel eines kleinen Ceph-Speichers“). Dieses Beispiel stellt keine empfohlene Konfiguration für einen Ceph-Cluster dar. Die Hardwareeinrichtung umfasst drei Speicher-Knoten oder Ceph OSDs (Host 1, Host 2, Host 3). Jeder Knoten hat drei Festplatten, die als OSDs (osd.1 bis osd.9) verwendet werden. In diesem Beispiel sind keine Ceph-Monitor-Knoten berücksichtigt.

Anmerkung
Anmerkung: Unterschied zwischen Ceph OSD und OSD

Die Begriffe Ceph OSD oder Ceph OSD Daemon beziehen sich auf einen Daemon, der auf einem Knoten ausgeführt wird. Der Begriff OSD dagegen bezieht sich auf einen logischen Datenträger, mit dem der Daemon interagiert.

Der Cluster umfasst zwei Pools, Pool A und Pool B. Während Pool A Objekte nur zweimal reproduziert, ist Ausfallsicherheit für Pool B wichtiger und es gibt daher drei Reproduktionen für jedes Objekt.

Wenn eine Anwendung ein Objekt in einen Pool stellt, beispielsweise über die REST API, dann wird eine Placement Group (PG1 bis PG4) auf Basis des Pools und des Objektnamens ausgewählt. Der CRUSH-Algorithmus berechnet dann, auf welchen OSDs das Objekt gespeichert ist, basierend auf der Placement Group, die das Objekt enthält.

In diesem Beispiel ist die Fehlerdomäne auf Host festgelegt. Dadurch wird sichergestellt, dass die Reproduktionen von Objekten auf verschiedenen Hosts gespeichert sind. Je nach der für einen Pool festgelegten Reproduktionsstufe wird das Objekt auf zwei oder drei OSDs gespeichert, die von der Placement Group verwendet werden.

Eine Anwendung, die ein Objekt schreibt, interagiert nur mit einem Ceph OSD, nämlich dem primären Ceph OSD. Der primäre Ceph OSD führt die Reproduktion aus und bestätigt die Durchführung des Schreibvorgangs, nachdem alle anderen OSDs das Objekt gespeichert haben.

Wenn osd.5 ausfällt, sind alle Objekte in PG1 immer noch auf osd.1 verfügbar. Sobald der Cluster feststellt, dass ein OSD ausgefallen ist, übernimmt ein anderer OSD. In diesem Beispiel wird osd.4 als Ersatz für osd.5 verwendet. Die auf osd.1 gespeicherten Objekte werden dann auf osd.4 reproduziert, um die Reproduktionsstufe wiederherzustellen.

Beispiel eines kleinen Ceph-Speichers
Abbildung 1.2: Beispiel eines kleinen Ceph-Speichers

Die Cluster-Zuordnung ändert sich, wenn ein neuer Knoten mit neuen OSDs zum Cluster hinzugefügt wird. Die CRUSH-Funktion gibt dann verschiedene Standorte für Objekte zurück. Objekte, die neue Standorte erhalten, werden verschoben. Durch diesen Vorgang bleiben alle OSDs gleichmäßig ausgelastet.

1.4 BlueStore

BlueStore ist seit SES 5 ein neues standardmäßiges Speicher-Back-End für Ceph. Seine Leistung ist besser als die von FileStore. Es umfasst vollständige Prüfsummenerstellung für Daten und weist eine integrierte Komprimierung auf.

BlueStore verwaltet ein, zwei oder drei Speichergeräte. Im einfachsten Fall lastet BlueStore ein einzelnes primäres Speichergerät aus. Das Speichergerät ist normalerweise in zwei Abschnitte partitioniert:

  1. Eine kleine Partition namens BlueFS, die Dateisystem-ähnliche Funktionalitäten implementiert, die von RocksDB benötigt werden.

  2. Eine große Partition belegt normalerweise das restliche Gerät. Sie wird direkt von BlueStore verwaltet und enthält alle Ist-Daten. Dieses primäre Gerät ist normalerweise durch eine Blocksymbolverknüpfung im Datenverzeichnis gekennzeichnet.

BlueStore kann auch auf zwei weiteren Geräten bereitgestellt werden:

Ein WAL-Gerät, das für das interne Journal oder Write Ahead-Protokoll von BlueStore verwendet wird. Es ist durch den symbolischen Link block.wal im Datenverzeichnis gekennzeichnet. Ein separates WAL-Gerät ist nur sinnvoll, wenn das Gerät schneller als das primäre Gerät oder das DB-Gerät ist. Beispiel:

  • Das WAL-Gerät ist ein NVMe, das DB-Gerät ist ein SSD und das Datengerät ist entweder ein SSD oder HDD.

  • Das WAL-Gerät und das DB-Gerät sind separate SSDs. Das Datengerät ist ein SSD oder HDD.

Ein DB-Gerät kann zum Speichern der internen Metadaten von BlueStore verwendet werden. BlueStore (eigentlich die eingebettete RocksDB) legt zur Leistungsoptimierung so viele Metadaten wie möglich auf dem DB-Gerät ab. Auch hier ist die Bereitstellung eines gemeinsam genutzten DB-Geräts nur sinnvoll, wenn es schneller ist als das primäre Gerät.

Tipp
Tipp: Planen Sie die DB-Größe

Planen Sie sorgfältig eine ausreichende Größe für das DB-Gerät. Wenn das DB-Gerät voll ist, laufen die Metadaten an das primäre Gerät über, was die Leistung des OSD extrem beeinträchtigt.

Mit dem Kommando ceph daemon osd.ID perf dump können Sie prüfen, ob eine WAL/DB-Partition voll wird und überläuft. Der Wert slow_used_bytes gibt die Anzahl der Daten an, die überlaufen:

cephuser@adm > ceph daemon osd.ID perf dump | jq '.bluefs'
"db_total_bytes": 1073741824,
"db_used_bytes": 33554432,
"wal_total_bytes": 0,
"wal_used_bytes": 0,
"slow_total_bytes": 554432,
"slow_used_bytes": 554432,

1.5 Zusätzliche Informationen

  • Ceph hat als Community-Projekt eine eigene Online-Dokumentation. Weitere Informationen zu Themen, die in diesem Handbuch nicht behandelt werden, finden Sie unter https://docs.ceph.com/en/octopus/.

  • In der ursprünglichen Veröffentlichung mit dem Titel CRUSH: Controlled, Scalable, Decentralized Placement of Replicated Data von S.A. Weil, S.A. Brandt, E.L. Miller, C. Maltzahn finden Sie nützliche Informationen zu den inneren Abläufen in Ceph. Die Lektüre empfiehlt sich vor allem für die Bereitstellung von Clustern mit großem Volumen. Sie finden die Veröffentlichung unter http://www.ssrc.ucsc.edu/papers/weil-sc06.pdf

  • SUSE Enterprise Storage kann zusammen mit OpenStack-Distributionen anderer Hersteller verwendet werden. Die Ceph-Clients müssen sich auf einer Ebene befinden, die mit SUSE Enterprise Storage kompatibel sind.

    Anmerkung
    Anmerkung

    SUSE unterstützt die Serverkomponente der Ceph-Bereitstellung, der Client wird vom Anbieter der OpenStack-Distribution unterstützt.

2 Hardwareanforderungen und Empfehlungen

Die Hardwareanforderungen für Ceph hängen stark vom E/A-Workload ab. Die folgenden Hardwareanforderungen und Empfehlungen sollten als Ausgangspunkt für die detaillierte Planung betrachtet werden.

Im Allgemeinen sind die Empfehlungen in diesem Abschnitt auf jeweils einen Prozess ausgelegt. Wenn auf dem selben Rechner mehrere Prozesse ablaufen, müssen die CPU-, RAM-, Festplatten- und Netzwerkanforderungen entsprechend erhöht werden.

2.1 Netzwerke im Überblick

Ceph verfügt über einige logische Netzwerke:

  • Ein Frontend-Netzwerk namens öffentliches Netzwerk.

  • Ein vertrauenswürdiges internes Netzwerk, das Back-End-Netzwerk, namens Clusternetzwerk. Diese Einstellung ist optional.

  • Ein oder mehrere Client-Netzwerke für Gateways. Dies ist optional und würde den Rahmen dieses Kapitels sprengen.

Das öffentliche Netzwerk ist das Netzwerk, über das Ceph-Daemons untereinander und mit ihren Clients kommunizieren. Das bedeutet, dass der gesamte Datenverkehr des Ceph-Clusters über dieses Netzwerk läuft, es sei denn, es ist ein Clusternetzwerk konfiguriert.

Das Clusternetzwerk ist das Back-End-Netzwerk zwischen den OSD-Knoten für Reproduktion, Ausgleich und Wiederherstellung. Ist dieses optionale Netzwerk konfiguriert, würde es im Idealfall die doppelte Bandbreite des öffentlichen Netzwerks mit standardmäßiger Drei-Wege-Reproduktion bieten, da das primäre OSD zwei Kopien an andere OSDs über dieses Netzwerk sendet. Das öffentliche Netzwerk befindet sich zwischen Clients und Gateways auf der einen Seite für die Kommunikation mit Monitoren, Managern, MDS-Knoten und OSD-Knoten. Monitore, Manager und MDS-Knoten nutzen es auch für die Kommunikation mit OSD-Knoten.

Netzwerke im Überblick
Abbildung 2.1: Netzwerke im Überblick

2.1.1 Netzwerkempfehlungen

Wir empfehlen ein einzelnes fehlertolerantes Netzwerk mit ausreichender Bandbreite für Ihre Anforderungen. Für die öffentliche Ceph-Netzwerkumgebung empfehlen wir zwei verbundene 25-GbE-Netzwerkschnittstellen (oder schneller), die über 802.3ad (LACP) verbunden sind. Dies wird als die Mindesteinrichtung für Ceph betrachtet. Wenn Sie zusätzlich ein Clusternetzwerk verwenden, empfehlen wir vier verbundene 25-GbE-Netzwerkschnittstellen. Durch Verbinden von zwei oder mehr Netzwerkschnittstellen verbessern sich der Durchsatz durch Link-Aggregation und, bei redundanten Links und Switches, die Fehlertoleranz und Wartbarkeit.

Sie können auch VLANs erstellen, um verschiedene Arten von Datenverkehr über eine Verbindung zu isolieren. Sie können beispielsweise eine Verbindung erstellen, um zwei VLAN-Schnittstellen bereitzustellen, eine für das öffentliche Netzwerk und die zweite für das Clusternetzwerk. Beim Einrichten des Ceph-Netzwerks ist dies jedoch nicht erforderlich. Details zum Verbinden von Schnittstellen finden Sie unter https://documentation.suse.com/sles/15-SP2/html/SLES-all/cha-network.html#sec-network-iface-bonding.

Die Fehlertoleranz kann durch Isolierung der Komponenten in Fehlerdomänen erhöht werden. Zur Erhöhung der Fehlertoleranz des Netzwerks wird durch Verbinden einer Schnittstelle von zwei separaten Netzwerkschnittstellenkarten (NIC) Schutz vor dem Ausfall einer einzelnen NIC erreicht. In ähnlicher Weise schützt das Erstellen einer Verbindung zwischen zwei Switches vor dem Ausfall eines Switches. Wir empfehlen, den Hersteller der Netzwerkgeräte zu konsultieren, um den erforderlichen Grad an Fehlertoleranz zu ermitteln.

Wichtig
Wichtig: Verwaltungsnetzwerk

Die Einrichtung eines zusätzlichen Verwaltungsnetzwerks, das zum Beispiel die Trennung von SSH-, Salt- oder DNS-Netzwerken ermöglicht, wurde weder getestet, noch wird sie unterstützt.

Tipp
Tipp: Über DHCP konfigurierte Knoten

Wenn Ihre Speicherknoten über DHCP konfiguriert werden, reichen die standardmäßigen Zeitüberschreitungen möglicherweise nicht für eine korrekte Konfiguration des Netzwerks aus, bevor die Ceph Daemons starten. Wenn dies geschieht, werden die Ceph-MONs und -OSDs nicht korrekt gestartet (das Ausführen von systemctl status ceph\* führt zur Fehlermeldung „unable to bind“ (Verbinden nicht möglich)). Zur Vermeidung dieses Problems empfehlen wir, die DHCP-Client-Zeitüberschreitung auf jedem Knoten in Ihrem Speichercluster auf mindestens 30 Sekunden zu erhöhen. Dies wird erreicht durch Ändern der folgenden Einstellungen in jedem Knoten:

Legen Sie in /etc/sysconfig/network/dhcp Folgendes fest:

DHCLIENT_WAIT_AT_BOOT="30"

Legen Sie in /etc/sysconfig/network/config Folgendes fest:

WAIT_FOR_INTERFACES="60"

2.1.1.1 Hinzufügen eines privaten Netzwerks zu einem aktiven Cluster

Wenn Sie bei der Ceph-Bereitstellung kein Cluster-Netzwerk angeben, dann wird eine einzelne öffentliche Netzwerkumgebung angenommen. Auch wenn Ceph in einem öffentlichen Netzwerk gut funktioniert, wird seine Leistung und Sicherheit durch Festlegen eines zweiten privaten Cluster-Netzwerks erhöht. Zur Unterstützung von zwei Netzwerken muss jeder Ceph-Knoten über mindestens zwei Netzwerkkarten verfügen.

Sie müssen auf jeden Ceph-Knoten die folgenden Änderungen anwenden. Bei einem kleinen Cluster ist dies relativ schnell erledigt, doch bei einem Cluster mit Hunderten oder Tausenden Knoten kann dieser Vorgang sehr zeitaufwändig sein.

  1. Legen Sie das Clusternetzwerk mit folgendem Kommando fest:

    root # ceph config set global cluster_network MY_NETWORK

    Starten Sie die OSDs neu, um das angegebene Clusternetzwerk zu binden:

    root # systemctl restart ceph-*@osd.*.service
  2. Überprüfen Sie, ob das private Cluster-Netzwerk auf Betriebssystemebene wie erwartet funktioniert.

2.1.1.2 Überwachungsknoten in verschiedenen Teilnetzen

Wenn sich die Überwachungsknoten in mehreren Teilnetzen befinden, beispielsweise in verschiedenen Räumen und gesteuert durch verschiedene Schalter, dann müssen Sie ihre öffentliche Netzwerkadresse in der CIDR-Schreibweise entsprechend anpassen:

cephuser@adm > ceph config set mon public_network "MON_NETWORK_1, MON_NETWORK_2, MON_NETWORK_N

Beispiel:

cephuser@adm > ceph config set mon public_network "192.168.1.0/24, 10.10.0.0/16"
Warnung
Warnung

Wenn Sie, wie in diesem Abschnitt beschrieben, mehr als ein Netzwerksegment für das öffentliche Netzwerk (oder für das Clusternetzwerk) angeben, muss jedes dieser Teilnetze zur Weiterleitung zu den anderen Teilnetzen in der Lage sein. Andernfalls können die MONs und andere Ceph-Daemons auf verschiedenen Netzwerksegmenten nicht miteinander kommunizieren, was zu einem geteilten Cluster führen würde. Wenn Sie eine Firewall verwenden, stellen Sie außerdem sicher, dass Sie jede IP-Adresse oder jedes Teilnetz in Ihre iptables einbeziehen und Ports für sie auf allen Knoten öffnen, falls erforderlich.

2.2 Konfigurationen mit mehreren Architekturen

SUSE Enterprise Storage unterstützt sowohl x86- als auch Arm-Architekturen. Bei der Erwägung der einzelnen Architekturen ist zu beachten, dass es bei den Cores pro OSD, der Frequenz und dem RAM keine gravierenden Unterschiede zwischen den CPU-Architekturen gibt, die sich auf die Größenfestlegung auswirken würden.

Wie bei kleineren x86-Prozessoren (keine Server) bieten weniger leistungsstarke Arm-basierte Cores unter Umständen keine optimalen Arbeitsbedingungen, insbesondere wenn sie für Pools mit Löschcodierung eingesetzt werden.

Anmerkung
Anmerkung

In der gesamten Dokumentation wird SYSTEM-ARCH anstelle von x86 oder Arm verwendet.

2.3 Hardwarekonfiguration

Für eine optimale Produkterfahrung empfehlen wir, mit der empfohlenen Cluster-Konfiguration zu beginnen. Für einen Testcluster oder einen Cluster mit geringeren Leistungsanforderungen dokumentieren wir eine minimal unterstützte Cluster-Konfiguration.

2.3.1 Mindestkonfiguration für den Cluster

Eine Mindestkonfiguration für den Produktcluster besteht aus:

  • Mindestens vier physikalischen Knoten (OSD-Knoten) mit gemeinsamem Speicherort der Services

  • Dual-10-Gbit-Ethernet als verbundenes Netzwerk

  • Einem separaten Admin-Knoten (kann auf einem externen Knoten virtualisiert werden)

Eine detaillierte Konfiguration besteht aus folgenden Komponenten:

  • Separater Verwaltungsknoten mit 4 GB RAM, vier Cores, 1 TB Kapazität. Dies ist in der Regel der Salt-Master-Knoten. Ceph-Services und -Gateways wie Ceph Monitor, Metadata Server, Ceph OSD, Object Gateway oder NFS Ganesha werden auf dem Admin-Knoten nicht unterstützt, da er die Clusteraktualisierungs- und Upgrade-Prozesse eigenständig orchestrieren muss.

  • Mindestens vier physische OSD-Knoten mit jeweils acht OSD-Datenträgern. Die Anforderungen finden Sie in Abschnitt 2.4.1, „Mindestanforderungen“.

    Die Gesamtkapazität des Clusters sollte so bemessen sein, dass auch bei Ausfall eines Knotens die gesamte genutzte Kapazität (einschließlich Redundanz) 80 % nicht überschreitet.

  • Drei Ceph Monitor-Instanzen. Monitore müssen aus Latenzgründen von SSD/NVMe-Speicher, nicht von HDDs, betrieben werden.

  • Monitore, Metadatenserver und Gateways können gemeinsam auf den OSD-Knoten platziert werden. Informationen über die gemeinsame Platzierung finden Sie in Abschnitt 2.12, „Ein einziger Server für OSD und Monitor“. Wenn Sie Services gemeinsam platzieren, müssen die Speicher- und CPU-Anforderungen addiert werden.

  • iSCSI Gateway, Object Gateway und Metadata Server benötigen mindestens inkrementelle 4 GB RAM und vier Cores.

  • Wenn Sie CephFS, S3/Swift, iSCSI verwenden, sind für Redundanz und Verfügbarkeit mindestens zwei Instanzen der jeweiligen Rollen (Metadata Server, Object Gateway, iSCSI) erforderlich.

  • Die Knoten müssen für SUSE Enterprise Storage bestimmt sein und dürfen nicht für andere physische, containerisierte oder virtualisierte Workloads verwendet werden.

  • Wenn eines der Gateways (iSCSI, Object Gateway, NFS Ganesha, Metadata Server usw.) innerhalb von VMs bereitgestellt wird, dürfen diese VMs nicht auf den physischen Rechnern gehostet werden, die andere Clusterrollen bedienen. (Dies ist nicht notwendig, da sie als verbundene Services unterstützt werden.)

  • Bei der Bereitstellung von Services als VMs auf Hypervisoren außerhalb des physischen Core-Clusters müssen Ausfalldomänen beachtet werden, um Redundanz zu gewährleisten.

    Stellen Sie zum Beispiel nicht mehrere Rollen desselben Typs auf demselben Hypervisor bereit, beispielsweise mehrere MON- oder MDS-Instanzen.

  • Bei der Bereitstellung innerhalb von VMs ist es besonders wichtig, dass die Knoten über eine starke Netzwerkanbindung und eine gut funktionierende Zeitsynchronisierung verfügen.

  • Die Hypervisorknoten müssen ausreichend dimensioniert sein, um Störungen durch andere Workloads zu vermeiden, die CPU-, RAM-, Netzwerk- und Speicherressourcen verbrauchen.

Mindestkonfiguration für den Cluster
Abbildung 2.2: Mindestkonfiguration für den Cluster

2.3.2 Empfohlene Konfiguration für Produktionscluster

Sobald Sie Ihren Cluster vergrößern, empfehlen wir, Ceph Monitors, Metadatenserver und Gateways auf separate Knoten zu verlagern, um eine bessere Fehlertoleranz zu erreichen.

  • Sieben Objektspeicher-Knoten

    • Die einzelnen Knoten dürfen nicht mehr als ca. 15 % des Gesamtspeichers ausmachen.

    • Die Gesamtkapazität des Clusters sollte so bemessen sein, dass auch bei Ausfall eines Knotens die gesamte genutzte Kapazität (einschließlich Redundanz) 80 % nicht überschreitet.

    • 25 Gb Ethernet oder besser, jeweils verbunden für internes Clusternetzwerk und externes öffentliches Netzwerk.

    • Mindestens 56 OSDs pro Speicher-Cluster.

    • In Abschnitt 2.4.1, „Mindestanforderungen“ finden Sie weitere Empfehlungen.

  • Dedizierte physische Infrastruktur-Knoten.

2.3.3 Multipfadkonfiguration

Wenn Sie Multipfadhardware verwenden möchten, stellen Sie sicher, dass LVM in der Konfigurationsdatei unter dem Abschnitt Geräte die Einstellung multipath_component_detection = 1 sieht. Dies wird mit dem Kommando lvm config geprüft.

Stellen Sie alternativ sicher, dass LVM die Multipfadkomponenten eines Geräts über die LVM-Filterkonfiguration filtert. Das ist hostspezifisch zu verstehen.

Anmerkung
Anmerkung

Es wird nicht empfohlen und sollte immer nur dann in Betracht gezogen werden, wenn multipath_component_detection = 1 nicht festgelegt werden kann.

Weitere Informationen zur Multipfadkonfiguration finden Sie unter https://documentation.suse.com/sles/15-SP2/html/SLES-all/cha-multipath.html#sec-multipath-lvm.

2.4 Objektspeicherknoten

2.4.1 Mindestanforderungen

  • Die folgenden CPU-Empfehlungen berücksichtigen Geräte unabhängig von der Nutzung durch Ceph:

    • Ein 2-GHz-CPU-Thread pro rotierendem Datenträger.

    • Zwei 2-GHz-CPU-Threads pro SSD.

    • Vier 2-GHz-CPU-Threads pro NVMe.

  • Separate 10-GbE-Netzwerke (öffentlich, Client und intern), erforderlich 4 × 10 GbE, empfohlen 2 × 25 GbE.

  • Insgesamt benötigtes RAM = Anzahl der OSDs × (1 GB + osd_memory_target) + 16 GB

    Weitere Informationen zu osd_memory_target finden Sie in Book “Betriebs- und Verwaltungshandbuch”, Chapter 28 “Konfiguration des Ceph-Clusters”, Section 28.4.1 “Konfigurieren der automatischen Cache-Größe”.

  • OSD-Datenträger in JBOD-Konfigurationen oder individuelle RAID-0-Konfigurationen.

  • OSD-Journal darf sich auf der OSD-Festplatte befinden.

  • OSD-Festplatten sollten exklusiv von SUSE Enterprise Storage verwendet werden.

  • Dedizierter Datenträger und SSD für das Betriebssystem, vorzugsweise in einer RAID 1-Konfiguration.

  • Weisen Sie mindestens 4 GB zusätzlichen Arbeitsspeicher zu, wenn dieser OSD-Host einen Teil eines Cache-Pools hostet, der für Cache-Tiering verwendet wird.

  • Ceph Monitors, Gateway und Metadata Server dürfen in Objektspeicher-Knoten vorhanden sein.

  • Aus Gründen der Festplattenleistung handelt es sich bei OSD-Knoten um Bare-Metal-Knoten. Auf einem OSD-Knoten sollten keine anderen Workloads ausgeführt werden, es sei denn, es handelt sich um eine Mindesteinrichtung von Ceph Monitors und Ceph Managers.

  • SSDs für Journal im Verhältnis 6:1 von SSD-Journal zu OSD.

Anmerkung
Anmerkung

Stellen Sie sicher, dass den OSD-Knoten keine vernetzten Blockgeräte zugeordnet sind, wie zum Beispiel iSCSI- oder RADOS-Blockgeräte-Images.

2.4.2 Mindestgröße für Datenträger

Zwei Arten von Datenträgerspeicherplatz werden zur Ausführung auf OSD benötigt: der Speicherplatz für das WAL/DB-Gerät sowie der primäre Speicherplatz für die gespeicherten Daten. Der Mindestwert (und Standardwert) für das WAL/DB beträgt 6 GB. Der Mindestspeicherplatz für Daten beträgt 5 GB, da Partitionen, die kleiner als 5 GB sind, das Gewicht 0 zugewiesen wird.

Auch wenn nun der Mindestspeicherplatz für ein OSD 11 GB beträgt, empfehlen wir mindestens 20 GB pro Festplatte, sogar für Testzwecke.

2.4.3 Empfohlene Größe für das WAL- und DB-Gerät von BlueStore

Tipp
Tipp: Weitere Informationen

Weitere Informationen zu BlueStore finden Sie in Abschnitt 1.4, „BlueStore“.

  • Es wird empfohlen, 4 GB für das WAL-Gerät zu reservieren. Die empfohlene Größe für DB liegt bei den meisten Workloads bei 64 GB.

    Wichtig
    Wichtig

    Wir empfehlen größere DB-Volumes für Bereitstellungen mit hoher Auslastung, insbesondere bei hoher RGW- oder CephFS-Nutzung. Reservieren Sie etwas Kapazität (Slots), um bei Bedarf mehr Hardware für mehr DB-Speicherplatz zu installieren.

  • Falls Sie beabsichtigen, das WAL- und DB-Gerät auf dieselbe Festplatte zu stellen, dann empfehlen wir eine einzelne Partition für beide Geräte statt eine eigene Partition pro Gerät. Dadurch kann Ceph das DB-Gerät auch für WAL-Operationen verwenden. Die Verwaltung des Festplattenspeicherplatzes ist daher effizienter, weil Ceph die DB-Partition für WAL nur dann verwendet, wenn es unbedingt erforderlich ist. Ein weiterer Vorteil besteht darin, dass eine volle Auslastung der WAL-Partition sehr unwahrscheinlich ist und kein Speicherplatz verschwendet wird, da er gegebenenfalls auch für DB-Operationen verwendet werden kann.

    Um das DB-Gerät für WAL freizugeben, geben Sie nicht das WAL-Gerät an, sondern nur das DB-Gerät.

    Weitere Informationen zum Festlegen eines OSD-Layouts finden Sie im Book “Betriebs- und Verwaltungshandbuch”, Chapter 13 “Betriebsaufgaben”, Section 13.4.3 “Hinzufügen von OSDs mit der DriveGroups-Spezifikation”.

2.4.4 SSD für WAL/DB-Partitionen

Solid-State- oder Festkörperlaufwerke (SSD) haben keine beweglichen Teile. Dadurch wird die Zeit für den zufälligen Zugriff und die Leselatenz reduziert und der Datendurchsatz beschleunigt. Da der Preis pro 1 MB für SSDs erheblich höher ist als der Preis für sich drehende Festplatten, eignen sich SSDs nur für kleinere Speicher.

Die Leistung von OSDs wird möglicherweise erheblich verbessert, wenn Sie deren WAL/ DB auf einem SSD speichern und die Objektdaten auf einer separaten Festplatte.

Tipp
Tipp: Freigabe einer SSD für mehrere WAL/DB-Partitionen

Da WAL/DB-Partitionen relativ wenig Speicherplatz belegen, können Sie einen SSD-Datenträger mit mehreren WAL/DB-Partitionen freigeben. Bedenken Sie dabei jedoch, dass sich mit jeder WAL/DB-Partition die Leistung des SSD-Datenträgers verschlechtert. Wir empfehlen, maximal sechs WAL/DB-Partitionen pro SSD-Datenträger zu speichern und zwölf pro NVMe-Datenträger.

2.4.5 Maximale empfohlene Anzahl von Datenträgern

Jeder Server kann so viele Festplatten enthalten wie für ihn zulässig sind. Bei der Planung der Anzahl von Festplatten pro Server gibt es einiges zu bedenken:

  • Netzwerk-Bandbreite. Je mehr Festplatten ein Server enthält, desto mehr Daten müssen für die Schreiboperationen der Festplatte über die Netzwerkkarte(n) übertragen werden.

  • Arbeitsspeicher. RAM ab 2 GB wird für den BlueStore-Cache herangezogen. Mit dem Standardwert von 4 GB für osd_memory_target erhält das System eine angemessene Cache-Anfangsgröße für rotierende Datenträger. Bei SSD oder NVME sollten Sie die Cache-Größe und die RAM-Zuordnung pro OSD erhöhen, damit die höchstmögliche Leistung erzielt wird.

  • Fehlertoleranz. Wenn der Server komplett ausfällt, verliert der Cluster temporär so viele OSDs wie er Festplatten hat. Darüberhinaus müssen Sie alle Daten des ausgefallenen Servers auf die anderen Knoten im Cluster kopieren, damit die Reproduktionsregeln weiterhin ausgeführt werden.

2.5 Monitorknoten

  • Mindestens drei MON-Knoten sind erforderlich. Die Anzahl der Monitore sollte immer ungerade sein (1+2n).

  • 4 GB RAM.

  • Prozessor mit vier logischen Cores.

  • Ein SSD oder ein anderer ausreichend schneller Speichertyp ist für Monitors sehr zu empfehlen, insbesondere für den Pfad /var/lib/ceph in jedem Monitor-Knoten, da das Quorum bei hohen Festplattenlatenzen möglicherweise instabil ist. Zwei Festplatten in der RAID 1-Konfiguration werden aus Redundanzgründen empfohlen. Es wird empfohlen, dass separate Festplatten oder mindestens separate Festplattenpartitionen für die Überwachungsprozesse zur Verfügung stehen, um den verfügbaren Festplattenspeicherplatz des Monitors vor Ereignissen wie schleichender Protokolldateiausweitung zu schützen.

  • Pro Knoten darf nur ein Überwachungsprozess vorhanden sein.

  • Die Kombination von OSD-, MON- oder Object-Gateway-Knoten wird nur unterstützt, wenn ausreichend Hardwareressourcen verfügbar sind. Dies bedeutet, dass die Anforderungen für alle Services aufsummiert werden müssen.

  • Zwei Netzwerkschnittstellen verbunden mit mehreren Schaltern.

2.6 Object-Gateway-Knoten

Object-Gateway-Knoten sollten über mindestens sechs CPU-Cores und 32 GB RAM verfügen. Wenn sich noch andere Prozesse auf demselben Rechner befinden, müssen deren Anforderungen aufsummiert werden.

2.7 Metadata Server-Knoten

Die richtige Größe der Metadata Server Knoten hängt vom spezifischen Anwendungsfall ab. Generell gilt, je mehr offene Dateien der Metadata Server verarbeiten muss, desto mehr CPU und RAM benötigt er. Nachfolgend finden Sie die Mindestanforderungen an die

  • 4 GB RAM für jeden Metadatenserver-Daemon.

  • Gebundene Netzwerkschnittstelle.

  • 2,5 GHz CPU mit mindestens 2 Cores.

2.8 Admin-Knoten

Mindestens 4 GB RAM und ein CPU mit vier Cores sind erforderlich. Dies umfasst die Ausführung des Salt Masters auf dem Admin-Knoten Für große Cluster mit Hunderten von Knoten werden 6 GB RAM vorgeschlagen.

2.9 iSCSI-Gateway-Knoten

iSCSI-Gateway-Knoten sollten über mindestens sechs CPU-Cores und 16 GB RAM verfügen.

2.10 SES und andere SUSE-Produkte

Dieser Abschnitt enthält wichtige Informationen zur Integration von SES in andere SUSE-Produkte.

2.10.1 SUSE Manager

SUSE Manager und SUSE Enterprise Storage sind nicht integriert. Daher kann SUSE Manager aktuell keinen SES-Cluster verwalten.

2.11 Namensbegrenzungen

Ceph unterstützt nicht generell Nicht-ASCII-Zeichen in Konfigurationsdateien, Pool-Namen, Benutzernamen und so weiter. Wir empfehlen, beim Konfigurieren eines Ceph-Clusters in allen Ceph-Objekt- bzw. Konfigurationsnamen nur einfache alphanumerische Zeichen (A-Z, a-z, 0-9) und wenige Satzzeichen ('.', '-', '_') zu verwenden.

2.12 Ein einziger Server für OSD und Monitor

Obwohl es technisch möglich ist, OSDs und MONs in Testumgebungen auf demselben Server auszuführen, empfehlen wir dringend, einen separaten Server für jeden Monitorknoten in der Produktionsumgebung einzurichten. Der hauptsächliche Grund dafür besteht in der Leistung. Je mehr OSDs der Cluster enthält, desto mehr E/A-Vorgänge müssen die MON-Knoten durchführen. Wenn ein Server von einem MON-Knoten und OSD(s) gemeinsam genutzt wird, stellen die E/A-Vorgänge des OSD eine Beschränkung für den Monitorknoten dar.

Es ist weiterhin zu überlegen, ob Festplatten von einem OSD, einem MON-Knoten und dem Betriebssystem auf dem Server gemeinsam genutzt werden sollen. Die Antwort ist einfach: wenn möglich, stellen Sie eine separate Festplatte für den OSD bereit und einen separaten Server für einen Monitor-Knoten.

Obwohl Ceph verzeichnisbasierte OSDs unterstützt, sollte für einen OSD immer eine eigene Festplatte vorhanden sein und nicht die des Betriebssystems dafür genutzt werden.

Tipp
Tipp

Wenn es wirklich erforderlich ist, OSD- und MON-Knoten auf demselben Server auszuführen, führen Sie MON auf einem separaten Datenträger aus. Hängen Sie dazu den Datenträger im Verzeichnis /var/lib/ceph/mon ein, um die Leistung etwas zu verbessern.

3 Einrichten des Hochverfügbarkeits-Clusters für den Admin-Knoten

Der Admin-Knoten ist ein Ceph-Cluster-Knoten, in dem der Salt-Master-Service ausgeführt wird. Er verwaltet die restlichen Cluster-Knoten, indem er deren Salt-Minion-Services abfragt und anweist. Er enthält normalerweise auch andere Services, beispielsweise das Grafana Dashboard, das vom Prometheus-Überwachungs-Toolkit unterstützt wird.

Falls im Admin-Knoten ein Fehler auftritt, müssen Sie normalerweise neue funktionierende Hardware für den Knoten zur Verfügung stellen und den gesamten Konfigurationsstapel des Clusters von einer kürzlich erstellten Sicherung wiederherstellen. Eine derartige Methode ist zeitaufwändig und verursacht den Ausfall des Clusters.

Wir empfehlen einen Hochverfügbarkeits-Cluster für den Ceph Admin-Knoten, um Ausfallzeiten in der Ceph-Cluster-Leistung, die durch Admin-Knoten-Fehler verursacht werden, zu verhindern.

3.1 Überblick zum Hochverfügbarkeits-Cluster für den Admin-Knoten

Hinter einem Hochverfügbarkeits-Cluster steckt die Überlegung, dass im Fall eines Fehlers im Cluster-Knoten der andere Knoten automatisch dessen Rolle übernimmt, einschließlich des virtualisierten Admin-Knoten. Auf diese Weise bemerken andere Ceph-Cluster-Knoten gar nicht, dass im Admin-Knoten ein Fehler aufgetreten ist.

Für die Mindestlösung eines Hochverfügbarkeits-Clusters für den Admin-Knoten ist die folgende Hardware erforderlich:

  • Zwei Bare Metal Server, auf denen SUSE Linux Enterprise mit der Hochverfügbarkeitserweiterung ausgeführt und der Admin-Knoten virtualisiert wird.

  • Mindestens zwei redundante Pfade für die Netzwerkkommunikation, beispielsweise durch Netzwerkgeräte-Bonding.

  • Gemeinsamer Speicher zum Hosten von Festplatten-Images der virtuellen Maschine des Admin-Knoten. Beide Server müssen auf den gemeinsamen Server zugreifen können. Es kann sich dabei beispielsweise um einen NFS-Export, eine Samba-Freigabe oder ein iSCSI-Ziel handeln.

Weitere detaillierte Informationen zu den Cluster-Anforderungen finden Sie in https://documentation.suse.com/sle-ha/15-SP2/html/SLE-HA-all/art-sleha-install-quick.html#sec-ha-inst-quick-req.

Hochverfügbarkeits-Cluster mit zwei Knoten für den Admin-Knoten
Abbildung 3.1: Hochverfügbarkeits-Cluster mit zwei Knoten für den Admin-Knoten

3.2 Erstellen eines Hochverfügbarkeits-Clusters mit dem Admin-Knoten

Der folgende Vorgang fasst die wichtigsten Schritte zur Erstellung des Hochverfügbarkeits-Clusters zur Virtualisierung des Admin-Knoten zusammen. Weitere detaillierte Informationen finden Sie unter den angegebenen Links.

  1. Richten Sie einen einfachen Hochverfügbarkeits-Cluster mit zwei Knoten und gemeinsamem Speicher ein. Eine Beschreibung hierzu finden Sie unter https://documentation.suse.com/sle-ha/15-SP2/html/SLE-HA-all/art-sleha-install-quick.html.

  2. Installieren Sie in beiden Cluster-Knoten alle Pakete, die zur Ausführung des KVM-Hypervisors und des libvirt-Toolkits erforderlich sind. Eine Beschreibung hierzu finden Sie unter https://documentation.suse.com/sles/15-SP2/html/SLES-all/cha-vt-installation.html#sec-vt-installation-kvm.

  3. Erstellen Sie im ersten Cluster-Knoten eine neue virtuelle KVM-Maschine und nutzen Sie dazu libvirt. Eine Beschreibung hierzu finden Sie unter https://documentation.suse.com/sles/15-SP2/html/SLES-all/cha-kvm-inst.html#sec-libvirt-inst-virt-install. Speichern Sie die Festplatten-Images der VM im vorkonfigurierten gemeinsamen Speicher.

  4. Exportieren Sie nach Abschluss der VM-Einrichtung deren Konfiguration in eine XML-Datei im gemeinsamen Speicher. Verwenden Sie folgende Syntax:

    root # virsh dumpxml VM_NAME > /path/to/shared/vm_name.xml
  5. Erstellen Sie eine Ressource für die VM des Admin-Knoten. Allgemeine Informationen zum Erstellen von Hochverfügbarkeits-Ressourcen finden Sie unter https://documentation.suse.com/sle-ha/15-SP2/html/SLE-HA-all/cha-conf-hawk2.html. Detaillierte Informationen zum Erstellen einer Ressource für eine virtuelle KVM-Maschine finden Sie unter http://www.linux-ha.org/wiki/VirtualDomain_%28resource_agent%29.

  6. Stellen Sie auf dem neu erstellten VM-Gast den Admin-Knoten einschließlich der dort benötigten weiteren Services bereit. Befolgen Sie die relevanten Anweisungen unter Abschnitt 5.2, „Bereitstellen von Salt“. Stellen Sie gleichzeitig die restlichen Ceph-Cluster-Knoten auf den Servern ohne Hochverfügbarkeits-Cluster bereit.

Teil II Bereitstellen des Ceph-Clusters

  • 4 Einführung und allgemeine Aufgaben
  • Ab SUSE Enterprise Storage 7 werden Ceph-Services als Container bereitgestellt, indem cephadm anstelle von RPM-Paketen verwendet wird. Weitere Informationen finden Sie in Kapitel 5, Bereitstellung mit cephadm.

  • 5 Bereitstellung mit cephadm
  • SUSE Enterprise Storage 7 verwendet das Salt-basierte ceph-salt-Werkzeug, um das Betriebssystem auf jedem beteiligten Cluster-Knoten für die Bereitstellung über cephadm vorzubereiten. cephadm richtet einen Ceph-Cluster ein und verwaltet ihn. Dazu wird vom Ceph-Manager-Daemon über SSH eine Verbindung…

4 Einführung und allgemeine Aufgaben

Ab SUSE Enterprise Storage 7 werden Ceph-Services als Container bereitgestellt, indem cephadm anstelle von RPM-Paketen verwendet wird. Weitere Informationen finden Sie in Kapitel 5, Bereitstellung mit cephadm.

4.1 Lesen Sie die Versionshinweise

In den Versionshinweisen finden Sie zusätzliche Informationen zu den Änderungen, die seit der vorigen Version von SUSE Enterprise Storage vorgenommen wurden. Informieren Sie sich in den Versionshinweisen über Folgendes:

  • Sind bei der Hardware besondere Überlegungen zu beachten?

  • Wurden erhebliche Änderungen an den verwendeten Software-Paketen vorgenommen?

  • Gelten besondere Vorsichtsmaßnahmen für die vorliegende Installation?

In den Versionshinweisen finden Sie auch Informationen, die erst nach der Fertigstellung des Handbuchs bekannt wurden. Auch bekannte Probleme werden beschrieben.

Nach Installation des Pakets release-notes-sesfinden Sie die Versionshinweise lokal im Verzeichnis /usr/share/doc/release-notes oder online unter https://www.suse.com/releasenotes/.

5 Bereitstellung mit cephadm

SUSE Enterprise Storage 7 verwendet das Salt-basierte ceph-salt-Werkzeug, um das Betriebssystem auf jedem beteiligten Cluster-Knoten für die Bereitstellung über cephadm vorzubereiten. cephadm richtet einen Ceph-Cluster ein und verwaltet ihn. Dazu wird vom Ceph-Manager-Daemon über SSH eine Verbindung zu den Hosts hergestellt. cephadm verwaltet den gesamten Lebenszyklus eines Ceph-Clusters. Es beginnt mit dem Bootstrapping eines winzigen Clusters auf einem einzelnen Knoten (ein MON- und MGR-Service) und verwendet dann die Orchestrierungsschnittstelle, um den Cluster auf alle Hosts zu erweitern und alle Ceph-Services bereitzustellen. Sie können dies über die Ceph-Kommandozeilenschnittstelle (CLI) oder teilweise über Ceph Dashboard (GUI) durchführen.

Wichtig
Wichtig

Beachten Sie, dass in der Ceph-Community-Dokumentation das Kommando cephadm bootstrap bei der Erstinstallation verwendet wird. ceph-salt ruft das Kommando cephadm bootstrap auf und sollte nicht direkt ausgeführt werden. Eine manuelle Bereitstellung eines Ceph-Clusters mit cephadm bootstrap wird nicht unterstützt.

Sie müssen die folgenden Aufgaben ausführen, um einen Ceph-Cluster mithilfe von cephadm bereitzustellen:

  1. Installieren Sie das zugrunde liegende Betriebssystem (SUSE Linux Enterprise Server 15 SP2) auf allen Cluster-Knoten und nehmen Sie die Grundkonfiguration vor.

  2. Stellen Sie die Salt-Infrastruktur auf allen Cluster-Knoten bereit, um die ersten Bereitstellungsvorbereitungen über ceph-salt durchzuführen.

  3. Konfigurieren Sie die grundlegenden Eigenschaften des Clusters über ceph-salt und stellen Sie ihn bereit.

  4. Fügen Sie dem Cluster neue Knoten und Rollen hinzu und stellen Sie darauf mit cephadm Services bereit.

5.1 Installieren und Konfigurieren von SUSE Linux Enterprise Server

  1. Installieren und registrieren Sie SUSE Linux Enterprise Server 15 SP2 auf jedem Cluster-Knoten. Während der Installation von SUSE Enterprise Storage ist der Zugriff auf die Aktualisierungs-Repositorys erforderlich, weshalb eine Registrierung obligatorisch ist. Fügen Sie mindestens die folgenden Module hinzu:

    • Basesystem Module

    • Server Applications Module

    Weitere Einzelheiten zur Installation von SUSE Linux Enterprise Server finden Sie unter https://documentation.suse.com/sles/15-SP2/html/SLES-all/cha-install.html.

  2. Installieren Sie die SUSE Enterprise Storage 7-Erweiterung auf jedem Cluster-Knoten.

    Tipp
    Tipp: Installation von SUSE Enterprise Storage zusammen mit SUSE Linux Enterprise Server

    Sie können die SUSE Enterprise Storage 7-Erweiterung entweder nach der Installation von SUSE Linux Enterprise Server 15 SP2 separat installieren oder sie während des Installationsvorgangs von SUSE Linux Enterprise Server 15 SP2 hinzufügen.

    Weitere Details zur Installation von Erweiterungen finden Sie unter https://documentation.suse.com/sles/15-SP2/html/SLES-all/cha-register-sle.html.

  3. Konfigurieren Sie Netzwerkeinstellungen einschließlich der ordnungsgemäßen DNS-Namensauflösung auf jedem Knoten. Weitere Informationen zum Konfigurieren eines Netzwerks finden Sie unter https://documentation.suse.com/sles/15-SP2/html/SLES-all/cha-network.html#sec-network-yast. Weitere Informationen zum Konfigurieren eines DNS Servers finden Sie unter https://documentation.suse.com/sles/15-SP2/html/SLES-all/cha-dns.html.

5.2 Bereitstellen von Salt

SUSE Enterprise Storage verwendet Salt und ceph-salt für die anfängliche Vorbereitung des Clusters. Mit Salt können Sie Kommandos auf mehreren Cluster-Knoten gleichzeitig von einem dedizierten Host, dem Salt Master, aus konfigurieren und ausführen. Vor dem Bereitstellen von Salt sollten Sie folgende wichtige Punkte beachten:

  • Salt Minions sind die Knoten, die von einem dedizierten Knoten namens Salt Master gesteuert werden.

  • Wenn der Salt-Master-Host Teil des Ceph-Clusters sein soll, muss er seinen eigenen Salt Minion ausführen, was aber keine Voraussetzung ist.

    Tipp
    Tipp: Freigeben mehrerer Rollen pro Server

    Sie erreichen die optimale Leistung Ihres Ceph-Clusters, wenn jede Rolle in einem separaten Knoten bereitgestellt wird. Manchmal ist es jedoch bei Bereitstellungen erforderlich, einen Knoten für mehrere Rollen freizugeben. Stellen Sie die Ceph OSD-, Metadatenserver- oder Ceph Monitor-Rolle nicht auf dem Admin-Knoten bereit, um Probleme mit der Leistung und dem Upgrade-Vorgang zu vermeiden.

  • Salt Minions müssen den Hostnamen des Salt Masters im gesamten Netzwerk korrekt auflösen. Standardmäßig suchen sie nach dem Hostnamen salt. Sie können jedoch auch in der Datei /etc/salt/minion jeden vom Netzwerk erreichbaren Hostnamen angeben.

  1. Installieren Sie salt-master auf dem Salt-Master-Knoten:

    root@master # zypper in salt-master
  2. Überprüfen Sie, ob der salt-master-Service aktiviert und gestartet wurde und aktivieren und starten Sie ihn gegebenenfalls:

    root@master # systemctl enable salt-master.service
    root@master # systemctl start salt-master.service
  3. Falls Sie beabsichtigen, die Firewall zu verwenden, überprüfen Sie, ob im Salt-Master-Knoten die Ports 4505 und 4506 für alle Salt-Minion-Knoten offen sind. Wenn die Ports geschlossen sind, können Sie sie mit dem Kommando yast2 firewall öffnen. Lassen Sie dazu den salt-master-Service für die entsprechende Zone zu. Zum Beispiel Öffentlich.

  4. Installieren Sie das Paket salt-minion in allen Minion-Knoten.

    root@minion > zypper in salt-minion
  5. Bearbeiten Sie /etc/salt/minion und kommentieren Sie die folgende Zeile aus:

    #log_level_logfile: warning

    Ändern Sie die Protokollstufe Warnung zu Info.

    Anmerkung
    Anmerkung: log_level_logfile und log_level

    Während mit log_level gesteuert wird, welche Protokollmeldungen auf dem Bildschirm angezeigt werden, wird mit log_level_logfile gesteuert, welche Protokollmeldungen in /var/log/salt/minion geschrieben werden.

    Anmerkung
    Anmerkung

    Stellen Sie sicher, dass Sie die Protokollebene auf allen Cluster-Knoten (Minions) ändern.

  6. Vergewissern Sie sich, dass der vollqualifizierte Domänenname jedes Knotens von allen anderen Knoten in eine IP-Adresse im öffentlichen Clusternetzwerk aufgelöst werden kann.

  7. Konfigurieren Sie alle Minions für die Verbindung mit dem Master. Wenn Ihr Salt Master mit dem Hostnamen salt nicht erreichbar ist, bearbeiten Sie die Datei /etc/salt/minion oder erstellen Sie eine neue Datei /etc/salt/minion.d/master.conf mit folgendem Inhalt:

    master: host_name_of_salt_master

    Wenn Sie an den oben genannten Konfigurationsdateien Änderungen vorgenommen haben, starten Sie den Salt-Service auf allen entsprechenden Salt Minions neu:

    root@minion > systemctl restart salt-minion.service
  8. Überprüfen Sie, ob der salt-minion Service in allen Knoten aktiviert und gestartet wurde. Aktivieren und starten Sie ihn, falls erforderlich:

    root # systemctl enable salt-minion.service
    root # systemctl start salt-minion.service
  9. Überprüfen Sie den Fingerabdruck der einzelnen Salt Minions und akzeptieren Sie alle Salt-Schlüssel am Salt Master, wenn die Fingerabdrücke übereinstimmen.

    Anmerkung
    Anmerkung

    Wenn ein leerer Fingerabdruck des Salt Minions zurückgegeben wird, prüfen Sie, ob der Salt Minion über eine Salt-Master-Konfiguration verfügt und ob der Minion mit dem Salt Master kommunizieren kann.

    Zeigen Sie den Fingerabdruck der einzelnen Minions an:

    root@minion > salt-call --local key.finger
    local:
    3f:a3:2f:3f:b4:d3:d9:24:49:ca:6b:2c:e1:6c:3f:c3:83:37:f0:aa:87:42:e8:ff...

    Nachdem Sie die Fingerabdrücke aller Salt Minions gesammelt haben, listen Sie die Fingerabdrücke aller nicht akzeptierten Minion-Schlüssel am Salt Master auf:

    root@master # salt-key -F
    [...]
    Unaccepted Keys:
    minion1:
    3f:a3:2f:3f:b4:d3:d9:24:49:ca:6b:2c:e1:6c:3f:c3:83:37:f0:aa:87:42:e8:ff...

    Wenn die Fingerabdrücke der Minions übereinstimmen, akzeptieren Sie sie:

    root@master # salt-key --accept-all
  10. Verifizieren Sie, dass die Schlüssel akzeptiert wurden:

    root@master # salt-key --list-all
  11. Testen Sie, ob alle Salt Minions antworten:

    root@master # salt-run manage.status

5.3 Bereitstellen des Ceph-Clusters

In diesem Abschnitt werden Sie durch den Prozess der Bereitstellung eines Ceph-Basisclusters geführt. Lesen Sie die folgenden Unterabschnitte sorgfältig durch und führen Sie die enthaltenen Kommandos in der angegebenen Reihenfolge aus.

5.3.1 Installieren von ceph-salt

ceph-salt stellt Werkzeuge zum Bereitstellen von Ceph-Clustern bereit, die von cephadm verwaltet werden. ceph-salt nutzt die Salt-Infrastruktur, um die Verwaltung des Betriebssystems – beispielsweise Softwareaktualisierungen oder Zeitsynchronisierung – durchzuführen und Rollen für Salt Minions zu definieren.

Installieren Sie am Salt Master das Paket ceph-salt :

root@master # zypper install ceph-salt

Mit obigem Kommando wurde ceph-salt-formula als Abhängigkeit installiert, die die Salt-Master-Konfiguration durch Einfügen zusätzlicher Dateien im Verzeichnis /etc/salt/master.d geändert hat. Um die Änderungen anzuwenden, starten Sie salt-master.service neu und synchronisieren Sie die Salt-Module:

root@master # systemctl restart salt-master.service
root@master # salt \* saltutil.sync_all

5.3.2 Konfigurieren der Clustereigenschaften

Konfigurieren Sie mit dem Kommando ceph-salt config die grundlegenden Eigenschaften des Clusters.

Wichtig
Wichtig

Die Datei /etc/ceph/ceph.conf wird von cephadm verwaltet und sollte nicht von Benutzern bearbeitet werden. Die Ceph-Konfigurationsparameter sollten mit dem neuen Kommando ceph config festgelegt werden. Weitere Informationen zu diesem Thema finden Sie unter dem Stichwort Book “Betriebs- und Verwaltungshandbuch”, Chapter 28 “Konfiguration des Ceph-Clusters”, Section 28.2 “Konfigurationsdatenbank”.

5.3.2.1 Verwenden der ceph-salt-Shell

Wenn Sie ceph-salt config ohne Pfad oder Unterbefehl ausführen, gelangen Sie in eine interaktive ceph-salt-Shell. Die Shell ist praktisch, wenn Sie mehrere Eigenschaften in einem Stapel konfigurieren müssen und nicht die vollständige Kommandosyntax eingeben möchten.

root@master # ceph-salt config
/> ls
o- / ............................................................... [...]
  o- ceph_cluster .................................................. [...]
  | o- minions .............................................. [no minions]
  | o- roles ....................................................... [...]
  |   o- admin .............................................. [no minions]
  |   o- bootstrap ........................................... [no minion]
  |   o- cephadm ............................................ [no minions]
  |   o- tuned ..................................................... [...]
  |     o- latency .......................................... [no minions]
  |     o- throughput ....................................... [no minions]
  o- cephadm_bootstrap ............................................. [...]
  | o- advanced .................................................... [...]
  | o- ceph_conf ................................................... [...]
  | o- ceph_image_path .................................. [ no image path]
  | o- dashboard ................................................... [...]
  | | o- force_password_update ................................. [enabled]
  | | o- password ................................................ [admin]
  | | o- ssl_certificate ....................................... [not set]
  | | o- ssl_certificate_key ................................... [not set]
  | | o- username ................................................ [admin]
  | o- mon_ip .................................................. [not set]
  o- containers .................................................... [...]
  | o- registries_conf ......................................... [enabled]
  | | o- registries .............................................. [empty]
  | o- registry_auth ............................................... [...]
  |   o- password .............................................. [not set]
  |   o- registry .............................................. [not set]
  |   o- username .............................................. [not set]
  o- ssh ............................................... [no key pair set]
  | o- private_key .................................. [no private key set]
  | o- public_key .................................... [no public key set]
  o- time_server ........................... [enabled, no server host set]
    o- external_servers .......................................... [empty]
    o- servers ................................................... [empty]
    o- subnet .................................................. [not set]

Wie Sie der Ausgabe des ls-Kommandos von ceph-salt entnehmen können, ist die Cluster-Konfiguration in einer Baumstruktur organisiert. Sie haben zwei Möglichkeiten zum Konfigurieren einer bestimmten Eigenschaft des Clusters in der ceph-salt-Shell:

  • Führen Sie das Kommando von der aktuellen Position aus und geben Sie den absoluten Pfad zur Eigenschaft als erstes Argument ein:

    /> /cephadm_bootstrap/dashboard ls
    o- dashboard ....................................................... [...]
      o- force_password_update ..................................... [enabled]
      o- password .................................................... [admin]
      o- ssl_certificate ........................................... [not set]
      o- ssl_certificate_key ....................................... [not set]
      o- username .................................................... [admin]
    /> /cephadm_bootstrap/dashboard/username set ceph-admin
    Value set.
  • Wechseln Sie zu dem Pfad, dessen Eigenschaft Sie konfigurieren müssen, und führen Sie das Kommando aus:

    /> cd /cephadm_bootstrap/dashboard/
    /ceph_cluster/minions> ls
    o- dashboard ....................................................... [...]
      o- force_password_update ..................................... [enabled]
      o- password .................................................... [admin]
      o- ssl_certificate ........................................... [not set]
      o- ssl_certificate_key ....................................... [not set]
      o- username ................................................[ceph-admin]
Tipp
Tipp: Automatische Vervollständigung von Konfigurations-Snippets

Während Sie sich in einer ceph-salt-Shell befinden, können Sie die Funktion der automatischen Vervollständigung ähnlich wie in einer normalen Linux-Shell (Bash) verwenden. Sie vervollständigt Konfigurationspfade, Unterkommandos oder Salt-Minion-Namen. Beim automatischen Vervollständigen eines Konfigurationspfads haben Sie zwei Möglichkeiten:

  • Drücken Sie zweimal die TAB-Taste →|, damit die Shell einen Pfad relativ zu Ihrer aktuellen Position beendet.

  • Geben Sie / ein und drücken Sie zweimal die TAB-Taste →|, damit die Shell einen absoluten Pfad beendet.

Tipp
Tipp: Navigieren mit den Cursortasten

Wenn Sie cd aus der ceph-salt-Shell heraus ohne Pfad eingeben, wird durch das Kommando eine Baumstruktur der Cluster-Konfiguration ausgegeben, wobei die Zeile des aktuellen Pfads aktiv ist. Mit den Cursortasten nach oben und nach unten navigieren Sie durch die einzelnen Zeilen. Nach dem Bestätigen mit der Eingabetaste Eingabetaste wird der Konfigurationspfad zum letzten aktiven Pfad geändert.

Wichtig
Wichtig: Konvention

Wir verwenden eine einzige Kommandosyntax ohne Eingabe der ceph-salt-Shell, um die Dokumentation konsistent zu halten. Sie können zum Beispiel den Cluster-Konfigurationsbaum mit folgendem Kommando auflisten:

root@master # ceph-salt config ls

5.3.2.2 Hinzufügen von Salt Minions

Nehmen Sie alle oder eine Teilmenge der von uns in Abschnitt 5.2, „Bereitstellen von Salt“ bereitgestellten und akzeptierten Salt Minions in die Ceph-Cluster-Konfiguration auf. Sie können die Salt Minions entweder mit ihren vollständigen Namen angeben oder mit einem Globausdruck „*“ und „?“ mehrere Salt Minions gleichzeitig hinzufügen. Verwenden Sie das Unterkommando add unter dem Pfad /ceph_cluster/minions. Mit folgendem Kommando werden alle akzeptierten Salt Minions hinzugefügt:

root@master # ceph-salt config /ceph_cluster/minions add '*'

Überprüfen Sie, ob die angegebenen Salt Minions hinzugefügt wurden:

root@master # ceph-salt config /ceph_cluster/minions ls
o- minions ................................................. [Minions: 5]
  o- ses-master.example.com .................................. [no roles]
  o- ses-min1.example.com .................................... [no roles]
  o- ses-min2.example.com .................................... [no roles]
  o- ses-min3.example.com .................................... [no roles]
  o- ses-min4.example.com .................................... [no roles]

5.3.2.3 Festlegen von Salt Minions, die von cephadm verwaltet werden

Geben Sie an, welche Knoten zum Ceph-Cluster gehören und von cephadm verwaltet werden sollen. Beziehen Sie alle Knoten ein, die Ceph-Services ausführen, sowie den Admin-Knoten:

root@master # ceph-salt config /ceph_cluster/roles/cephadm add '*'

5.3.2.4 Festlegen des Admin Knoten

Der Admin-Knoten ist der Knoten, auf dem die Konfigurationsdatei ceph.conf und der Ceph-Admin-Schlüsselbund installiert sind. Normalerweise führen Sie Ceph-spezifische Kommandos auf dem Admin-Knoten aus.

Tipp
Tipp: Salt Master und Admin-Knoten auf demselben Knoten

In einer homogenen Umgebung, in der alle oder die meisten Hosts zu SUSE Enterprise Storage gehören, wird empfohlen, dass sich der Admin-Knoten auf demselben Host befindet wie der Salt Master.

In einer heterogenen Umgebung, in der eine Salt-Infrastruktur mehr als einen Cluster hostet (z. B. SUSE Enterprise Storage zusammen mit SUSE Manager), sollten Sie den Admin-Knoten nicht auf demselben Host wie den Salt Master platzieren.

Geben Sie den Admin-Knoten mit folgendem Kommando an:

root@master # ceph-salt config /ceph_cluster/roles/admin add ses-master.example.com
1 minion added.
root@master # ceph-salt config /ceph_cluster/roles/admin ls
o- admin ................................................... [Minions: 1]
  o- ses-master.example.com ...................... [Other roles: cephadm]
Tipp
Tipp: Installieren Sie ceph.conf und den Admin-Schlüsselbund auf mehreren Knoten

Sie können die Ceph-Konfigurationsdatei und den Admin-Schlüsselbund auf mehreren Knoten installieren, wenn dies für Ihre Bereitstellung erforderlich ist. Vermeiden Sie aus Sicherheitsgründen, sie auf allen Knoten des Clusters zu installieren.

5.3.2.5 Festlegen des ersten MON/MGR-Knotens

Sie müssen angeben, welcher der Salt Minions des Clusters das Bootstrapping des Clusters durchführen soll. Dieser Minion führt dann die Services Ceph Monitor und Ceph Manager als Erster aus.

root@master # ceph-salt config /ceph_cluster/roles/bootstrap set ses-min1.example.com
Value set.
root@master # ceph-salt config /ceph_cluster/roles/bootstrap ls
o- bootstrap ..................................... [ses-min1.example.com]

Zusätzlich müssen Sie die IP-Adresse des Bootstrap-MON im öffentlichen Netzwerk angeben, um sicherzustellen, dass beispielsweise der Parameter public_network korrekt festgelegt wird:

root@master # ceph-salt config /cephadm_bootstrap/mon_ip set 192.168.10.20

5.3.2.6 Festlegen von abgestimmten Profilen

Sie müssen angeben, in welchen der Minions des Clusters aktiv abgestimmte Profile vorhanden sein sollen. Fügen Sie dazu diese Rollen mit den folgenden Kommandos explizit hinzu:

Anmerkung
Anmerkung

Ein Minion kann nicht gleichzeitig über die Rollen Latenz und Durchsatz verfügen.

root@master # ceph-salt config /ceph_cluster/roles/tuned/latency add ses-min1.example.com
Adding ses-min1.example.com...
1 minion added.
root@master # ceph-salt config /ceph_cluster/roles/tuned/throughput add ses-min2.example.com
Adding ses-min2.example.com...
1 minion added.

5.3.2.7 Generieren eines SSH-Schlüsselpaars

cephadm kommuniziert mit den Cluster-Knoten über das SSH-Protokoll. Ein Benutzerkonto namens cephadm wird automatisch erstellt und für die SSH-Kommunikation verwendet.

Sie müssen den privaten und den öffentlichen Teil des SSH-Schlüsselpaars generieren:

root@master # ceph-salt config /ssh generate
Key pair generated.
root@master # ceph-salt config /ssh ls
o- ssh .................................................. [Key Pair set]
  o- private_key ..... [53:b1:eb:65:d2:3a:ff:51:6c:e2:1b:ca:84:8e:0e:83]
  o- public_key ...... [53:b1:eb:65:d2:3a:ff:51:6c:e2:1b:ca:84:8e:0e:83]

5.3.2.8 Konfigurieren des Zeitservers

Alle Cluster-Knoten müssen ihre Zeit mit einer zuverlässigen Zeitquelle synchronisieren. Es gibt mehrere Szenarien für die Zeitsynchronisierung:

  • Deaktivieren Sie die Zeitserververarbeitung vollständig, wenn alle Cluster-Knoten bereits so konfiguriert sind, dass sie ihre Zeit mit einem NTP-Service ihrer Wahl synchronisieren:

    root@master # ceph-salt config /time_server disable
  • Geben Sie den Hostnamen der Zeitquelle an, wenn Ihr Standort bereits über eine einzige Zeitquelle verfügt:

     root@master # ceph-salt config /time_server/servers add time-server.example.com
  • Alternativ bietet ceph-salt die Möglichkeit, einen der Salt Minions so zu konfigurieren, dass er als Zeitserver für den Rest des Clusters dient. Dies wird manchmal auch als „interner Zeitserver“ bezeichnet. In diesem Szenario konfiguriert ceph-salt den internen Zeitserver (der einer der Salt Minions sein sollte) so, dass er seine Zeit mit einem externen Zeitserver, zum Beispiel pool.ntp.org, synchronisiert. Alle anderen Minions werden so konfiguriert, dass sie ihre Zeit von dem internen Zeitserver beziehen. Dies kann wie folgt erreicht werden:

    root@master # ceph-salt config /time_server/servers add ses-master.example.com
    root@master # ceph-salt config /time_server/external_servers add pool.ntp.org

    Die Option /time_server/subnet gibt das Teilnetz an, aus dem NTP-Clients auf den NTP-Server zugreifen dürfen. Sie wird automatisch festgelegt, wenn Sie /time_server/servers angeben. Führen Sie folgendes Kommando aus, wenn Sie sie ändern oder manuell angeben müssen:

    root@master # ceph-salt config /time_server/subnet set 10.20.6.0/24

Prüfen Sie die Einstellungen für den Zeitserver:

root@master # ceph-salt config /time_server ls
o- time_server ................................................ [enabled]
  o- external_servers ............................................... [1]
  | o- pool.ntp.org ............................................... [...]
  o- servers ........................................................ [1]
  | o- ses-master.example.com ..................................... [...]
  o- subnet .............................................. [10.20.6.0/24]

Weitere Informationen zum Einrichten der Zeitsynchronisierung finden Sie unter https://documentation.suse.com/sles/15-SP2/html/SLES-all/cha-ntp.html#sec-ntp-yast.

5.3.2.9 Konfigurieren des Berechtigungsnachweises für die Anmeldung am Ceph Dashboard

Ceph Dashboard ist nach der Bereitstellung des Basisclusters verfügbar. Um darauf zuzugreifen, müssen Sie einen gültigen Benutzernamen und ein Passwort festlegen, zum Beispiel:

root@master # ceph-salt config /cephadm_bootstrap/dashboard/username set admin
root@master # ceph-salt config /cephadm_bootstrap/dashboard/password set PWD
Tipp
Tipp: Erzwingen der Passwortaktualisierung

Standardmäßig wird der erste Dashboard-Benutzer gezwungen, sein Passwort bei der ersten Anmeldung am Dashboard zu ändern. Deaktivieren Sie diese Funktion mit folgendem Kommando:

root@master # ceph-salt config /cephadm_bootstrap/dashboard/force_password_update disable

5.3.2.10 Konfigurieren des Pfads zu den Container-Images

cephadm benötigt einen gültigen URI-Pfad zu Container-Images für die Bereitstellung. Prüfen Sie, ob der Standardpfad festgelegt ist:

root@master # ceph-salt config /cephadm_bootstrap/ceph_image_path ls

Wenn kein Standardpfad festgelegt ist oder für die Bereitstellung ein bestimmter Pfad erforderlich ist, fügen Sie ihn wie folgt hinzu:

root@master # ceph-salt config /cephadm_bootstrap/ceph_image_path set registry.suse.com/ses/7/ceph/ceph
Anmerkung
Anmerkung

Für den Überwachungs-Stack werden weitere Container-Images benötigt. Für eine Air-Gap-Bereitstellung sowie für die Bereitstellung von einer lokalen Registrierung sollten Sie diese Images an diesem Punkt abrufen, um Ihre lokale Registrierung entsprechend vorzubereiten.

Beachten Sie, dass diese Container-Images nicht von ceph-salt für die Bereitstellung verwendet werden. Es ist eine Vorbereitung für einen späteren Schritt, bei dem cephadm für die Bereitstellung oder die Migration von Überwachungskomponenten eingesetzt wird.

Weitere Informationen zu den vom Überwachungs-Stack verwendeten Images und dazu, wie Sie sie anpassen können, finden Sie im Book “Betriebs- und Verwaltungshandbuch”, Chapter 16 “Überwachung und Warnungen”, Section 16.1 “Konfigurieren von benutzerdefinierten oder lokalen Images”.

5.3.2.11 Konfigurieren der Container-Registrierung

Optional können Sie eine lokale Container-Registrierung festlegen. Sie dient als Spiegel der Registrierung registry.suse.com. Denken Sie daran, dass Sie die lokale Registrierung neu synchronisieren müssen, wenn neue aktualisierte Container von registry.suse.com verfügbar sind.

In den folgenden Szenarien ist es nützlich, eine lokale Registrierung zu erstellen:

  • Sie haben viele Cluster-Knoten und möchten Downloadzeit und Bandbreite sparen, indem Sie einen lokalen Spiegel der Container-Images erstellen.

  • Ihr Cluster hat keinen Zugriff auf die Online-Registrierung (eine Air-Gap-Bereitstellung), und Sie benötigen einen lokalen Spiegel, von dem Sie die Container-Images abrufen.

  • Wenn Konfigurations- oder Netzwerkprobleme Ihren Cluster daran hindern, über eine sichere Verbindung auf Remote-Registrierungen zuzugreifen, so benötigen Sie stattdessen eine lokale, unverschlüsselte Registrierung.

Wichtig
Wichtig

Zum Bereitstellen von Program Temporary Fixes (PTFs) auf einem unterstützten System müssen Sie eine lokale Container-Registrierung bereitstellen.

Gehen Sie folgendermaßen vor, um eine lokale Registrierungs-URL zusammen mit dem Berechtigungsnachweis für den Zugriff zu konfigurieren:

  1. Konfigurieren Sie die URL der lokalen Registrierung:

    cephuser@adm > ceph-salt config /containers/registry_auth/registry set REGISTRY_URL
  2. Konfigurieren Sie den Benutzernamen und das Passwort für den Zugriff auf die lokale Registrierung:

    cephuser@adm > ceph-salt config /containers/registry_auth/username set REGISTRY_USERNAME
    cephuser@adm > ceph-salt config /containers/registry_auth/password set REGISTRY_PASSWORD
  3. Führen Sie ceph-salt apply aus, um den Salt-Pillar auf allen Minions zu aktualisieren.

Tipp
Tipp: Registrierungs-Cache

Sie können einen Registrierungs-Cache konfigurieren, um zu verhindern, dass die lokale Registrierung neu synchronisiert wird, wenn neue aktualisierte Container auftauchen.

Für die Methoden der Cloud-nativen Anwendungsentwicklung und Zustellung sind eine Registrierung und eine CI/CD-Instanz (Continuous Integration/Delivery) für die Entwicklung und Produktion von Container-Images erforderlich. Sie können in dieser Instanz eine private Registrierung verwenden.

5.3.2.12 Aktivieren der Datenverschlüsselung während der Ausführung (msgr2)

Das Messenger-v2-Protokoll (MSGR2) ist das On-Wire-Protokoll von Ceph. Es bietet einen Sicherheitsmodus, der alle Daten verschlüsselt, die über das Netzwerk übertragen werden, verkapselt Authentifizierungs-Nutzlasten und ermöglicht die zukünftige Integration von neuen Authentifizierungsmodi (wie Kerberos).

Wichtig
Wichtig

msgr2 wird derzeit nicht von Linux-Kernel-Ceph-Clients, wie CephFS und RBG, unterstützt.

Ceph-Daemons können an mehrere Ports binden, so dass sich sowohl ältere Ceph-Clients als auch neue v2-fähige Clients mit demselben Cluster verbinden können. Standardmäßig binden MONs jetzt an den neuen, von der IANA zugewiesenen Port 3300 (CE4h oder 0xCE4) für das neue v2-Protokoll. Für das alte v1-Protokoll binden Sie auch an den alten Standardport 6789.

Das v2-Protokoll (MSGR2) unterstützt zwei Verbindungsmodi:

crc mode (CRC-Modus)

Eine starke anfängliche Authentifizierung beim Aufbauen der Verbindung und eine CRC32C-Integritätsprüfung.

secure mode (sicherer Modus)

Eine starke anfängliche Authentifizierung beim Aufbauen der Verbindung und eine vollständige Verschlüsselung des gesamten Datenverkehrs nach der Authentifizierung, einschließlich einer kryptografischen Integritätsprüfung.

Für die meisten Verbindungen stehen Optionen zur Verfügung, mit denen die Verwendung der Modi gesteuert wird:

ms_cluster_mode (MS_Cluster_Modus)

Der für die Intra-Clusterkommunikation zwischen Ceph-Daemons verwendete Verbindungsmodus (oder die zulässigen Modi). Wenn mehrere Modi aufgeführt sind, werden die zuerst aufgeführten Modi bevorzugt.

ms_service_mode (MS_Service_Modus)

Eine Liste der zulässigen Modi, die für Clients beim Herstellen der Verbindung mit dem Cluster verwendet werden sollen.

ms_client_mode (MS_Client_Modus)

Eine nach Präferenz geordnete Liste von Verbindungsmodi, die für Clients bei der Kommunikation mit einem Ceph-Cluster verwendet (oder zugelassen) werden sollen.

Parallel dazu gibt es eine Reihe von Optionen, die speziell für Monitore gelten und es Administratoren ermöglichen, unterschiedliche (in der Regel sicherere) Anforderungen an die Kommunikation mit den Monitoren festzulegen.

ms_mon_cluster_mode (MS_MON_Cluster_Modus)

Der Verbindungsmodus (oder zulässige Modi), der zwischen den Monitoren verwendet werden soll.

ms_mon_service_mode (MS_MON_Service_Modus)

Eine Liste der für Clients oder andere Ceph-Daemons zulässigen Modi, die beim Herstellen der Verbindung mit Monitoren verwendet werden sollen.

ms_mon_client_mode (MS_MON_Client_Modus)

Eine nach Präferenz geordnete Liste der Verbindungsmodi, die für Clients oder Nicht-Monitor-Daemons beim Herstellen einer Verbindung mit Monitoren verwendet werden sollen.

Zum Aktivieren des MSGR2-Verschlüsselungsmodus während der Bereitstellung müssen Sie einige Konfigurationsoptionen zur ceph-salt-Konfiguration hinzufügen, bevor Sie ceph-salt apply ausführen.

Führen Sie für den sicheren Modus folgende Kommandos aus.

Fügen Sie den globalen Abschnitt zu ceph_conf im Konfigurationswerkzeug ceph-salt hinzu:

root@master # ceph-salt config /cephadm_bootstrap/ceph_conf add global

Wählen Sie eine der folgenden Optionen aus:

root@master # ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_cluster_mode "secure crc"
root@master # ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_service_mode "secure crc"
root@master # ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_client_mode "secure crc"
Anmerkung
Anmerkung

Stellen Sie sicher, dass secure vor crc steht.

Führen Sie zum Erzwingen des sicheren Modus folgende Kommandos aus:

root@master # ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_cluster_mode secure
root@master # ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_service_mode secure
root@master # ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_client_mode secure
Tipp
Tipp: Aktualisieren der Einstellungen

Wenn Sie eine der oben genannten Einstellungen ändern möchten, legen Sie die Konfigurationsänderungen im Monitor-Konfigurationsspeicher fest. Dies wird mit dem Kommando ceph config set erreicht.

root@master # ceph config set global CONNECTION_OPTION CONNECTION_MODE [--force]

Beispiel:

root@master # ceph config set global ms_cluster_mode "secure crc"

Überprüfen Sie den aktuellen Wert, einschließlich des Standardwerts, mit folgendem Kommando:

root@master # ceph config get CEPH_COMPONENT CONNECTION_OPTION

Führen Sie beispielsweise zum Abrufen des ms_cluster_mode für OSDs folgendes Kommando aus:

root@master # ceph config get osd ms_cluster_mode

5.3.2.13 Konfigurieren des Clusternetzwerks

Wenn Sie ein separates Clusternetzwerk betreiben, müssen Sie optional die IP-Adresse des Clusternetzwerks festlegen, gefolgt von dem Teil der Teilnetzmaske nach dem Schrägstrich, zum Beispiel 192.168.10.22/24.

Führen Sie zum Aktivieren von cluster_network (Clusternetzwerk) folgende Kommandos aus:

root@master # ceph-salt config /cephadm_bootstrap/ceph_conf add global
root@master # ceph-salt config /cephadm_bootstrap/ceph_conf/global set cluster_network NETWORK_ADDR

5.3.2.14 Überprüfen der Cluster-Konfiguration

Die minimale Cluster-Konfiguration ist abgeschlossen. Überprüfen Sie sie auf offensichtliche Fehler:

root@master # ceph-salt config ls
o- / ............................................................... [...]
  o- ceph_cluster .................................................. [...]
  | o- minions .............................................. [Minions: 5]
  | | o- ses-master.example.com .................................. [admin]
  | | o- ses-min1.example.com ......................... [bootstrap, admin]
  | | o- ses-min2.example.com ................................. [no roles]
  | | o- ses-min3.example.com ................................. [no roles]
  | | o- ses-min4.example.com ................................. [no roles]
  | o- roles ....................................................... [...]
  |   o- admin .............................................. [Minions: 2]
  |   | o- ses-master.example.com ....................... [no other roles]
  |   | o- ses-min1.example.com ................. [other roles: bootstrap]
  |   o- bootstrap ................................ [ses-min1.example.com]
  |   o- cephadm ............................................ [Minions: 5]
  |   o- tuned ..................................................... [...]
  |     o- latency .......................................... [no minions]
  |     o- throughput ....................................... [no minions]
  o- cephadm_bootstrap ............................................. [...]
  | o- advanced .................................................... [...]
  | o- ceph_conf ................................................... [...]
  | o- ceph_image_path ............... [registry.suse.com/ses/7/ceph/ceph]
  | o- dashboard ................................................... [...]
  |   o- force_password_update ................................. [enabled]
  |   o- password ................................... [randomly generated]
  |   o- username ................................................ [admin]
  | o- mon_ip ............................................ [192.168.10.20]
  o- containers .................................................... [...]
  | o- registries_conf ......................................... [enabled]
  | | o- registries .............................................. [empty]
  | o- registry_auth ............................................... [...]
  |   o- password .............................................. [not set]
  |   o- registry .............................................. [not set]
  |   o- username .............................................. [not set]
  o- ssh .................................................. [Key Pair set]
  | o- private_key ..... [53:b1:eb:65:d2:3a:ff:51:6c:e2:1b:ca:84:8e:0e:83]
  | o- public_key ...... [53:b1:eb:65:d2:3a:ff:51:6c:e2:1b:ca:84:8e:0e:83]
  o- time_server ............................................... [enabled]
    o- external_servers .............................................. [1]
    | o- 0.pt.pool.ntp.org ......................................... [...]
    o- servers ....................................................... [1]
    | o- ses-master.example.com .................................... [...]
    o- subnet ............................................. [10.20.6.0/24]
Tipp
Tipp: Status der Cluster-Konfiguration

Mit folgendem Kommando können Sie überprüfen, ob die Konfiguration des Clusters gültig ist:

root@master # ceph-salt status
cluster: 5 minions, 0 hosts managed by cephadm
config: OK

5.3.2.15 Exportieren von Cluster-Konfigurationen

Nachdem Sie den Basiscluster konfiguriert haben und die Konfiguration gültig ist, ist es sinnvoll, die Konfiguration in eine Datei zu exportieren:

root@master # ceph-salt export > cluster.json
Warnung
Warnung

Die Ausgabe von ceph-salt export enthält den privaten SSH-Schlüssel. Wenn Sie Bedenken hinsichtlich sicherheitsrelevanter Auswirkungen haben, führen Sie dieses Kommando nur mit den entsprechenden Vorsichtsmaßnahmen aus.

Führen Sie folgendes Kommando aus, falls Sie die Cluster-Konfiguration unterbrechen und zu einem Sicherungszustand zurückkehren müssen:

root@master # ceph-salt import cluster.json

5.3.3 Aktualisieren von Knoten und Bootstrapping von Minimalclustern

Aktualisieren Sie vor dem Bereitstellen des Clusters alle Softwarepakete auf allen Knoten:

root@master # ceph-salt update

Wenn ein Knoten während der Aktualisierung Reboot is needed (Reboot erforderlich) meldet, wurden wichtige Betriebssystempakete (z. B. der Kernel) auf eine neuere Version aktualisiert. Sie müssen den Knoten daraufhin neu booten, um die Änderungen zu übernehmen.

Für einen erforderlichen Reboot aller Knoten hängen Sie entweder die Option --reboot an

root@master # ceph-salt update --reboot

oder Sie booten sie neu in einem separaten Schritt:

root@master # ceph-salt reboot
Wichtig
Wichtig

Der Salt Master wird niemals mit den Kommandos ceph-salt update --reboot oder ceph-salt reboot neu gebootet. Wenn der Salt Master neu gebootet werden muss, müssen Sie ihn manuell neu booten.

Führen Sie nach dem Aktualisieren des Clusters ein Bootstrapping des Minimalclusters aus:

root@master # ceph-salt apply
Anmerkung
Anmerkung

Wenn das Bootstrapping abgeschlossen ist, verfügt der Cluster über einen Ceph Monitor und einen Ceph Manager.

Mit obigem Kommando wird eine interaktive Benutzeroberfläche geöffnet, die den aktuellen Fortschritt der einzelnen Minions anzeigt.

Bereitstellung eines Minimalclusters
Abbildung 5.1: Bereitstellung eines Minimalclusters
Tipp
Tipp: Nicht-interaktiver Modus

Wenn Sie die Konfiguration über ein Skript anwenden müssen, gibt es auch einen nicht-interaktiven Modus für die Bereitstellung. Dies ist auch nützlich, wenn Sie den Cluster von einem Remote-Rechner aus bereitstellen, da das ständige Aktualisieren der Fortschrittsinformationen auf dem Bildschirm über das Netzwerk störend sein kann:

root@master # ceph-salt apply --non-interactive

5.3.4 Prüfen der letzten Schritte

Nach dem Ausführen des Kommandos ceph-salt apply sollten Sie einen Ceph Monitor und einen Ceph Manager zur Verfügung haben. Sie sollten das Kommando ceph status erfolgreich auf jedem der Minions ausführen können, denen die Admin-Rolle als root oder der Benutzer cephadm mit sudo zugewiesen wurde.

In den nächsten Schritten werden mit cephadm zusätzlich der Ceph Monitor, der Ceph Manager, die OSDs, der Überwachungs-Stack und die Gateways installiert.

Bevor Sie fortfahren, überprüfen Sie die Netzwerkeinstellungen Ihres neuen Clusters. Zu diesem Zeitpunkt wurde die Einstellung public_network (öffentliches Netzwerk) auf der Grundlage dessen, was für /cephadm_bootstrap/mon_ip in der ceph-salt-Konfiguration eingegeben wurde, ausgefüllt. Diese Einstellung wurde jedoch nur auf Ceph Monitor angewendet. Sie können diese Einstellung mit dem folgenden Kommando überprüfen:

root@master # ceph config get mon public_network

Dies ist das Minimum, das Ceph benötigt, um zu funktionieren. Wir empfehlen jedoch, diese public_network-Einstellung global zu machen, was bedeutet, dass sie für alle Arten von Ceph-Daemons gilt und nicht nur für MONs:

root@master # ceph config set global public_network "$(ceph config get mon public_network)"
Anmerkung
Anmerkung

Dieser Schritt ist nicht erforderlich. Wenn Sie diese Einstellung jedoch nicht verwenden, überwachen die Ceph-OSDs und andere Daemons (außer Ceph Monitor) auf allen Adressen.

Führen Sie folgendes Kommando aus, wenn Sie möchten, dass Ihre OSDs untereinander über ein komplett separates Netzwerk kommunizieren:

root@master # ceph config set global cluster_network "cluster_network_in_cidr_notation"

Durch dieses Kommando wird sichergestellt, dass die in Ihrer Bereitstellung erstellten OSDs von Anfang an das vorgesehene Clusternetzwerk verwenden.

Wenn für Ihren Cluster dichte Knoten festgelegt sind (mehr als 62 OSDs pro Host), stellen Sie sicher, dass Sie genügend Ports für Ceph OSDs zuweisen. Der Standardbereich (6800–7300) lässt derzeit nicht mehr als 62 OSDs pro Host zu. Für einen Cluster mit dichten Knoten müssen Sie die Einstellung ms_bind_port_max auf einen geeigneten Wert anpassen. Jedes OSD verbraucht acht zusätzliche Ports. Bei einem Host, der zum Beispiel für die Ausführung von 96 OSDs eingerichtet ist, werden 768 Ports benötigt. ms_bind_port_max sollte mit folgendem Kommando mindestens auf 7568 festgelegt werden:

root@master # ceph config set osd.* ms_bind_port_max 7568

Sie müssen Ihre Firewall-Einstellungen entsprechend anpassen, damit dies funktioniert. Weitere Informationen zu diesem Thema finden Sie unter dem Stichwort Book “Troubleshooting Guide”, Chapter 13 “Hints and tips”, Section 13.7 “Firewall settings for Ceph”.

5.4 Bereitstellen von Services und Gateways

Nachdem Sie den Ceph-Basiscluster bereitgestellt haben, sollten Sie die wichtigsten Services auf weitere Cluster-Knoten verteilen. Stellen Sie zusätzliche Services bereit, um die Daten des Clusters für Clients zugänglich zu machen.

Derzeit unterstützen wir die Bereitstellung von Ceph-Services auf der Kommandozeile mit dem Ceph-Orchestrator (ceph orch-Unterkommandos).

5.4.1 Das Kommando ceph orch

Mit dem Ceph-Orchestrator-Kommando ceph orch (einer Schnittstelle zum cephadm-Modul) werden die Clusterkomponenten aufgelistet und Ceph-Services auf neuen Cluster-Knoten bereitgestellt.

5.4.1.1 Anzeigen des Orchestrator-Status

Mit folgendem Kommando werden der aktuelle Modus und Status des Ceph-Orchestrators angezeigt.

cephuser@adm > ceph orch status

5.4.1.2 Auflisten von Geräten, Services und Daemons

Führen Sie zum Auflisten aller Datenträgergeräte folgendes Kommando aus:

cephuser@adm > ceph orch device ls
Hostname   Path      Type  Serial  Size   Health   Ident  Fault  Available
ses-master /dev/vdb  hdd   0d8a... 10.7G  Unknown  N/A    N/A    No
ses-min1   /dev/vdc  hdd   8304... 10.7G  Unknown  N/A    N/A    No
ses-min1   /dev/vdd  hdd   7b81... 10.7G  Unknown  N/A    N/A    No
[...]
Tipp
Tipp: Services und Daemons

Service ist ein allgemeiner Begriff für einen Ceph-Service eines bestimmten Typs, zum Beispiel Ceph Manager.

Daemon ist eine bestimmte Instanz eines Service, z. B. ein Prozess mgr.ses-min1.gdlcik, der auf einem Knoten namens ses-min1 ausgeführt wird.

Führen Sie zum Auflisten aller Services, die cephadm kennt, folgendes Kommando aus:

cephuser@adm > ceph orch ls
NAME  RUNNING  REFRESHED  AGE  PLACEMENT  IMAGE NAME                  IMAGE ID
mgr       1/0  5m ago     -    <no spec>  registry.example.com/[...]  5bf12403d0bd
mon       1/0  5m ago     -    <no spec>  registry.example.com/[...]  5bf12403d0bd
Tipp
Tipp

Sie können die Liste mit dem optionalen Parameter --host auf Services auf einem bestimmten Knoten und mit dem optionalen Parameter --service-type auf Services eines bestimmten Typs beschränken (akzeptable Typen sind mon, osd, mgr, mds und rgw).

Führen Sie folgendes Kommando aus, um alle von cephadm bereitgestellten aktiven Daemons aufzulisten:

cephuser@adm > ceph orch ps
NAME            HOST     STATUS   REFRESHED AGE VERSION    IMAGE ID     CONTAINER ID
mgr.ses-min1.gd ses-min1 running) 8m ago    12d 15.2.0.108 5bf12403d0bd b8104e09814c
mon.ses-min1    ses-min1 running) 8m ago    12d 15.2.0.108 5bf12403d0bd a719e0087369
Tipp
Tipp

Fragen Sie den Status eines bestimmten Daemons mit --daemon_type und --daemon_id ab. Bei OSDs ist die ID die numerische OSD-ID. Bei MDS ist die ID der Name des Dateisystems:

cephuser@adm > ceph orch ps --daemon_type osd --daemon_id 0
cephuser@adm > ceph orch ps --daemon_type mds --daemon_id my_cephfs

5.4.2 Service- und Platzierungsspezifikation

Die Spezifikation der Bereitstellung von Ceph-Services erfolgt am besten durch Erstellen einer YAML-formatierten Datei mit der Spezifikation der Services, die Sie bereitstellen möchten.

5.4.2.1 Erstellen von Servicespezifikationen

Sie können für jede Art von Service eine eigene Spezifikationsdatei erstellen, wie zum Beispiel:

root@master # cat nfs.yml
service_type: nfs
service_id: EXAMPLE_NFS
placement:
  hosts:
  - ses-min1
  - ses-min2
spec:
  pool: EXAMPLE_POOL
  namespace: EXAMPLE_NAMESPACE

Alternativ können Sie mehrere (oder alle) Servicetypen in einer Datei angeben, z. B. cluster.yml, die beschreibt, auf welchen Knoten bestimmte Services ausgeführt werden sollen. Denken Sie daran, einzelne Servicetypen mit drei Bindestrichen (---) zu trennen:

cephuser@adm > cat cluster.yml
service_type: nfs
service_id: EXAMPLE_NFS
placement:
  hosts:
  - ses-min1
  - ses-min2
spec:
  pool: EXAMPLE_POOL
  namespace: EXAMPLE_NAMESPACE
---
service_type: rgw
service_id: REALM_NAME.ZONE_NAME
placement:
  hosts:
  - ses-min1
  - ses-min2
  - ses-min3
---
[...]

Die oben genannten Eigenschaften haben folgende Bedeutung:

service_type

Der Typ des Service. Er kann entweder ein Ceph-Service (mon, mgr, mds, crash, osd oder rbd-mirror), ein Gateway (nfs oder rgw) oder Teil des Überwachungs-Stacks (alertmanager, grafana, node-exporter oder prometheus) sein.

service_id

Der Name des Service. Für Spezifikationen vom Typ mon, mgr, alertmanager, grafana, node-exporter und prometheus ist die Eigenschaft service_id nicht erforderlich.

placement

Gibt an, auf welchen Knoten der Service ausgeführt wird. Weitere Informationen finden Sie in Abschnitt 5.4.2.2, „Erstellen von Platzierungsspezifikationen“.

spec

Zusätzliche Spezifikation, die für den Servicetyp relevant ist.

Tipp
Tipp: Anwenden spezifischer Services

Ceph-Cluster-Services haben in der Regel eine Reihe von für sie spezifischen Eigenschaften. Beispiele und Details zu den Spezifikationen der einzelnen Services finden Sie in Abschnitt 5.4.3, „Bereitstellen von Ceph-Services“.

5.4.2.2 Erstellen von Platzierungsspezifikationen

Zum Bereitstellen von Ceph-Services muss cephadm wissen, auf welchen Knoten sie bereitgestellt werden sollen. Verwenden Sie die Eigenschaft placement und führen Sie die Host-Kurznamen der Knoten auf, für die der Service gilt:

cephuser@adm > cat cluster.yml
[...]
placement:
  hosts:
  - host1
  - host2
  - host3
[...]

5.4.2.3 Anwenden von Clusterspezifikationen

Nachdem Sie eine vollständige cluster.yml-Datei mit Spezifikationen zu allen Services und deren Platzierung erstellt haben, können Sie den Cluster mit folgendem Kommando anwenden:

cephuser@adm > ceph orch apply -i cluster.yml

Führen Sie zum Anzeigen des Clusterstatus das Kommando ceph orch aus. Weitere Informationen finden Sie unter Abschnitt 5.4.1.1, „Anzeigen des Orchestrator-Status“.

5.4.2.4 Exportieren der Spezifikation eines aktiven Clusters

Obwohl Sie dem Ceph-Cluster Services mithilfe der Spezifikationsdateien bereitgestellt haben (wie in Abschnitt 5.4.2, „Service- und Platzierungsspezifikation“ beschrieben), kann die Konfiguration des Clusters während seines Betriebs von der ursprünglichen Spezifikation abweichen. Möglicherweise haben Sie auch die Spezifikationsdateien versehentlich entfernt.

Führen Sie zum Abrufen der vollständigen Spezifikation eines aktiven Clusters folgendes Kommando aus:

cephuser@adm > ceph orch ls --export
placement:
  hosts:
  - hostname: ses-min1
    name: ''
    network: ''
service_id: my_cephfs
service_name: mds.my_cephfs
service_type: mds
---
placement:
  count: 2
service_name: mgr
service_type: mgr
---
[...]
Tipp
Tipp

Sie können die Option --format anhängen, um das Standard-Ausgabeformat yaml zu ändern. Sie können zwischen json, json-pretty oder yaml wählen. Beispiel:

ceph orch ls --export --format json

5.4.3 Bereitstellen von Ceph-Services

Sobald der Basiscluster ausgeführt wird, können Sie Ceph-Services auf weiteren Knoten bereitstellen.

5.4.3.1 Bereitstellen von Ceph Monitors und Ceph Managers

Für den Ceph-Cluster werden drei oder fünf MONs bereitgestellt, die auf verschiedenen Knoten verteilt sind. Wenn sich fünf oder mehr Knoten im Cluster befinden, empfehlen wir die Bereitstellung von fünf MONs. Es hat sich bewährt, MGRs auf denselben Knoten wie MONs zu installieren.

Wichtig
Wichtig: Beziehen Sie den Bootstrap-MON ein

Wenn Sie MONs und MGRs bereitstellen, denken Sie daran, den ersten MON einzubeziehen, den Sie bei der Konfiguration des Basisclusters in Abschnitt 5.3.2.5, „Festlegen des ersten MON/MGR-Knotens“ hinzugefügt haben.

Wenden Sie zum Bereitstellen von MONs folgende Spezifikation an:

service_type: mon
placement:
  hosts:
  - ses-min1
  - ses-min2
  - ses-min3
Anmerkung
Anmerkung

Wenn Sie einen weiteren Knoten hinzufügen müssen, hängen Sie den Hostnamen an dieselbe YAML-Liste an. Beispiel:

service_type: mon
placement:
 hosts:
 - ses-min1
 - ses-min2
 - ses-min3
 - ses-min4

Wenden Sie auf ähnliche Weise zum Bereitstellen von MONs folgende Spezifikationen an:

Wichtig
Wichtig

Stellen Sie sicher, dass mindestens drei Ceph Manager in jeder Bereitstellung vorhanden sind.

service_type: mgr
placement:
  hosts:
  - ses-min1
  - ses-min2
  - ses-min3
Tipp
Tipp

Wenn sich MONs oder MGRs nicht im gleichen Teilnetz befinden, müssen Sie die Teilnetzadressen anhängen. Beispiel:

service_type: mon
placement:
  hosts:
  - ses-min1:10.1.2.0/24
  - ses-min2:10.1.5.0/24
  - ses-min3:10.1.10.0/24

5.4.3.2 Bereitstellen von Ceph OSDs

Wichtig
Wichtig: Wenn ein Speichergerät verfügbar ist

Ein Speichergerät gilt als verfügbar, wenn alle folgenden Bedingungen erfüllt sind:

  • Das Gerät hat keine Partitionen.

  • Das Gerät hat keinen LVM-Status.

  • Das Gerät ist nicht eingehängt.

  • Das Gerät enthält kein Dateisystem.

  • Das Gerät enthält kein BlueStore-OSD.

  • Das Gerät ist größer als 5 GB.

Wenn die oben genannten Bedingungen nicht erfüllt sind, verweigert Ceph die Bereitstellung derartiger OSDs.

Zum Bereitstellen von OSDs haben Sie zwei Möglichkeiten:

  • Weisen Sie Ceph an, alle verfügbaren und nicht verwendeten Speichergeräte zu verbrauchen:

    cephuser@adm > ceph orch apply osd --all-available-devices
  • Verwenden Sie DriveGroups (weitere Informationen hierzu finden Sie im Book “Betriebs- und Verwaltungshandbuch”, Chapter 13 “Betriebsaufgaben”, Section 13.4.3 “Hinzufügen von OSDs mit der DriveGroups-Spezifikation”), um OSD-Spezifikationen zu erstellen, die Geräte beschreiben, die basierend auf ihren Eigenschaften bereitgestellt werden. Beispiele hierfür sind der Gerätetyp (SSD oder HDD), die Gerätemodellnamen, die Größe oder die Knoten, auf denen die Geräte vorhanden sind. Wenden Sie dann die Spezifikation mit folgendem Kommando an:

    cephuser@adm > ceph orch apply osd -i drive_groups.yml

5.4.3.3 Bereitstellen von Metadatenservern

Für CephFS sind ein oder mehrere Metadata Server (MDS)-Services erforderlich. Wenn Sie ein CephFS erstellen möchten, erstellen Sie zunächst MDS-Server durch Anwenden der folgenden Spezifikation:

Anmerkung
Anmerkung

Stellen Sie sicher, dass Sie mindestens zwei Pools, einen für CephFS-Daten und einen für CephFS-Metadaten, erstellt haben, bevor Sie die folgende Spezifikation anwenden.

service_type: mds
service_id: CEPHFS_NAME
placement:
  hosts:
  - ses-min1
  - ses-min2
  - ses-min3

Erstellen Sie das CephFS, sobald die MDS funktionsfähig sind:

ceph fs new CEPHFS_NAME metadata_pool data_pool

5.4.3.4 Bereitstellen von Object Gateways

cephadm stellt ein Object Gateway als eine Sammlung von Daemons bereit, die einen bestimmten Bereich und eine Zone verwalten.

Sie können entweder einen Object-Gateway-Service mit einem bereits vorhandenen Bereich und einer bereits vorhandenen Zone verknüpfen (weitere Informationen finden Sie im Book “Betriebs- und Verwaltungshandbuch”, Chapter 21 “Ceph Object Gateway”, Section 21.13 “Object Gateways an mehreren Standorten”), oder Sie können einen nicht vorhandenen REALM_NAME (Bereichsnamen) und ZONE_NAME (Zonennamen) angeben, die dann automatisch erstellt werden, nachdem Sie die folgende Konfiguration angewendet haben:

service_type: rgw
service_id: REALM_NAME.ZONE_NAME
placement:
  hosts:
  - ses-min1
  - ses-min2
  - ses-min3
spec:
  rgw_realm: RGW_REALM
  rgw_zone: RGW_ZONE
5.4.3.4.1 Verwenden des sicheren SSL-Zugangs

Um eine sichere SSL-Verbindung zum Object Gateway zu verwenden, benötigen Sie ein Paar gültiger SSL-Zertifikats- und Schlüsseldateien (weitere Details finden Sie im Book “Betriebs- und Verwaltungshandbuch”, Chapter 21 “Ceph Object Gateway”, Section 21.7 “Aktivieren von HTTPS/SSL für Object Gateways”). Sie müssen SSL aktivieren, eine Portnummer für SSL-Verbindungen sowie die SSL-Zertifikats- und Schlüsseldateien angeben.

Nehmen Sie Folgendes in Ihre Spezifikation auf, um SSL zu aktivieren und die Portnummer anzugeben:

spec:
  ssl: true
  rgw_frontend_port: 443

Um das SSL-Zertifikat und den Schlüssel festzulegen, können Sie deren Inhalte direkt in die YAML-Spezifikationsdatei einfügen. Das Pipe-Zeichen (|) am Zeilenende weist den Parser darauf hin, dass er eine mehrzeilige Zeichenkette als Wert erwarten soll. Beispiel:

spec:
  ssl: true
  rgw_frontend_port: 443
  rgw_frontend_ssl_certificate: |
   -----BEGIN CERTIFICATE-----
   MIIFmjCCA4KgAwIBAgIJAIZ2n35bmwXTMA0GCSqGSIb3DQEBCwUAMGIxCzAJBgNV
   BAYTAkFVMQwwCgYDVQQIDANOU1cxHTAbBgNVBAoMFEV4YW1wbGUgUkdXIFNTTCBp
   [...]
   -----END CERTIFICATE-----
   rgw_frontend_ssl_key: |
   -----BEGIN PRIVATE KEY-----
   MIIJRAIBADANBgkqhkiG9w0BAQEFAASCCS4wggkqAgEAAoICAQDLtFwg6LLl2j4Z
   BDV+iL4AO7VZ9KbmWIt37Ml2W6y2YeKX3Qwf+3eBz7TVHR1dm6iPpCpqpQjXUsT9
   [...]
   -----END PRIVATE KEY-----
Tipp
Tipp

Statt den Inhalt der SSL-Zertifikats- und Schlüsseldateien einzufügen, können Sie die Schlüsselwörter rgw_frontend_ssl_certificate: und rgw_frontend_ssl_key: weglassen und sie in die Konfigurationsdatenbank hochladen:

cephuser@adm > ceph config-key set rgw/cert/REALM_NAME/ZONE_NAME.crt \
 -i SSL_CERT_FILE
cephuser@adm > ceph config-key set rgw/cert/REALM_NAME/ZONE_NAME.key \
 -i SSL_KEY_FILE
5.4.3.4.2 Bereitstellung mit einem Untercluster

Mit Unterclustern können Sie die Knoten in Ihren Clustern organisieren, um Workloads zu isolieren und die elastische Skalierung zu erleichtern. Wenden Sie die folgende Konfiguration an, wenn Sie die Bereitstellung mit einem Untercluster durchführen:

service_type: rgw
service_id: REALM_NAME.ZONE_NAME.SUBCLUSTER
placement:
  hosts:
  - ses-min1
  - ses-min2
  - ses-min3
spec:
  rgw_realm: RGW_REALM
  rgw_zone: RGW_ZONE
  subcluster: SUBCLUSTER

5.4.3.5 Bereitstellen von iSCSI-Gateways

iSCSI ist ein Storage Area Network (SAN)-Protokoll, das Clients (genannt Initiators) das Senden von SCSI-Kommandos an SCSI-Speichergeräte (Ziele) auf Remote-Servern ermöglicht.

Wenden Sie die folgende Konfiguration für die Bereitstellung an. Stellen Sie sicher, dass trusted_ip_list die IP-Adressen aller iSCSI-Gateway- und Ceph-Manager-Knoten enthält (wie im folgenden Ausgabebeispiel gezeigt).

Anmerkung
Anmerkung

Stellen Sie sicher, dass der Pool erstellt wurde, bevor Sie die folgende Spezifikation anwenden.

service_type: iscsi
service_id: EXAMPLE_ISCSI
placement:
  hosts:
  - ses-min1
  - ses-min2
  - ses-min3
spec:
  pool: EXAMPLE_POOL
  api_user: EXAMPLE_USER
  api_password: EXAMPLE_PASSWORD
  trusted_ip_list: "IP_ADDRESS_1,IP_ADDRESS_2"
Anmerkung
Anmerkung

Stellen Sie sicher, dass die für trusted_ip_list aufgelisteten IPs kein Leerzeichen nach der Kommatrennung aufweisen.

5.4.3.5.1 Sichere SSL-Konfiguration

Zur Verwendung einer sicheren SSL-Verbindung zwischen dem Ceph Dashboard und der iSCSI-Ziel-API benötigen Sie ein Paar gültiger SSL-Zertifikate und Schlüsseldateien. Sie können entweder von einer Zertifizierungsstelle ausgestellt oder eigensigniert sein (weitere Informationen finden Sie im Book “Betriebs- und Verwaltungshandbuch”, Chapter 10 “Manuelle Konfiguration”, Section 10.1.1 “Erstellen von eigensignierten Zertifikaten”). Nehmen Sie zum Aktivieren von SSL die Einstellung api_secure: true in Ihre Spezifikationsdatei auf:

spec:
  api_secure: true

Um das SSL-Zertifikat und den Schlüssel festzulegen, können Sie den Inhalt direkt in die YAML-Spezifikationsdatei einfügen. Das Pipe-Zeichen (|) am Zeilenende weist den Parser darauf hin, dass er eine mehrzeilige Zeichenkette als Wert erwarten soll. Beispiel:

spec:
  pool: EXAMPLE_POOL
  api_user: EXAMPLE_USER
  api_password: EXAMPLE_PASSWORD
  trusted_ip_list: "IP_ADDRESS_1,IP_ADDRESS_2"
  api_secure: true
  ssl_cert: |
    -----BEGIN CERTIFICATE-----
    MIIDtTCCAp2gAwIBAgIYMC4xNzc1NDQxNjEzMzc2MjMyXzxvQ7EcMA0GCSqGSIb3
    DQEBCwUAMG0xCzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARVdGFoMRcwFQYDVQQHDA5T
    [...]
    -----END CERTIFICATE-----
  ssl_key: |
    -----BEGIN PRIVATE KEY-----
    MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC5jdYbjtNTAKW4
    /CwQr/7wOiLGzVxChn3mmCIF3DwbL/qvTFTX2d8bDf6LjGwLYloXHscRfxszX/4h
    [...]
    -----END PRIVATE KEY-----

5.4.3.6 Bereitstellen von NFS Ganesha

cephadm stellt NFS Ganesha unter Verwendung eines vordefinierten RADOS-Pools und eines optionalen Namespace bereit. Wenden Sie zum Bereitstellen von NFS Ganesha folgende Spezifikation an:

Anmerkung
Anmerkung

Sie müssen über einen vordefinierten RADOS-Pool verfügen, da sonst der ceph orch apply-Vorgang fehlschlägt. Weitere Informationen zum Erstellen eines Pools finden Sie im Book “Betriebs- und Verwaltungshandbuch”, Chapter 18 “Verwalten von Speicher-Pools”, Section 18.1 “Erstellen eines Pools”.

service_type: nfs
service_id: EXAMPLE_NFS
placement:
  hosts:
  - ses-min1
  - ses-min2
spec:
  pool: EXAMPLE_POOL
  namespace: EXAMPLE_NAMESPACE
  • EXAMPLE_NFS mit einer beliebigen Zeichenkette, die den NFS-Export identifiziert.

  • EXAMPLE_POOL mit dem Namen des Pools, in dem das NFS-Ganesha-RADOS-Konfigurationsobjekt gespeichert werden soll.

  • EXAMPLE_NAMESPACE (optional) mit dem gewünschten Object-Gateway-NFS-Namespace (zum Beispiel ganesha).

5.4.3.7 Bereitstellen von rbd-mirror

Der Service rbd-mirror synchronisiert RADOS-Blockgeräte-Images zwischen zwei Ceph-Clustern (weitere Details finden Sie im Book “Betriebs- und Verwaltungshandbuch”, Chapter 20 “RADOS Block Device”, Section 20.4 “RBD-Image-Spiegel”). Stellen Sie rbd-mirror mit folgender Spezifikation bereit:

service_type: rbd-mirror
service_id: EXAMPLE_RBD_MIRROR
placement:
  hosts:
  - ses-min3

5.4.3.8 Bereitstellen des Überwachungs-Stacks

Der Überwachungs-Stack besteht aus Prometheus, Prometheus-Exportern, Prometheus Alertmanager und Grafana. Ceph Dashboard nutzt diese Komponenten, um detaillierte Kennzahlen zur Clusternutzung und -leistung zu speichern und zu visualisieren.

Tipp
Tipp

Wenn für Ihre Bereitstellung benutzerdefinierte oder lokal bereitgestellte Container-Images der Überwachungs-Stack-Services erforderlich sind, finden Sie Informationen hierzu im Book “Betriebs- und Verwaltungshandbuch”, Chapter 16 “Überwachung und Warnungen”, Section 16.1 “Konfigurieren von benutzerdefinierten oder lokalen Images”.

Führen Sie zum Bereitstellen des Überwachungs-Stacks folgende Schritte aus:

  1. Aktivieren Sie das Modul prometheus im Ceph-Manager-Daemon. Dadurch werden die internen Ceph-Kennzahlen offengelegt, so dass Prometheus sie lesen kann:

    cephuser@adm > ceph mgr module enable prometheus
    Anmerkung
    Anmerkung

    Stellen Sie sicher, dass dieses Kommando vor dem Bereitstellen von Prometheus ausgeführt wird. Wenn das Kommando vor der Bereitstellung nicht ausgeführt wurde, müssen Sie Prometheus erneut bereitstellen, um die Konfiguration von Prometheus zu aktualisieren:

    cephuser@adm > ceph orch redeploy prometheus
  2. Erstellen Sie eine Spezifikationsdatei (z. B. monitoring.yaml) mit einem Inhalt ähnlich dem folgenden:

    service_type: prometheus
    placement:
      hosts:
      - ses-min2
    ---
    service_type: node-exporter
    ---
    service_type: alertmanager
    placement:
      hosts:
      - ses-min4
    ---
    service_type: grafana
    placement:
      hosts:
      - ses-min3
  3. Wenden Sie die Überwachungsservices mit folgendem Kommando an:

    cephuser@adm > ceph orch apply -i monitoring.yaml

    Es kann ein oder zwei Minuten dauern, bis die Überwachungsservices bereitgestellt sind.

Wichtig
Wichtig

Prometheus, Grafana und das Ceph Dashboard sind automatisch so konfiguriert, dass sie miteinander kommunizieren. Dies führt zu einer voll funktionsfähigen Grafana-Integration im Ceph Dashboard, wenn es wie oben beschrieben bereitgestellt wird.

Die einzige Ausnahme von dieser Regel ist die Überwachung mit RBD-Images. Weitere Informationen zu diesem Thema finden Sie unter dem Stichwort Book “Betriebs- und Verwaltungshandbuch”, Chapter 16 “Überwachung und Warnungen”, Section 16.5.4 “Aktivieren der RBD-Image-Überwachung”.

Teil III Installation zusätzlicher Services

  • 6 Installation des iSCSI Gateways
  • iSCSI ist ein Storage Area Network (SAN)-Protokoll, das Clients (genannt Initiators) das Senden von SCSI-Kommandos an SCSI-Speichergeräte (Targets) auf Remote Servern ermöglicht. SUSE Enterprise Storage 7 umfasst eine Funktion, die die Ceph-Speicherverwaltung für heterogene Clients wie Microsoft Win…

6 Installation des iSCSI Gateways

iSCSI ist ein Storage Area Network (SAN)-Protokoll, das Clients (genannt Initiators) das Senden von SCSI-Kommandos an SCSI-Speichergeräte (Targets) auf Remote Servern ermöglicht. SUSE Enterprise Storage 7 umfasst eine Funktion, die die Ceph-Speicherverwaltung für heterogene Clients wie Microsoft Windows* und VMware* vSphere über das iSCSI-Protokoll öffnet. Multipath iSCSI-Zugriff ermöglicht die Verfügbarkeit und Skalierbarkeit für diese Clients. Das standardisierte iSCSI-Protokoll stellt außerdem eine zusätzliche Ebene der Sicherheitsisolation zwischen Clients und dem SUSE Enterprise Storage 7-Cluster zur Verfügung. Die Konfigurationsfunktion wird ceph-iscsi genannt. Über ceph-iscsi definieren Ceph-Speicheradministratoren für schlanke Speicherzuweisung geeignete, reproduzierte, hochverfügbare Volumes, die schreibgeschützte Snapshots, Lesen-Schreiben-Klone und eine automatische Anpassung der Größe über Ceph RADOS Block Device(RBD) unterstützen. Administratoren können dann Volumes entweder über einen einzelnen ceph-iscsi Gateway Host oder über mehrere Gateway Hosts exportieren, die Multipath Failover unterstützen. Linux, Microsoft Windows und VMware Hosts stellen über das iSCSI-Protokoll eine Verbindung zu den Volumes her. Dadurch werden sie verfügbar wie jedes andere SCSI-Blockgerät. Dies bedeutet, dass Kunden von SUSE Enterprise Storage 7 auf Ceph effizient ein vollständiges Blockspeicher-Infrastruktur-Teilsystem ausführen können, das alle Funktionen und Vorteile eines konventionellen SAN bietet und zukünftiges Wachstum ermöglicht.

In diesem Kapitel erhalten Sie detaillierte Informationen zum Einrichten einer Ceph-Cluster-Infrastruktur mit einem iSCSI Gateway, sodass die Client-Hosts über das iSCSI-Protokoll dezentral gespeicherte Daten als lokale Speichergeräte verwenden können.

6.1 iSCSI-Blockspeicher

iSCSI ist eine Implementierung des Small Computer System Interface (SCSI)-Kommandos, das mit dem in RFC 3720 angegebenen Internet Protocol (IP) festgelegt wird. iSCSI ist als Service implementiert, in dem ein Client (der Initiator) über eine Sitzung auf TCP-Port 3260 mit einem Server (dem Target) kommuniziert. Die IP-Adresse und der Port eines iSCSI-Ziels werden als iSCSI Portal bezeichnet, wobei ein Ziel über einen oder mehrere Portale sichtbar gemacht werden kann. Die Kombination aus einem Ziel und einem oder mehreren Portalen wird als Zielportalgruppe (Target Portal Group, TPG) bezeichnet.

Das zugrunde liegende Daten-Link-Schicht-Protokoll für iSCSI ist meistens Ethernet. Genauer gesagt, moderne iSCSI-Infrastrukturen verwenden 10 GigE-Ethernet oder schnellere Netzwerke für optimalen Durchsatz. 10 Gigabit Ethernet-Konnektivität zwischen dem iSCSI Gateway und dem Back-End Ceph-Cluster wird dringend empfohlen.

6.1.1 iSCSI-Ziel des Linux-Kernels

Das iSCSI-Ziel des Linux-Kernels wurde ursprünglich LIO genannt. Es steht für linux-iscsi.org, die ursprüngliche Domäne und Website des Projekts. Einige Zeit standen für die Linux-Plattform nicht weniger als vier konkurrierende Target-Implementierungen zur Verfügung, doch LIO hat sich schließlich als einziges iSCSI-Referenz-Target durchgesetzt. Der hauptsächliche Kernel-Code für LIO verwendet den einfachen, doch in gewisser Weise zweideutigen Namen „Target“ und unterscheidet dabei zwischen „Target Core“ und einer Vielzahl an Frontend- und Back-End Target-Modulen.

Das am häufigsten verwendete Frontend-Modul ist wohl iSCSI. LIO unterstützt jedoch auch Fibre Channel (FC), Fibre Channel over Ethernet (FCoE) und verschiedene andere Frontend-Protokolle. Zum gegenwärtigen Zeitpunkt unterstützt SUSE Enterprise Storage nur das iSCSI-Protokoll.

Das am häufigsten verwendete Target Back-End-Modul kann einfach jedes verfügbare Blockgerät am Target-Host neu exportieren. Dieses Modul wird iblock genannt. LIO verfügt jedoch auch über ein RBD-spezifisches Back-End-Modul. Es unterstützt den parallelisierten Multipath-E/A-Zugriff auf RBD-Images.

6.1.2 iSCSI Initiatoren

In diesem Abschnitt erhalten Sie einen kurzen Überblick über die iSCSI Initiator, die auf Linux-, Microsoft Windows und VMware-Plattformen verwendet werden.

6.1.2.1 Linux

Der Standard-Initiator für die Linux-Plattform ist open-iscsi. open-iscsi ruft einen Daemon auf (iscsid), den Benutzer zum Ermitteln von iSCSI Targets auf jedem vorhandenen Portal, zum Anmelden bei Targets und zum Zuordnen von iSCSI Volumes verwenden können. iscsid kommuniziert mit der mittleren SCSI-Schicht, um Kernel-interne Blockgeräte zu erstellen, die der Kernel dann wie jedes andere SCSI-Blockgerät im System behandeln kann. Der open-iscsi Initiator kann zusammen mit der Funktion Device Mapper Multipath (dm-multipath) bereitgestellt werden, um ein hochverfügbares iSCSI-Blockgerät zur Verfügung zu stellen.

6.1.2.2 Microsoft Windows und Hyper-V

Der standardmäßige iSCSI Initiator für das Microsoft Windows Betriebssystem ist der Microsoft iSCSI Initiator. Der iSCSI-Service kann über die grafische Bedienoberfläche (GUI) konfiguriert werden und unterstützt Multipath E/A für Hochverfügbarkeit.

6.1.2.3 VMware

Der standardmäßige iSCSI Initiator für VMware vSphere und ESX ist der VMware ESX Software iSCSI Initiator, vmkiscsi. Wenn er aktiviert ist, kann er entweder vom vSphere Client oder mit dem Kommando vmkiscsi-tool konfiguriert werden. Sie können dann Speicher-Volumes formatieren, die über den vSphere iSCSI Speicheradapter mit VMFS verbunden sind, und diese wie jedes andere VM-Speichergerät verwenden. Der VMware Initiator unterstützt auch Multipath E/A für Hochverfügbarkeit.

6.2 Allgemeine Informationen zu ceph-iscsi

ceph-iscsi vereint die Vorteile von RADOS Block Devices mit der universellen Vielseitigkeit von iSCSI. Durch Anwenden von ceph-iscsi auf einem iSCSI-Zielhost (als iSCSI Gateway bezeichnet) kann jede Anwendung, die die Blockspeicherung nutzen muss, von Ceph profitieren, auch wenn sie kein Ceph-Client-Protokoll kennt. Stattdessen können Benutzer iSCSI oder ein beliebiges anderes Target Frontend-Protokoll verwenden, um eine Verbindung zu einem LIO Target herzustellen, das alle Target E/A in RBD-Speicheroperationen überträgt.

Ceph-Cluster mit einem einzigen iSCSI Gateway
Abbildung 6.1: Ceph-Cluster mit einem einzigen iSCSI Gateway

ceph-iscsi ist von Natur aus hochverfügbar und unterstützt Multipath-Operationen. Somit können Downstream Initiator Hosts mehrere iSCSI Gateways für Hochverfügbarkeit sowie Skalierbarkeit verwenden. Bei der Kommunikation mit einer iSCSI-Konfiguration mit mehr als einem Gateway sorgen Initiator möglicherweise für eine Lastausgleich von iSCSI-Anforderungen über mehrere Gateways hinweg. Falls ein Gateway ausfällt und zeitweise nicht erreichbar ist oder zu Wartungszwecken deaktiviert wird, werden E/A-Operationen transparent über ein anderes Gateway weiter ausgeführt.

Ceph-Cluster mit mehreren iSCSI Gateways
Abbildung 6.2: Ceph-Cluster mit mehreren iSCSI Gateways

6.3 Überlegungen zur Bereitstellung

Eine Mindestkonfiguration von SUSE Enterprise Storage 7 mit ceph-iscsi setzt sich aus folgenden Komponenten zusammen:

  • Einem Ceph Storage Cluster Der Ceph-Cluster besteht aus mindestens vier physischen Servern, auf denen jeweils mindestens acht Objektspeicher-Daemons (OSDs) gehostet werden. In einer derartigen Konfiguration fungieren drei OSD-Knoten auch als Monitor(MON)-Host.

  • Ein iSCSI-Zielserver, auf dem das LIO-iSCSI-Ziel ausgeführt wird und das über ceph-iscsi konfiguriert wurde.

  • Einem iSCSI-Initiator-Host, auf dem open-iscsi (Linux), der Microsoft iSCSI Initiator (Microsoft Windows) oder eine beliebige andere iSCSI-Initiator-Implementierung ausgeführt wird.

Eine empfohlene Produktionskonfiguration von SUSE Enterprise Storage 7 mit ceph-iscsi besteht aus:

  • Einem Ceph Storage Cluster Ein Ceph-Cluster für die Produktionsumgebung besteht aus einer beliebigen Anzahl (normalerweise mehr als 10) von OSD-Knoten. Auf jedem werden normalerweise 10 bis 12 Objektspeicher-Daemons (OSDs) ausgeführt, mit mindestens drei dedizierten MON-Hosts.

  • Einige iSCSI-Zielserver, auf denen das LIO-iSCSI-Ziel ausgeführt wird und die über ceph-iscsi konfiguriert wurden. Zum Zweck von iSCSI-Failover und -Lastausgleich müssen diese Server einen Kernel ausführen, der das target_core_rbd-Modul unterstützt. Update-Pakete sind im SUSE Linux Enterprise Server-Wartungskanal verfügbar.

  • Eine beliebige Anzahl von iSCSI-Initiator-Hosts, auf denen open-iscsi (Linux), der Microsoft iSCSI Initiator (Microsoft Windows) oder eine beliebige andere iSCSI-Initiator-Implementierung ausgeführt wird.

6.4 Installation und Konfiguration

In diesem Abschnitt werden die Schritte zum Installieren und Konfigurieren eines iSCSI Gateways zusätzlich zu SUSE Enterprise Storage beschrieben.

6.4.1 Bereitstellen des iSCSI Gateways auf einem Ceph-Cluster

Die Bereitstellung des Ceph iSCSI Gateways erfolgt nach dem gleichen Verfahren wie die Bereitstellung anderer Ceph-Services, nämlich mit cephadm. Weitere Informationen finden Sie unter Abschnitt 5.4.3.5, „Bereitstellen von iSCSI-Gateways“.

6.4.2 Erstellen von RBD-Images

RBD-Images werden im Ceph Store erstellt und anschließend zu iSCSI exportiert. Wir empfehlen zu diesem Zweck einen dedizierten RADOS-Pool. Sie können mit dem Ceph rbd-Kommandozeilenprogramm ein Volume von jedem Host aus erstellen, der eine Verbindung zu Ihrem Speicher-Cluster herstellen kann. Dazu benötigt der Client mindestens eine ceph.conf-Datei mit Mindestkonfiguration und den entsprechenden CephX-Berechtigungsnachweis zur Authentifizierung.

Erstellen Sie ein neues Volume für den späteren Export über iSCSI mit dem Kommando rbd create und geben Sie die Volume-Größe in Megabyte an. Beispiel: Führen Sie zum Erstellen eines Volumes mit 100 GB und der Bezeichnung testvol im Pool iscsi-images folgendes Kommando aus:

cephuser@adm > rbd --pool iscsi-images create --size=102400 testvol

6.4.3 Exportieren von RBD-Images über iSCSI

Zum Exportieren von RBD-Images über iSCSI stehen zwei Möglichkeiten zur Auswahl: die Ceph-Dashboard-Weboberfläche oder das ceph-iscsi-Dienstprogramm „gwcli“. Dieser Abschnitt befasst sich ausschließlich mit „gwcli“, wobei erläutert wird, wie Sie ein iSCSI-Ziel erstellen, mit dem ein RBD-Image über die Kommandozeile exportiert wird.

Anmerkung
Anmerkung

RBD-Images mit den folgenden Eigenschaften können nicht über iSCSI exportiert werden:

  • Images mit aktivierter Journaling-Funktion

  • Images mit einer Stripe-Einheit von weniger als 4096 Byte

Geben Sie den iSCSI-Gateway-Container als root ein:

root # cephadm enter --name CONTAINER_NAME

Starten Sie die Kommandozeilenschnittstelle für das iSCSI Gateway als root:

root # gwcli

Wechseln Sie zu iSCSI-Ziele und erstellen Sie ein Ziel namens iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol:

gwcli >  /> cd /iscsi-targets
gwcli >  /iscsi-targets> create iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol

Erstellen Sie die iSCSI-Gateways. Geben Sie hierzu den Namen (name) und die IP-Adresse (ip) des Gateways an:

gwcli >  /iscsi-targets> cd iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/gateways
gwcli >  /iscsi-target...tvol/gateways> create iscsi1 192.168.124.104
gwcli >  /iscsi-target...tvol/gateways> create iscsi2 192.168.124.105
Tipp
Tipp

Mit dem Kommando help rufen sie eine Liste der verfügbaren Kommandos im aktuellen Konfigurationsknoten ab.

Nehmen Sie das RBD-Image namens testvol in den Pool iscsi-images auf:

gwcli >  /iscsi-target...tvol/gateways> cd /disks
gwcli >  /disks> attach iscsi-images/testvol

Ordnen Sie das RBD-Image dem Ziel zu:

gwcli >  /disks> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/disks
gwcli >  /iscsi-target...testvol/disks> add iscsi-images/testvol
Anmerkung
Anmerkung

Sie können die lokale Konfiguration mit systemnahen Werkzeugen wie targetcli abfragen, jedoch nicht bearbeiten.

Tipp
Tipp

Mit dem Kommando ls können sie die Konfiguration prüfen. Einige Konfigurationsknoten unterstützen auch das Kommando info, mit dem Sie ausführlichere Informationen erhalten.

Es ist zu beachten, dass die ACL-Authentifizierung standardmäßig aktiviert ist, weshalb der Zugriff auf dieses Ziel noch nicht möglich ist. Weitere Informationen zur Authentifizierung und zur Zugriffssteuerung finden Sie in Abschnitt 6.4.4, „Authentifizierung und Zugriffssteuerung“.

6.4.4 Authentifizierung und Zugriffssteuerung

Die iSCSI-Authentifizierung ist flexibel und deckt zahlreiche Authentifizierungsmöglichkeiten ab.

6.4.4.1 Deaktivieren der ACL-Authentifizierung

Keine Authentifizierung bedeutet, dass jeder Initiator·auf alle LUNs·im entsprechenden Ziel zugreifen kann.· Sie können Keine Authentifizierung aktivieren, indem Sie die ACL-Authentifizierung deaktivieren:

gwcli >  /> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/hosts
gwcli >  /iscsi-target...testvol/hosts> auth disable_acl

6.4.4.2 Verwenden der ACL-Authentifizierung

Bei der ACL-Authentifizierung anhand des Initiatornamens dürfen lediglich die definierten Initiatoren eine Verbindung herstellen. So definieren Sie einen Initiator:

gwcli >  /> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/hosts
gwcli >  /iscsi-target...testvol/hosts> create iqn.1996-04.de.suse:01:e6ca28cc9f20

Definierte Initiatoren können eine Verbindung herstellen, erhalten den Zugriff jedoch nur auf die RBD-Images, die dem Initiator explizit hinzugefügt wurden:

gwcli >  /iscsi-target...:e6ca28cc9f20> disk add rbd/testvol

6.4.4.3 Aktivieren der CHAP-Authentifizierung

Neben der ACL-Authentifizierung können Sie die CHAP-Authentifizierung aktivieren. Geben Sie hierzu einen Benutzernamen und ein Passwort für die einzelnen Initiatoren an:

gwcli >  /> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/hosts/iqn.1996-04.de.suse:01:e6ca28cc9f20
gwcli >  /iscsi-target...:e6ca28cc9f20> auth username=common12 password=pass12345678
Anmerkung
Anmerkung

Die Benutzernamen müssen 8 bis 64 Zeichen lang sein und dürfen alphanumerische Zeichen enthalten, ., @, -, _ oder :.

Die Passwörter müssen 12 bis 16 Zeichen lang sein und dürfen alphanumerische Zeichen enthalten, , @, -, _ oder /.

Optional können Sie außerdem die gegenseitige CHAP-Authentifizierung aktivieren. Geben Sie hierzu die Parameter mutual_username und mutual_password im Kommando auth an.

6.4.4.4 Konfigurieren der Ermittlungsauthentifizierung und der gegenseitigen Authentifizierung

Die Ermittlungsauthentifizierung ist unabhängig von den obigen Authentifizierungsverfahren. Es ist ein Berechtigungsnachweis für die Suche erforderlich, die Suche ist optional und sie wird wie folgt konfiguriert:

gwcli >  /> cd /iscsi-targets
gwcli >  /iscsi-targets> discovery_auth username=du123456 password=dp1234567890
Anmerkung
Anmerkung

Die Benutzernamen müssen 8 bis 64 Zeichen lang sein und dürfen nur Buchstaben enthalten, ., @, -, _ oder :.

Die Passwörter müssen 12 bis 16 Zeichen lang sein und dürfen nur Buchstaben enthalten, @, -, _ oder /.

Optional können Sie auch die Parameter mutual_username und mutual_password im Kommando discovery_auth angeben.

Die Ermittlungsauthentifizierung wird mit folgendem Kommando deaktiviert:

gwcli >  /iscsi-targets> discovery_auth nochap

6.4.5 Konfigurieren von erweiterten Einstellungen

ceph-iscsi kann mit erweiterten Parametern konfiguriert werden, die anschließend an das LIO-E/A-Ziel übergeben werden. Die Parameter sind in Ziel- und Datenträger-Parameter aufgeteilt.

Warnung
Warnung

Soweit nicht anders angegeben, ist es nicht zu empfehlen, die Standardeinstellung dieser Parameter zu ändern.

6.4.5.1 Anzeigen der Zieleinstellungen

Mit dem Kommando info rufen Sie den Wert dieser Einstellungen ab:

gwcli >  /> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol
gwcli >  /iscsi-target...i.SYSTEM-ARCH:testvol> info

Mit dem Kommando reconfigure ändern Sie eine Einstellung:

gwcli >  /iscsi-target...i.SYSTEM-ARCH:testvol> reconfigure login_timeout 20

Die folgenden Ziel-Einstellungen stehen zur Auswahl:

default_cmdsn_depth

Standardmäßige CmdSN (Command Sequence Number)-Tiefe. Beschränkt die Anzahl der Anforderungen, die für einen iSCSI Initiator zu einem beliebigen Zeitpunkt ausstehend sein können.

default_erl

Standardmäßige Fehlerwiederherstellungsstufe.

login_timeout

Wert der Zeitüberschreitung bei der Anmeldung in Sekunden.

netif_timeout

NIC-Fehler-Zeitüberschreitung in Sekunden.

prod_mode_write_protect

Wert 1 verhindert das Schreiben in LUNs.

6.4.5.2 Anzeigen der Datenträgereinstellungen

Mit dem Kommando info rufen Sie den Wert dieser Einstellungen ab:

gwcli >  /> cd /disks/rbd/testvol
gwcli >  /disks/rbd/testvol> info

Mit dem Kommando reconfigure ändern Sie eine Einstellung:

gwcli >  /disks/rbd/testvol> reconfigure rbd/testvol emulate_pr 0

Die folgenden Datenträger-Einstellungen stehen zur Auswahl:

block_size

Blockgröße des zugrundeliegenden Geräts.

emulate_3pc

Wert 1 aktiviert das Drittanbieterexemplar.

emulate_caw

Wert 1 aktiviert „Vergleichen“ und „Schreiben“.

emulate_dpo

Wert 1 schaltet „Disable Page Out“ ein.

emulate_fua_read

Wert 1 aktiviert das Lesen von „Force Unit Access“ (Zugriff auf Einheit erzwingen).

emulate_fua_write

Wert 1 aktiviert das Schreiben von „Force Unit Access“ (Zugriff auf Einheit erzwingen).

emulate_model_alias

Wert 1 verwendet den Back-End-Gerätenamen für den Modell-Alias.

emulate_pr

Beim Wert 0 ist die Unterstützung für SCSI-Reservierungen (auch permanente Gruppenreservierungen) deaktiviert. Ist diese Option deaktiviert, kann das iSCSI Gateway den Reservierungsstatus ignorieren, sodass die Anforderungslatenz verbessert wird.

Tipp
Tipp

Wenn die iSCSI-Initiatoren keine Unterstützung für die SCSI-Reservierung benötigen, wird empfohlen, den Wert 0 für backstore_emulate_pr festzulegen.

emulate_rest_reord

Bei Wert 0 weist der Queue Algorithm Modifier (Warteschlangenalgorithmus-Modifizierer) die Option „Restricted Reordering“ auf.

emulate_tas

Wert 1 aktiviert „Task Aborted Status“.

emulate_tpu

Wert 1 aktiviert „Thin Provisioning Unmap“.

emulate_tpws

Wert 1 aktiviert „Thin Provisioning Write Same“.

emulate_ua_intlck_ctrl

Wert 1 aktiviert „Unit Attention Interlock“.

emulate_write_cache

Wert 1 schaltet „Write Cache Enable“ ein.

enforce_pr_isids

Wert 1 erzwingt ISIDs für permanente Reservierungen.

is_nonrot

Bei Wert 1 ist der Backstore ein sich nicht drehendes Gerät.

max_unmap_block_desc_count

Maximale Anzahl der Blockbeschreibungen für UNMAP.

max_unmap_lba_count:

Maximale Anzahl der LBAs für UNMAP.

max_write_same_len

Maximale Länge für WRITE_SAME.

optimal_sectors

Optimale Anforderungsgröße in Sektoren.

pi_prot_type

DIF-Schutz-Typ.

queue_depth

Warteschlangentiefe.

unmap_granularity

UNMAP-Granularität.

unmap_granularity_alignment

Abstimmung der UNMAP-Granularität.

force_pr_aptpl

Ist diese Option aktiviert, schreibt LIO stets den Status der permanenten Reservierung in den permanenten Speicher, unabhängig davon, ob der Client diesen Status mit aptpl=1 angefordert hat. Dies wirkt sich nicht auf das Kernel-RBD-Back-End für LIO aus – hier wird der PR-Status in jedem Fall beibehalten. Im Idealfall sollte die Option target_core_rbd den Wert „1“ erzwingen und einen Fehler auslösen, wenn ein Benutzer versucht, die Option über die Konfiguration zu deaktivieren.

unmap_zeroes_data

Diese Option gibt an, ob LIO den SCSI-Initiatoren gegenüber LBPRZ bekannt gibt, also dass Nullen aus einem Bereich nach UNMAP oder WRITE SAME mit einem Bit zum Aufheben der Zuordnung gelesen werden.

6.5 Exportieren von RADOS-Blockgeräte-Images mit tcmu-runner

ceph-iscsi unterstützt sowohl den Backstore rbd (kernelbasiert) als auch den Backstore user:rbd (tcmu-runner), sodass die gesamte Verwaltung transparent und unabhängig vom Backstore abläuft.

Warnung
Warnung: Technologievorschau

tcmu-runner-basierte iSCSI-Gateway-Bereitstellungen sind aktuell ein Technology Preview.

Im Gegensatz zur Kernel-basierten iSCSI-Gateway-Bereitstellung unterstützen tcmu-runner-basierte iSCSI Gateways keine Multipath E/A oder permanente SCSI-Reservierungen.

Soll ein RADOS Block Device.Image mit tcmu-runner exportiert werden, müssen Sie lediglich den user:rbd-Backstore angeben, wenn Sie den Datenträger anhängen:

gwcli >  /disks> attach rbd/testvol backstore=user:rbd
Anmerkung
Anmerkung

Zur Verwendung von tcmu-runner muss die Funktion exclusive-lock für das exportierte RBD-Image aktiviert sein.

Teil IV Upgrade von vorigen Versionen

7 Upgrade von einer früheren Version

In diesem Kapitel finden Sie die Schritte zum Upgrade von SUSE Enterprise Storage 6 auf Version 7.

Das Upgrade umfasst die folgenden Aufgaben:

  • Upgrade von Ceph Nautilus zu Octopus.

  • Umstellung von der Installation und Ausführung von Ceph über RPM-Pakete auf die Ausführung in Containern.

  • Vollständiges Entfernen von DeepSea und Ersetzen durch ceph-salt und cephadm.

Warnung
Warnung

Die Upgrade-Informationen in diesem Kapitel gelten nur für Upgrades von DeepSea auf cephadm. Versuchen Sie nicht, diese Anweisungen zu befolgen, wenn Sie SUSE Enterprise Storage auf der SUSE CaaS-Plattform implementieren möchten.

Wichtig
Wichtig

Das Upgrade von SUSE Enterprise Storage-Versionen vor 6 wird nicht unterstützt. Sie müssen zunächst ein Upgrade auf die aktuelle Version von SUSE Enterprise Storage 6 durchführen und dann die Schritte in diesem Kapitel ausführen.

7.1 Vor dem Aufrüsten

Die folgenden Aufgaben müssen abgeschlossen sein, bevor Sie das Upgrade starten. Dies kann jederzeit während der Laufzeit von SUSE Enterprise Storage 6 erfolgen.

7.1.1 Zu berücksichtigende Aspekte

Lesen Sie vor dem Upgrade unbedingt die folgenden Abschnitte durch, um sicherzustellen, dass Sie alle auszuführenden Aufgaben verstehen.

  • In den Versionshinweisen finden Sie zusätzliche Informationen zu den Änderungen, die seit der vorigen Version von SUSE Enterprise Storage vorgenommen wurden. Informieren Sie sich in den Versionshinweisen über Folgendes:

    • Sind bei der Hardware besondere Überlegungen zu beachten?

    • Wurden erhebliche Änderungen an den verwendeten Softwarepaketen vorgenommen?

    • Gelten besondere Vorsichtsmaßnahmen für die vorliegende Installation?

    In den Versionshinweisen finden Sie auch Informationen, die erst nach der Fertigstellung des Handbuchs bekannt wurden. Auch bekannte Probleme werden beschrieben.

    Die Versionshinweise zu SES 7 finden Sie online unter https://www.suse.com/releasenotes/.

    Nach Installation des Pakets release-notes-ses aus dem SES 7-Repository finden Sie die Versionshinweise zudem lokal im Verzeichnis /usr/share/doc/release-notes oder online unter https://www.suse.com/releasenotes/.

  • Lesen Sie Kapitel 5, Bereitstellung mit cephadm, um sich mit ceph-salt und dem Ceph-Orchestrator vertraut zu machen, insbesondere die Informationen zu Servicespezifikationen.

  • Das Cluster-Upgrade kann lange dauern, nämlich in etwa so lange, wie es dauert, ein Upgrade eines Computers multipliziert mit der Anzahl der Cluster-Knoten durchzuführen.

  • Sie müssen zuerst ein Upgrade des Salt Master durchführen und danach DeepSea durch ceph-salt und cephadm ersetzen. Sie können das cephadm-Orchestrator-Modul erst dann verwenden, wenn mindestens für alle Ceph-Manager ein Upgrade durchgeführt wurde.

  • Das Upgrade von Nautilus-RPMs auf Octopus-Container muss in einem Schritt erfolgen. Das bedeutet, dass Sie für einen ganzen Knoten auf einmal ein Upgrade durchführen, nicht nur für einen Daemon auf einmal.

  • Das Upgrade der wichtigsten Services (MON, MGR, OSD) erfolgt nacheinander. Jeder Service ist während des Upgrades verfügbar. Die Gateway-Services (Metadata Server, Object Gateway, NFS Ganesha, iSCSI Gateway) müssen nach dem Upgrade der wichtigsten Services neu bereitgestellt werden. Für jeden der folgenden Services ist eine gewisse Ausfallzeit zu berücksichtigen:

    • Wichtig
      Wichtig

      Metadata Server und Object Gateways sind ab dem Zeitpunkt, an dem für die Knoten von SUSE Linux Enterprise Server 15 SP1 ein Upgrade auf SUSE Linux Enterprise Server 15 SP2 durchgeführt wurde, bis zur erneuten Bereitstellung der Services am Ende des Upgrade-Vorgangs außer Betrieb. Dies ist insbesondere dann zu beachten, wenn diese Services zusammen mit MONs, MGRs oder OSDs untergebracht sind, da sie in diesem Fall für die gesamte Dauer des Cluster-Upgrades ausfallen können. Sollte dies ein Problem sein, ziehen Sie in Erwägung, diese Services vor dem Upgrade separat auf zusätzlichen Knoten bereitzustellen, damit sie so kurz wie möglich ausfallen. Hierbei handelt es sich um die Dauer des Upgrades der Gateway-Knoten, nicht die Dauer des Upgrades des gesamten Clusters.

    • NFS Ganesha und iSCSI Gateways sind nur für die Dauer des Neustarts der Knoten während des Upgrades von SUSE Linux Enterprise Server 15 SP1 auf SUSE Linux Enterprise Server 15 SP2 außer Betrieb und erneut für kurze Zeit, wenn die einzelnen Services im containerisierten Modus neu bereitgestellt werden.

7.1.2 Sichern der Cluster-Konfiguration und -Daten

Wir empfehlen dringend, vor Beginn des Upgrades auf SUSE Enterprise Storage 7 alle Cluster-Konfigurationen und -Daten zu sichern. Eine Anleitung zur Sicherung aller Daten finden Sie unter https://documentation.suse.com/ses/6/html/ses-all/cha-deployment-backup.html.

7.1.3 Überprüfen der Schritte des vorherigen Upgrades

Falls Sie zuvor ein Upgrade von Version 5 durchgeführt haben, prüfen Sie, ob das Upgrade auf Version 6 erfolgreich abgeschlossen wurde:

Prüfen Sie, ob die Datei /srv/salt/ceph/configuration/files/ceph.conf.import vorhanden ist.

Diese Datei wird durch den Importvorgang während des Upgrades von SUSE Enterprise Storage 5 auf 6 erstellt. Die Option configuration_init: default-import wird in /srv/pillar/ceph/proposals/config/stack/default/ceph/cluster.yml festgelegt.

Wenn configuration_init noch auf default-import festgelegt ist, greift der Cluster auf ceph.conf.import als Konfigurationsdatei zurück, nicht auf die Standarddatei ceph.conf von DeepSea, die aus Dateien in /srv/salt/ceph/configuration/files/ceph.conf.d/ kompiliert wird.

Sie müssen daher ceph.conf.import auf benutzerdefinierte Konfigurationen prüfen und diese Konfigurationen ggf. in eine der Dateien in /srv/salt/ceph/configuration/files/ceph.conf.d/ verschieben.

Entfernen Sie dann die Zeile configuration_init: default-import aus /srv/pillar/ceph/proposals/config/stack/default/ceph/cluster.yml.

7.1.4 Aktualisieren von Cluster-Knoten und Überprüfen des Zustands des Clusters

Überprüfen Sie, ob alle aktuellen Aktualisierungen von SUSE Linux Enterprise Server 15 SP1 und SUSE Enterprise Storage 6 auf alle Cluster-Knoten angewendet werden:

root # zypper refresh && zypper patch

Überprüfen Sie nach der Anwendung der Aktualisierungen den Zustand des Clusters:

cephuser@adm > ceph -s

7.1.5 Überprüfen des Zugriffs auf Software-Repositorys und Container-Images

Stellen Sie sicher, dass alle Cluster-Knoten Zugriff auf die Software-Repositorys von SUSE Linux Enterprise Server 15 SP2 und SUSE Enterprise Storage 7 sowie auf die Registrierung von Container-Images haben.

7.1.5.1 Software-Repositorys

Wenn alle Knoten bei SCC registriert sind, können Sie das Kommando zypper migration für das Upgrade verwenden. Weitere Informationen finden Sie in https://documentation.suse.com/sles/15-SP2/html/SLES-all/cha-upgrade-online.html#sec-upgrade-online-zypper.

Wenn Knoten nicht bei SCC registriert sind, deaktivieren Sie alle vorhandenen Software-Repositorys und fügen Sie sowohl das Pool- als auch das Updates-Repository für jede der folgenden Erweiterungen hinzu:

  • SLE-Product-SLES/15-SP2

  • SLE-Module-Basesystem/15-SP2

  • SLE-Module-Server-Applications/15-SP2

  • SUSE-Enterprise-Storage-7

7.1.5.2 Container-Images

Alle Cluster-Knoten benötigen Zugriff auf die Container-Image-Registrierung. In den meisten Fällen verwenden Sie die öffentliche SUSE-Registrierung unter registry.suse.com. Dafür benötigen Sie die folgenden Images:

  • registry.suse.com/ses/7/ceph/ceph

  • registry.suse.com/ses/7/ceph/grafana

  • registry.suse.com/caasp/v4.5/prometheus-server

  • registry.suse.com/caasp/v4.5/prometheus-node-exporter

  • registry.suse.com/caasp/v4.5/prometheus-alertmanager

Alternativ (z. B. für Air-Gap-Bereitstellungen) können Sie eine lokale Registrierung konfigurieren und überprüfen, ob Sie den richtigen Satz von Container-Images zur Verfügung haben. Weitere Details zum Konfigurieren einer lokalen Container-Image-Registrierung finden Sie in Abschnitt 5.3.2.11, „Konfigurieren der Container-Registrierung“.

7.2 Upgrade des Salt Masters

Das folgende Verfahren beschreibt den Prozess des Upgrades des Salt Masters:

  1. Führen Sie ein Upgrade des zugrunde liegenden Betriebssystems auf SUSE Linux Enterprise Server 15 SP2 durch:

    • Führen Sie für Cluster, deren Knoten bei SCC registriert sind, zypper migration aus.

    • Führen Sie für Cluster, deren Knoten Software-Repositorys manuell zugewiesen wurden, zypper dup und dann reboot aus.

  2. Deaktivieren Sie die DeepSea-Phasen, um eine versehentliche Verwendung zu vermeiden. Fügen Sie folgenden Inhalt zu /srv/pillar/ceph/stack/global.yml hinzu:

    stage_prep: disabled
    stage_discovery: disabled
    stage_configure: disabled
    stage_deploy: disabled
    stage_services: disabled
    stage_remove: disabled

    Speichern Sie die Datei und übernehmen Sie die Änderungen:

    root@master # salt '*' saltutil.pillar_refresh
  3. Wenn Sie keine Container-Images von registry.suse.com verwenden, sondern die lokal konfigurierte Registrierung, bearbeiten Sie /srv/pillar/ceph/stack/global.yml, um DeepSea mitzuteilen, welches Ceph-Container-Image und welche Registrierung verwendet werden sollen. Beispiel: Fügen Sie die folgenden Zeilen ein, um 192.168.121.1:5000/my/ceph/image zu verwenden:

    ses7_container_image: 192.168.121.1:5000/my/ceph/image
    ses7_container_registries:
      - location: 192.168.121.1:5000

    Speichern Sie die Datei und übernehmen Sie die Änderungen:

    root@master # salt '*' saltutil.refresh_pillar
  4. Übernehmen Sie die bestehende Konfiguration:

    cephuser@adm > ceph config assimilate-conf -i /etc/ceph/ceph.conf
  5. Prüfen Sie den Upgrade-Status. Je nach Cluster-Konfiguration kann Ihre Ausgabe abweichen:

    root@master # salt-run upgrade.status
    The newest installed software versions are:
     ceph: ceph version 15.2.2-60-gf5864377ab (f5864377abb5549f843784c93577980aa264b9bc) octopus (stable)
     os: SUSE Linux Enterprise Server 15 SP2
    Nodes running these software versions:
     admin.ceph (assigned roles: master, prometheus, grafana)
    Nodes running older software versions must be upgraded in the following order:
     1: mon1.ceph (assigned roles: admin, mon, mgr)
     2: mon2.ceph (assigned roles: admin, mon, mgr)
     3: mon3.ceph (assigned roles: admin, mon, mgr)
     4: data4.ceph (assigned roles: storage, mds)
     5: data1.ceph (assigned roles: storage)
     6: data2.ceph (assigned roles: storage)
     7: data3.ceph (assigned roles: storage)
     8: data5.ceph (assigned roles: storage, rgw)

7.3 Upgrade der MON-, MGR- und OSD-Knoten

Führen Sie die Upgrades für Ceph-Monitor-, Ceph-Manager- und OSD-Knoten nacheinander durch. Führen Sie für jeden Service die folgenden Schritte aus:

  1. Wenn es sich bei dem Knoten, für den Sie ein Upgrade durchführen, um einen OSD-Knoten handelt, verhindern Sie, dass der OSD-Knoten während des Upgrade-Vorgangs als out markiert wird. Führen Sie hierzu folgendes Kommando aus:

    cephuser@adm > ceph osd add-noout SHORT_NODE_NAME

    Ersetzen Sie SHORT_NODE_NAME durch den Kurznamen des Knotens, wie er in der Ausgabe des Kommandos ceph osd tree erscheint. In der folgenden Eingabe lauten die Kurznamen des Hosts ses-min1 und ses-min2.

    root@master # ceph osd tree
    ID   CLASS  WEIGHT   TYPE NAME       STATUS  REWEIGHT  PRI-AFF
     -1         0.60405  root default
    -11         0.11691      host ses-min1
      4    hdd  0.01949          osd.4       up   1.00000  1.00000
      9    hdd  0.01949          osd.9       up   1.00000  1.00000
     13    hdd  0.01949          osd.13      up   1.00000  1.00000
    [...]
     -5         0.11691      host ses-min2
      2    hdd  0.01949          osd.2       up   1.00000  1.00000
      5    hdd  0.01949          osd.5       up   1.00000  1.00000
    [...]
  2. Führen Sie ein Upgrade des zugrunde liegenden Betriebssystems auf SUSE Linux Enterprise Server 15 SP2 durch:

    • Wenn alle Knoten des Clusters bei SCC registriert sind, führen Sie zypper migration aus.

    • Wenn den Knoten des Clusters Software-Repositorys manuell zugewiesen wurden, führen Sie zypper dup und dann reboot aus.

  3. Containerisieren Sie nach dem Neustart des Knotens alle vorhandenen MON-, MGR- und OSD-Daemons auf diesem Knoten. Führen Sie hierzu folgendes Kommando auf dem Salt Master aus:

    root@master # salt MINION_ID state.apply ceph.upgrade.ses7.adopt

    Ersetzen Sie MINION_ID durch die ID des Minion, den Sie aufrüsten möchten. Die Liste der Minion-IDs erhalten Sie durch Ausführen des Kommandos salt-key -L auf dem Salt Master.

    Tipp
    Tipp

    Den Status und den Fortschritt der Übernahme finden Sie im Ceph-Dashboard oder durch Ausführen eines der folgenden Kommandos auf dem Salt Master:

    root@master # ceph status
    root@master # ceph versions
    root@master # salt-run upgrade.status
  4. Entfernen Sie nach der erfolgreichen Übernahme das Flag noout, wenn der Knoten, den Sie aufrüsten, ein OSD-Knoten ist:

    cephuser@adm > ceph osd rm-noout SHORT_NODE_NAME

7.4 Upgrade von Gateway-Knoten

Führen Sie als Nächstes ein Upgrade der separaten Gateway-Knoten (Metadata Server, Object Gateway, NFS Ganesha oder iSCSI Gateway) durch. Führen Sie für jeden Knoten ein Upgrade des zugrunde liegenden Betriebssystems auf SUSE Linux Enterprise Server 15 SP2 auf:

  • Wenn alle Knoten des Clusters beim SUSE Customer Center registriert sind, führen Sie das Kommando zypper migration aus.

  • Wenn den Knoten des Clusters Software-Repositorys manuell zugewiesen wurden, führen Sie das Kommando zypper dup und dann das Kommando reboot aus.

Dieser Schritt gilt auch für alle Knoten, die Teil des Clusters sind, denen aber noch keine Rollen zugewiesen wurden (überprüfen Sie im Zweifelsfall die Liste der Hosts auf dem Salt Master, die durch das Kommando salt-key -L erstellt wird, und vergleichen Sie sie mit der Ausgabe des Kommandos salt-run upgrade.status).

Sobald für das Betriebssystem auf allen Knoten im Cluster ein Upgrade durchgeführt wurde, wird im nächsten Schritt das Paket ceph-salt installiert und die Cluster-Konfiguration angewendet. Die eigentlichen Gateway-Services werden am Ende des Upgrade-Vorgangs in einem containerisierten Modus neu bereitgestellt.

Anmerkung
Anmerkung

Metadata-Server- und Object-Gateway-Services sind ab dem Zeitpunkt des Upgrades auf SUSE Linux Enterprise Server 15 SP2 nicht mehr verfügbar. Sie müssen am Ende des Upgrade-Vorgangs erneut bereitgestellt werden.

7.5 Installieren von ceph-salt und Anwenden der Cluster-Konfiguration

Bevor Sie damit beginnen, ceph-salt zu installieren und die Cluster-Konfiguration anzuwenden, müssen Sie den Cluster- und Upgrade-Status überprüfen. Führen Sie dazu folgende Kommandos aus:

root@master # ceph status
root@master # ceph versions
root@master # salt-run upgrade.status
  1. Entfernen Sie die von DeepSea erstellten Crons rbd_exporter und rgw_exporter. Führen Sie auf dem Salt Master als root das Kommando crontab -e aus, um crontab zu bearbeiten. Löschen Sie die folgenden Elemente, falls vorhanden:

    # SALT_CRON_IDENTIFIER:deepsea rbd_exporter cron job
    */5 * * * * /var/lib/prometheus/node-exporter/rbd.sh > \
     /var/lib/prometheus/node-exporter/rbd.prom 2> /dev/null
    # SALT_CRON_IDENTIFIER:Prometheus rgw_exporter cron job
    */5 * * * * /var/lib/prometheus/node-exporter/ceph_rgw.py > \
     /var/lib/prometheus/node-exporter/ceph_rgw.prom 2> /dev/null
  2. Führen Sie zum Exportieren der Cluster-Konfiguration aus DeepSea folgende Kommandos aus:

    root@master # salt-run upgrade.ceph_salt_config > ceph-salt-config.json
    root@master # salt-run upgrade.generate_service_specs > specs.yaml
  3. Deinstallieren Sie DeepSea und installieren Sie ceph-salt auf dem Salt Master:

    root@master # zypper remove 'deepsea*'
    root@master # zypper install ceph-salt
  4. Starten Sie den Salt Master neu und synchronisieren Sie die Salt-Module:

    root@master # systemctl restart salt-master.service
    root@master # salt \* saltutil.sync_all
  5. Importieren Sie die Cluster-Konfiguration von DeepSea in ceph-salt:

    root@master # ceph-salt import ceph-salt-config.json
  6. Generieren Sie SSH-Schlüssel für die Cluster-Knoten-Kommunikation:

    root@master # ceph-salt config /ssh generate
    Tipp
    Tipp

    Überprüfen Sie, ob die Cluster-Konfiguration aus DeepSea importiert wurde, und geben Sie eventuell fehlende Optionen an:

    root@master # ceph-salt config ls

    Eine vollständige Beschreibung der Cluster-Konfiguration finden Sie in Abschnitt 5.3.2, „Konfigurieren der Clustereigenschaften“.

  7. Wenden Sie die Konfiguration an und aktivieren Sie cephadm:

    root@master # ceph-salt apply
  8. Wenn Sie die URL und die Zugangsdaten für die lokale Container-Registrierung angeben müssen, führen Sie die in Abschnitt 5.3.2.11, „Konfigurieren der Container-Registrierung“ beschriebenen Schritte aus.

  9. Wenn Sie keine Container-Images von registry.suse.com verwenden, sondern die lokal konfigurierte Registrierung, teilen Sie Ceph mit, welches Container-Image verwendet werden soll. Führen Sie dazu folgendes Kommando aus:

    root@master # ceph config set global container_image IMAGE_NAME

    Beispiel:

    root@master # ceph config set global container_image 192.168.121.1:5000/my/ceph/image
  10. Stoppen und deaktivieren Sie die ceph-crash-Daemons von SUSE Enterprise Storage 6. Neue containerisierte Formen dieser Daemons werden später automatisch gestartet.

    root@master # salt '*' service.stop ceph-crash
    root@master # salt '*' service.disable ceph-crash

7.6 Upgrade und Übernahme des Überwachungs-Stacks

Durch folgendes Verfahren werden alle Komponenten des Überwachungs-Stacks übernommen (weitere Details finden Sie im Book “Betriebs- und Verwaltungshandbuch”, Chapter 16 “Überwachung und Warnungen”).

  1. Halten Sie den Orchestrator an:

    cephuser@adm > ceph orch pause
  2. Führen Sie auf dem Knoten, auf dem Prometheus, Grafana und Alertmanager ausgeführt werden (standardmäßig der Salt Master), die folgenden Kommandos aus:

    cephuser@adm > cephadm adopt --style=legacy --name prometheus.$(hostname)
    cephuser@adm > cephadm adopt --style=legacy --name alertmanager.$(hostname)
    cephuser@adm > cephadm adopt --style=legacy --name grafana.$(hostname)
    Tipp
    Tipp

    Wenn Sie nicht das Standard-Container-Image registry.suse.com ausführen, müssen Sie das zu verwendende Image angeben, zum Beispiel:

    cephuser@adm > cephadm --image 192.168.121.1:5000/caasp/v4.5/prometheus-server:2.18.0 \
      adopt --style=legacy --name prometheus.$(hostname)
    cephuser@adm > cephadm --image 192.168.121.1:5000/caasp/v4.5/prometheus-alertmanager:0.16.2 \
      adopt --style=legacy --name alertmanager.$(hostname)
    cephuser@adm > cephadm --image 192.168.121.1:5000/ses/7/ceph/grafana:7.0.3 \
     adopt --style=legacy --name grafana.$(hostname)

    Weitere Details zur Verwendung benutzerdefinierter oder lokaler Container-Images finden Sie im Book “Betriebs- und Verwaltungshandbuch”, Chapter 16 “Überwachung und Warnungen”, Section 16.1 “Konfigurieren von benutzerdefinierten oder lokalen Images”.

  3. Entfernen Sie den Node Exporter. Er muss nicht migriert werden und wird als Container neu installiert, wenn die Datei specs.yaml angewendet wird.

    tux > sudo zypper rm golang-github-prometheus-node_exporter
  4. Wenden Sie die zuvor aus DeepSea exportierten Servicespezifikationen an:

    cephuser@adm > ceph orch apply -i specs.yaml
  5. Setzen Sie den Orchestrator fort:

    cephuser@adm > ceph orch resume

7.7 Erneute Bereitstellung des Gateway-Service

7.7.1 Upgrade des Object Gateways

In SUSE Enterprise Storage 7 werden die Object Gateways immer mit einem Bereich konfiguriert, was in Zukunft mehrere Standorte ermöglicht (weitere Details finden Sie im Book “Betriebs- und Verwaltungshandbuch”, Chapter 21 “Ceph Object Gateway”, Section 21.13 “Object Gateways an mehreren Standorten”). Wenn Sie in SUSE Enterprise Storage 6 eine Object-Gateway-Konfiguration für einen einzigen Standort verwendet haben, gehen Sie folgendermaßen vor, um einen Bereich hinzuzufügen. Wenn Sie nicht vorhaben, die Funktionalität für mehrere Standorte tatsächlich zu nutzen, ist es in Ordnung, die Standardwerte für die Namen des Bereichs, der Zonengruppe und der Zone zu verwenden.

  1. Erstellen Sie einen neuen Bereich:

    cephuser@adm > radosgw-admin realm create --rgw-realm=REALM_NAME --default
  2. Optional können Sie die standardmäßige Zone und Zonengruppe umbenennen.

    cephuser@adm > radosgw-admin zonegroup rename \
     --rgw-zonegroup default \
     --zonegroup-new-name=ZONEGROUP_NAME
    cephuser@adm > radosgw-admin zone rename \
     --rgw-zone default \
     --zone-new-name ZONE_NAME \
     --rgw-zonegroup=ZONEGROUP_NAME
  3. Konfigurieren Sie die Master-Zonengruppe:

    cephuser@adm > radosgw-admin zonegroup modify \
     --rgw-realm=REALM_NAME \
     --rgw-zonegroup=ZONEGROUP_NAME \
     --endpoints http://RGW.EXAMPLE.COM:80 \
     --master --default
  4. Konfigurieren Sie die Master-Zone. Dazu benötigen Sie den ACCESS_KEY und SECRET_KEY eines Object-Gateway-Benutzers, bei dem das Flag system aktiviert ist. Hierbei handelt es sich normalerweise um den admin-Benutzer. Führen Sie zum Abrufen des ACCESS_KEY und SECRET_KEY das Kommando radosgw-admin user info --uid admin aus.

    cephuser@adm > radosgw-admin zone modify \
     --rgw-realm=REALM_NAME \
     --rgw-zonegroup=ZONEGROUP_NAME \
     --rgw-zone=ZONE_NAME \
     --endpoints http://RGW.EXAMPLE.COM:80 \
     --access-key=ACCESS_KEY \
     --secret=SECRET_KEY \
     --master --default
  5. Bestätigen Sie die aktualisierte Konfiguration:

    cephuser@adm > radosgw-admin period update --commit

Um den Object-Gateway-Service zu containerisieren, erstellen Sie dessen Spezifikationsdatei wie in Abschnitt 5.4.3.4, „Bereitstellen von Object Gateways“ beschrieben, und wenden Sie sie an.

cephuser@adm > ceph orch apply -i RGW.yml

7.7.2 Upgrade von NFS Ganesha

Im Folgenden wird demonstriert, wie ein bestehender NFS-Ganesha-Service unter Ceph Nautilus in einen NFS-Ganesha-Container unter Ceph Octopus migriert wird.

Warnung
Warnung

Die folgende Dokumentation setzt voraus, dass Sie für die wichtigsten Ceph-Services bereits erfolgreich ein Upgrade durchgeführt haben.

NFS Ganesha speichert zusätzlich die Konfiguration pro Daemon und exportiert die Konfiguration in einen RADOS-Pool. Den konfigurierten RADOS-Pool finden Sie in der Datei ganesha.conf im Block RADOS_URLS in der Zeile watch_url. Standardmäßig wird dieser Pool ganesha_config genannt.

Bevor Sie eine Migration durchführen, empfehlen wir dringend, eine Kopie der Export- und der Daemon-Konfigurationsobjekte zu erstellen, die sich im RADOS-Pool befinden. Führen Sie das folgende Kommando aus, um den konfigurierten RADOS-Pool zu finden:

cephuser@adm > grep -A5 RADOS_URLS /etc/ganesha/ganesha.conf

So listen Sie den Inhalt des RADOS-Pools auf:

cephuser@adm > rados --pool ganesha_config --namespace ganesha ls | sort
  conf-node3
  export-1
  export-2
  export-3
  export-4

So kopieren Sie die RADOS-Objekte:

cephuser@adm > RADOS_ARGS="--pool ganesha_config --namespace ganesha"
cephuser@adm > OBJS=$(rados $RADOS_ARGS ls)
cephuser@adm > for obj in $OBJS; do rados $RADOS_ARGS get $obj $obj; done
cephuser@adm > ls -lah
total 40K
drwxr-xr-x 2 root root 4.0K Sep 8 03:30 .
drwx------ 9 root root 4.0K Sep 8 03:23 ..
-rw-r--r-- 1 root root 90 Sep 8 03:30 conf-node2
-rw-r--r-- 1 root root 90 Sep 8 03:30 conf-node3
-rw-r--r-- 1 root root 350 Sep 8 03:30 export-1
-rw-r--r-- 1 root root 350 Sep 8 03:30 export-2
-rw-r--r-- 1 root root 350 Sep 8 03:30 export-3
-rw-r--r-- 1 root root 358 Sep 8 03:30 export-4

Pro Knoten muss ein bestehender NFS-Ganesha-Service gestoppt und anschließend durch einen von cephadm verwalteten Container ersetzt werden.

  1. Stoppen und deaktivieren Sie den vorhandenen NFS-Ganesha-Service:

    cephuser@adm > systemctl stop nfs-ganesha
    cephuser@adm > systemctl disable nfs-ganesha
  2. Nachdem der bestehende NFS-Ganesha-Service gestoppt wurde, kann mit cephadm ein neuer Service in einem Container eingerichtet werden. Dazu müssen Sie eine Service-Spezifikation erstellen, die eine service_id enthält, die zur Identifizierung dieses neuen NFS-Clusters verwendet wird, den Hostnamen des Knotens, den wir migrieren und der in der Platzierungsspezifikation als Host aufgeführt ist, sowie den RADOS-Pool und -Namespace, der die konfigurierten NFS-Exportobjekte enthält. Beispiel:

    service_type: nfs
    service_id: SERVICE_ID
    placement:
      hosts:
      - node2
      pool: ganesha_config
      namespace: ganesha

    Weitere Informationen zum Erstellen einer Platzierungsspezifikation finden Sie in Abschnitt 5.4.2, „Service- und Platzierungsspezifikation“.

  3. Wenden Sie die Platzierungsspezifikation an:

    cephuser@adm > ceph orch apply -i FILENAME.yaml
  4. Bestätigen Sie, dass der NFS-Ganesha-Daemon auf dem Host ausgeführt wird:

    cephuser@adm > ceph orch ps --daemon_type nfs
    NAME           HOST   STATUS         REFRESHED  AGE  VERSION  IMAGE NAME                                IMAGE ID      CONTAINER ID
    nfs.foo.node2  node2  running (26m)  8m ago     27m  3.3      registry.suse.com/ses/7/ceph/ceph:latest  8b4be7c42abd  c8b75d7c8f0d
  5. Wiederholen Sie diese Schritte für jeden NFS-Ganesha-Knoten. Sie müssen nicht für jeden Knoten eine eigene Servicespezifikation erstellen. Es reicht aus, den Hostnamen jedes Knotens zur bestehenden NFS-Servicespezifikation hinzuzufügen und sie erneut anzuwenden.

Die vorhandenen Exporte können auf zwei verschiedene Arten migriert werden:

  • manuell neu erstellt oder neu zugewiesen über das Ceph Dashboard.

  • Kopieren Sie den Inhalt jedes RADOS-Objekts pro Daemon manuell in die neu erstellte gemeinsame NFS-Ganesha-Konfiguration.

Vorgehen 7.1: Manuelles Kopieren von Exporten in die gemeinsame Konfigurationsdatei von NFS Ganesha
  1. Ermitteln Sie die Liste der RADOS-Objekte pro Daemon:

    cephuser@adm > RADOS_ARGS="--pool ganesha_config --namespace ganesha"
    cephuser@adm > DAEMON_OBJS=$(rados $RADOS_ARGS ls | grep 'conf-')
  2. Erstellen Sie eine Kopie der RADOS-Objekte pro Daemon:

    cephuser@adm > for obj in $DAEMON_OBJS; do rados $RADOS_ARGS get $obj $obj; done
    cephuser@adm > ls -lah
    total 20K
    drwxr-xr-x 2 root root 4.0K Sep 8 16:51 .
    drwxr-xr-x 3 root root 4.0K Sep 8 16:47 ..
    -rw-r--r-- 1 root root 90 Sep 8 16:51 conf-nfs.SERVICE_ID
    -rw-r--r-- 1 root root 90 Sep 8 16:51 conf-node2
    -rw-r--r-- 1 root root 90 Sep 8 16:51 conf-node3
  3. Sortieren Sie sie und führen Sie sie in einer einzigen Liste von Exporten zusammen:

    cephuser@adm > cat conf-* | sort -u > conf-nfs.SERVICE_ID
    cephuser@adm > cat conf-nfs.foo
    %url "rados://ganesha_config/ganesha/export-1"
    %url "rados://ganesha_config/ganesha/export-2"
    %url "rados://ganesha_config/ganesha/export-3"
    %url "rados://ganesha_config/ganesha/export-4"
  4. Schreiben Sie die neue gemeinsame Konfigurationsdatei für NFS Ganesha:

    cephuser@adm > rados $RADOS_ARGS put conf-nfs.SERVICE_ID conf-nfs.SERVICE_ID
  5. Benachrichtigen Sie den NFS-Ganesha-Daemon:

    cephuser@adm > rados $RADOS_ARGS notify conf-nfs.SERVICE_ID conf-nfs.SERVICE_ID
    Anmerkung
    Anmerkung

    Diese Aktion veranlasst den Daemon, die Konfiguration neu zu laden.

Nach der erfolgreichen Migration des Service kann der Nautilus-basierte NFS-Ganesha-Service entfernt werden.

  1. Entfernen Sie NFS Ganesha:

    cephuser@adm > zypper rm nfs-ganesha
    Reading installed packages...
    Resolving package dependencies...
    The following 5 packages are going to be REMOVED:
      nfs-ganesha nfs-ganesha-ceph nfs-ganesha-rados-grace nfs-ganesha-rados-urls nfs-ganesha-rgw
    5 packages to remove.
    After the operation, 308.9 KiB will be freed.
    Continue? [y/n/v/...? shows all options] (y): y
    (1/5) Removing nfs-ganesha-ceph-2.8.3+git0.d504d374e-3.3.1.x86_64 .................................................................................................................................................................................................................................................................................................[done]
    (2/5) Removing nfs-ganesha-rgw-2.8.3+git0.d504d374e-3.3.1.x86_64 ..................................................................................................................................................................................................................................................................................................[done]
    (3/5) Removing nfs-ganesha-rados-urls-2.8.3+git0.d504d374e-3.3.1.x86_64 ...........................................................................................................................................................................................................................................................................................[done]
    (4/5) Removing nfs-ganesha-rados-grace-2.8.3+git0.d504d374e-3.3.1.x86_64 ..........................................................................................................................................................................................................................................................................................[done]
    (5/5) Removing nfs-ganesha-2.8.3+git0.d504d374e-3.3.1.x86_64 ......................................................................................................................................................................................................................................................................................................[done]
    Additional rpm output:
    warning: /etc/ganesha/ganesha.conf saved as /etc/ganesha/ganesha.conf.rpmsave
  2. Entfernen Sie die veralteten Cluster-Einstellungen aus dem Ceph Dashboard:

    cephuser@adm > ceph dashboard reset-ganesha-clusters-rados-pool-namespace

7.7.3 Upgrade des Metadata Servers

Im Gegensatz zu MONs, MGRs und OSDs kann der Metadata Server nicht an Ort und Stelle übernommen werden. Stattdessen müssen Sie sie mit dem Ceph-Orchestrator neu in Containern bereitstellen.

  1. Führen Sie das Kommando ceph fs ls aus, um beispielsweise den Namen Ihres Dateisystems zu erhalten:

    cephuser@adm > ceph fs ls
    name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
  2. Erstellen Sie eine neue Servicespezifikationsdatei mds.yml wie in Abschnitt 5.4.3.3, „Bereitstellen von Metadatenservern“ beschrieben. Verwenden Sie dazu den Dateisystemnamen als service_id und geben Sie die Hosts an, auf denen die MDS-Daemons ausgeführt werden. Beispiel:

    service_type: mds
    service_id: cephfs
    placement:
      hosts:
      - ses-min1
      - ses-min2
      - ses-min3
  3. Führen Sie das Kommando ceph orch apply -i mds.yml aus, um die Servicespezifikation anzuwenden und die MDS-Daemons zu starten.

7.7.4 Upgrade des iSCSI Gateways

Für ein Upgrade des iSCSI Gateways müssen Sie es mithilfe des Ceph-Orchestrators neu in Containern bereitstellen. Wenn Sie über mehrere iSCSI Gateways verfügen, müssen Sie diese nacheinander neu bereitstellen, um die Ausfallzeit des Service zu reduzieren.

  1. Stoppen und deaktivieren Sie die vorhandenen iSCSI-Daemons auf jedem iSCSI Gateway-Knoten:

    tux > sudo systemctl stop rbd-target-gw
    tux > sudo systemctl disable rbd-target-gw
    tux > sudo systemctl stop rbd-target-api
    tux > sudo systemctl disable rbd-target-api
  2. Erstellen Sie eine Servicespezifikation für das iSCSI Gateway, wie in Abschnitt 5.4.3.5, „Bereitstellen von iSCSI-Gateways“ beschrieben. Dazu benötigen Sie die Einstellungen pool, trusted_ip_list und api_* aus der bestehenden Datei /etc/ceph/iscsi-gateway.cfg. Wenn Sie SSL-Unterstützung aktiviert haben (api_secure = true), benötigen Sie auch das SSL-Zertifikat (/etc/ceph/iscsi-gateway.crt) und den Schlüssel (/etc/ceph/iscsi-gateway.key).

    Beispiel: Wenn /etc/ceph/iscsi-gateway.cfg Folgendes enthält:

    [config]
    cluster_client_name = client.igw.ses-min5
    pool = iscsi-images
    trusted_ip_list = 10.20.179.203,10.20.179.201,10.20.179.205,10.20.179.202
    api_port = 5000
    api_user = admin
    api_password = admin
    api_secure = true

    Dann müssen Sie die folgende Servicespezifikationsdatei iscsi.yml erstellen:

    service_type: iscsi
    service_id: igw
    placement:
      hosts:
      - ses-min5
    spec:
      pool: iscsi-images
      trusted_ip_list: "10.20.179.203,10.20.179.201,10.20.179.205,10.20.179.202"
      api_port: 5000
      api_user: admin
      api_password: admin
      api_secure: true
      ssl_cert: |
        -----BEGIN CERTIFICATE-----
        MIIDtTCCAp2gAwIBAgIYMC4xNzc1NDQxNjEzMzc2MjMyXzxvQ7EcMA0GCSqGSIb3
        DQEBCwUAMG0xCzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARVdGFoMRcwFQYDVQQHDA5T
        [...]
        -----END CERTIFICATE-----
      ssl_key: |
        -----BEGIN PRIVATE KEY-----
        MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC5jdYbjtNTAKW4
        /CwQr/7wOiLGzVxChn3mmCIF3DwbL/qvTFTX2d8bDf6LjGwLYloXHscRfxszX/4h
        [...]
        -----END PRIVATE KEY-----
    Anmerkung
    Anmerkung

    Die Einstellungen pool, trusted_ip_list, api_port, api_user, api_password, api_secure sind identisch mit den Einstellungen aus Datei /etc/ceph/iscsi-gateway.cfg. Die Werte ssl_cert und ssl_key können aus dem bestehenden SSL-Zertifikat und den Schlüsseldateien kopiert und eingefügt werden. Vergewissern Sie sich, dass sie richtig eingerückt sind und das pipe Zeichen | am Ende der Zeilen ssl_cert: und ssl_key: erscheint (den Inhalt der Datei iscsi.yml finden Sie oben).

  3. Führen Sie das Kommando ceph orch apply -i iscsi.yml aus, um die Servicespezifikation anzuwenden und die iSCSI Gateway-Daemons zu starten.

  4. Entfernen Sie das bisherige ceph-iscsi -Paket aus allen bestehenden iSCSI Gateway-Knoten:

    cephuser@adm > zypper rm -u ceph-iscsi

7.8 Bereinigung nach dem Upgrade

Führen Sie nach dem Upgrade die folgenden Schritte zur Bereinigung aus:

  1. Überprüfen Sie die aktuelle Ceph-Version, um sich zu vergewissern, dass für den Cluster erfolgreich ein Upgrade durchgeführt wurde:

    cephuser@adm > ceph versions
  2. Stellen Sie sicher, dass keine alten OSDs im Cluster aufgenommen werden:

    cephuser@adm > ceph osd require-osd-release octopus
  3. Aktivieren Sie das Autoscaler-Modul:

    cephuser@adm > ceph mgr module enable pg_autoscaler
    Wichtig
    Wichtig

    Bei Pools in SUSE Enterprise Storage 6 war der Modus pg_autoscale_mode standardmäßig auf warn festgelegt. Dies führte zwar zu einer Warnmeldung bei einer suboptimalen Anzahl von PGs, doch eine automatische Skalierung fand nicht statt. In der Standardeinstellung von SUSE Enterprise Storage 7 ist die Option pg_autoscale_mode für neue Pools auf on festgelegt, und PGs werden tatsächlich automatisch skaliert. Bei dem Upgrade wird der pg_autoscale_mode von bestehenden Pools nicht automatisch geändert. Wenn Sie die Einstellung zu on ändern möchten, um die Vorteile des Autoscalers voll auszuschöpfen, lesen Sie die Anweisungen im Book “Betriebs- und Verwaltungshandbuch”, Chapter 17 “Verwaltung gespeicherter Daten”, Section 17.4.12 “Aktivieren der PG-Autoskalierung”.

    Weitere Informationen finden Sie in Book “Betriebs- und Verwaltungshandbuch”, Chapter 17 “Verwaltung gespeicherter Daten”, Section 17.4.12 “Aktivieren der PG-Autoskalierung”.

  4. Verhindern Sie Clients aus Versionen vor Luminous:

    cephuser@adm > ceph osd set-require-min-compat-client luminous
  5. Aktivieren Sie das Ausgleichsprogramm-Modul:

    cephuser@adm > ceph balancer mode upmap
    cephuser@adm > ceph balancer on

    Weitere Informationen finden Sie im Book “Betriebs- und Verwaltungshandbuch”, Chapter 29 “Ceph-Manager-Module”, Section 29.1 “Ausgleichsprogramm”.

  6. Aktivieren Sie optional das Telemetriemodul:

    cephuser@adm > ceph mgr module enable telemetry
    cephuser@adm > ceph telemetry on

    Weitere Informationen finden Sie im Book “Betriebs- und Verwaltungshandbuch”, Chapter 29 “Ceph-Manager-Module”, Section 29.2 “Aktivieren des Telemetriemoduls”.

A Ceph-Wartungsaktualisierungen auf der Grundlage von vorgeschalteten „Octopus“-Unterversionen

Mehrere wesentliche Pakete in SUSE Enterprise Storage 7 beruhen auf der Octopus-Versionsserie von Ceph. Wenn das Ceph-Projekt (https://github.com/ceph/ceph) neue Unterversionen in der Octopus-Serie veröffentlicht, wird SUSE Enterprise Storage 7 aktualisiert, damit das Produkt von den aktuellen vorgeschalteten Bugfixes und Funktions-Backports profitiert.

In diesem Kapitel erhalten Sie einen Überblick über wichtige Änderungen in den einzelnen vorgeschalteten Unterversionen, die bereits in das Produkt aufgenommen wurden oder künftig aufgenommen werden.

Octopus-Unterversion 15.2.5

Die Octopus-Unterversion 15.2.5 brachte die folgenden Korrekturen und weitere Änderungen:

  • CephFS: Die Richtlinien für die automatische statische Teilbaumpartitionierung können jetzt unter Verwendung der neuen erweiterten Attribute für verteiltes und zufälliges kurzlebiges Anheften von Verzeichnissen konfiguriert werden. Weitere Informationen finden Sie in der folgenden Dokumentation: https://docs.ceph.com/docs/master/cephfs/multimds/

  • Für Monitore ist nun die Konfigurationsoption mon_osd_warn_num_repaired verfügbar, die standardmäßig auf 10 festgelegt ist. Wenn ein OSD mehr als diese Anzahl von E/A-Fehlern in den gespeicherten Daten repariert hat, wird die Zustandswarnung OSD_TOO_MANY_REPAIRS generiert.

  • Jetzt werden geplante Scrubs vom Typ „deaktiviert“ abgebrochen, wenn global oder pro Pool die Flags no scrub und/oder no deep-scrub gesetzt sind. Alle vom Benutzer initiierten Scrubs werden NICHT unterbrochen.

  • Ein Problem wurde behoben, bei dem OSD-Zuordnungen in einem fehlerfreien Cluster nicht optimiert wurden.

Octopus-Unterversion 15.2.4

Die Octopus-Unterversion 15.2.4 brachte die folgenden Korrekturen und weitere Änderungen:

  • CVE-2020-10753: rgw: sanitize newlines in s3 CORSConfiguration’s ExposeHeader

  • Object Gateway: Die Unterkommandos radosgw-admin, die sich auf bezugslose Einheiten beziehen (radosgw-admin orphans find, radosgw-admin orphans finish und radosgw-admin orphans list-jobs), wurden als veraltet entfernt. Sie wurden nicht aktiv gewartet, und da sie Zwischenergebnisse auf dem Cluster speichern, könnten sie potenziell einen fast vollen Cluster füllen. Sie wurden durch das Werkzeug rgw-orphan-list ersetzt, das derzeit noch als experimentell betrachtet wird.

  • RBD: Der Name des RBD-Pool-Objekts, das zum Speichern des Zeitplans zum Bereinigen des RBD-Papierkorbs verwendet wird, wurde von rbd_trash_trash_purge_schedule zu rbd_trash_purge_schedule geändert. Benutzer, die bereits mit der Funktion des Zeitplans zum Bereinigen des RBD-Papierkorbs begonnen und Zeitpläne pro Pool oder Namespace konfiguriert haben, sollten vor dem Upgrade das Objekt rbd_trash_trash_purge_schedule nach rbd_trash_purge_schedule kopieren und rbd_trash_purge_schedule mit den folgenden Kommandos in jedem RBD-Pool und -Namespace entfernen, in denen zuvor ein Zeitplan zur Bereinigung des Papierkorbs konfiguriert war:

    rados -p pool-name [-N namespace] cp rbd_trash_trash_purge_schedule rbd_trash_purge_schedule
    rados -p pool-name [-N namespace] rm rbd_trash_trash_purge_schedule

    Alternativ können Sie den Zeitplan nach der Aktualisierung auf eine andere Ihnen genehme Weise wiederherstellen.

Octopus-Unterversion 15.2.3

  • Die Octopus-Unterversion 15.2.3 war eine Hot Fix-Version zur Behebung eines Problems, bei dem das WAL beschädigt wurde, wenn bluefs_preextend_wal_files und bluefs_buffered_io gleichzeitig aktiviert waren. Der Fix in 15.2.3 ist nur eine vorübergehende Maßnahme (Änderung des Standardwertes von bluefs_preextend_wal_files zu false). Die dauerhafte Lösung besteht darin, die Option bluefs_preextend_wal_files komplett zu entfernen. Diese Lösung wird wahrscheinlich in der Zwischenversion 15.2.6 erscheinen.

Octopus-Unterversion 15.2.2

Mit der Octopus-Unterversion 15.2.2 wurde eine Sicherheitslücke gepatcht:

  • CVE-2020-10736: Autorisierungsumgehung in MONs und MGRs behoben

Octopus-Unterversion 15.2.1

In Octopus-Unterversion 15.2.1 wurde ein Problem behoben, bei dem ein schnelles Upgrade von Luminous (SES5.5) zu Nautilus (SES6) zu Octopus (SES7) zum Absturz von OSDs führte. Darüber hinaus wurden zwei Sicherheitslücken gepatcht, die in der ursprünglichen Octopus-Version (15.2.0) vorhanden waren:

  • CVE-2020-1759: Nonce-Wiederverwendung im sicheren Modus von msgr V2 behoben

  • CVE-2020-1760: XSS aufgrund von RGW GetObject-Header-Splitting behoben

B Aktualisierungen für die Dokumentation

In diesem Kapitel werden inhaltliche Änderungen für dieses Dokument aufgeführt, die für die aktuelle SUSE Enterprise Storage-Version gelten.

  • Das Ceph-Dashboard-Kapitel (Book “Betriebs- und Verwaltungshandbuch”) wurde in der Buchhierarchie um eine Ebene nach oben verschoben, so dass seine detaillierten Themen direkt im Inhaltsverzeichnis durchsucht werden können.

  • Die Struktur des Book “Betriebs- und Verwaltungshandbuch” wurde aktualisiert, um sie an die aktuellen Handbücher anzupassen. Einige Kapitel wurden in andere Handbücher verschoben (jsc#SES-1397).

Glossar

Allgemein

Admin-Knoten

Der Host, von dem aus Sie die Ceph-bezogenen Befehle zur Verwaltung von Cluster-Hosts ausführen.

Alertmanager

Einzelne Binärdatei, die die vom Prometheus-Server gesendeten Warnmeldungen verarbeitet und die Endbenutzer benachrichtigt.

Archiv-Synchronisierungsmodul

Modul, mit dem eine Object-Gateway-Zone erstellt werden kann, in der der Verlauf der S3-Objektversionen abgelegt wird.

Bucket

Punkt, der andere Knoten in eine Hierarchie physischer Standorte aggregiert.

Ceph Dashboard

Eine integrierte webbasierte Verwaltungs- und Überwachungsanwendung von Ceph, mit der verschiedene Aspekte und Objekte des Clusters verwaltet werden. Das Dashboard wird als Ceph-Manager-Modul implementiert.

Ceph Manager

Ceph Manager oder MGR ist die Ceph-Manager-Software, die den gesamten Status des ganzen Clusters an einem Ort sammelt.

Ceph Monitor

Ceph Monitor oder MON ist die Ceph-Monitorsoftware.

Ceph Object Storage

Das Objektspeicher-„Produkt“, der Service oder die Fähigkeiten, die aus einem Ceph Storage Cluster und einem Ceph Object Gateway bestehen.

Ceph Storage Cluster

Ein zentraler Satz von Speichersoftwareprogrammen, die die Daten des Benutzers speichern. Ein derartiger Satz besteht aus Ceph Monitors und OSDs.

Ceph-Client

Die Sammlung von Ceph-Komponenten, die auf einen Ceph Storage Cluster zugreifen können. Dazu gehören das Object Gateway, das Ceph-Blockgerät, das CephFS und die entsprechenden Bibliotheken, Kernel-Module und FUSE-Clients.

Ceph-OSD-Daemon

Der ceph-osd-Daemon ist als Ceph-Komponente dafür zuständig, Objekte in einem lokalen Dateisystem zu speichern und den Zugriff auf diese Objekte über das Netzwerk bereitzustellen.

ceph-salt

Stellt Werkzeuge für die Bereitstellung von Ceph-Clustern bereit, die von cephadm mit Salt verwaltet werden.

cephadm

Mit cephadm wird ein Ceph-Cluster bereitgestellt und verwaltet. Dazu wird vom Manager-Daemon über SSH eine Verbindung zu den Hosts hergestellt, um Ceph-Daemon-Container hinzuzufügen, zu entfernen oder zu aktualisieren.

CephFS

Das Ceph-Dateisystem.

CephX

Das Ceph-Authentifizierungsprotokoll. Cephx funktioniert wie Kerberos, hat aber keinen Single-Point-of-Failure.

CRUSH, CRUSH Map

Controlled Replication Under Scalable Hashing: Dieser Algorithmus berechnet Datenspeicherorte und bestimmt damit, wie Daten gespeichert und abgerufen werden. CRUSH benötigt eine Karte (Map) des Clusters zum pseudozufälligen Speichern und Abrufen von Daten in OSDs mit gleichmäßiger Datenverteilung im Cluster.

CRUSH-Regel

Die CRUSH-Datenplatzierungsregel, die für einen bestimmten Pool oder mehrere Pools gilt.

DriveGroups

DriveGroups sind eine Deklaration von einem oder mehreren OSD-Layouts, die auf physische Laufwerke abgebildet werden können. Ein OSD-Layout definiert, wie Ceph OSD-Speicher auf den Medien, die den angegebenen Kriterien entsprechen, physisch zuweist.

Grafana

Lösung für die Datenbankanalyse und -überwachung.

Knoten

Ein einzelner Rechner oder Server in einem Ceph-Cluster.

Mehrere Zonen
Metadata Server

Metadata Server oder MDS ist die Ceph-Metadatensoftware.

Object Gateway

Die S3/Swift-Gateway-Komponente für Ceph Object Store. Auch bekannt als RADOS Gateway (RGW).

OSD

Object Storage Device (Objektspeichergerät): Eine physische oder logische Speichereinheit.

OSD-Knoten

Ein Cluster-Knoten, der Daten speichert, Reproduktion, Wiederherstellung, Backfilling und Ausgleich der Daten verarbeitet und Überwachungsinformationen für Ceph-Monitore zur Verfügung stellt, indem er andere Ceph OSD-Daemons überprüft.

PG

Platzierungsgruppe: Teilbereich eines Pools zur Leistungsanpassung.

Pool

Logische Partitionen zum Speichern von Objekten wie Festplatten-Images.

Prometheus

Toolkit für die Systemüberwachung und die Ausgabe von Warnmeldungen.

RADOS-Blockgerät (RADOS Block Device, RBD)

Die Blockspeicherkomponente von Ceph. Auch als Ceph-Blockgerät bekannt.

Regelsatz

Regeln zur Festlegung der Datenplatzierung für einen Pool.

Reliable Autonomic Distributed Object Store (RADOS)

Ein zentraler Satz von Speichersoftwareprogrammen, die die Daten des Benutzers (MON+OSD) speichern.

Routing-Baum

Bezeichnung für ein Diagramm mit den verschiedenen Wegen, die ein Empfänger durchlaufen kann.

Samba

Windows-Integrationssoftware.

Samba Gateway

Das Samba Gateway verbindet sich mit dem Active Directory in der Windows-Domäne, um Benutzer zu authentifizieren und zu autorisieren.

Unterversion

Jede Ad-hoc-Version, die nur Fehler- oder Sicherheitsbehebungen enthält.

zonegroup