Zum Inhalt springenZur Seitennavigation springen: vorherige Seite [Zugriffstaste p]/nächste Seite [Zugriffstaste n]
documentation.suse.com / Dokumentation zu SUSE Enterprise Storage 7.1 / Implementierungsleitfaden / Bereitstellen des Ceph-Clusters / Bereitstellen des Bootstrap-Clusters mit ceph-salt
Gilt für SUSE Enterprise Storage 7.1

7 Bereitstellen des Bootstrap-Clusters mit ceph-salt

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.

7.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 auf dem Salt Master das Paket ceph-salt:

root@master # zypper install ceph-salt

Das obige Kommando installiert ceph-salt-formula als Abhängigkeit, die die Salt-Master-Konfiguration durch Einfügen zusätzlicher Dateien im Verzeichnis /etc/salt/master.d ändert. 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

7.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 Abschnitt 28.2, „Konfigurationsdatenbank“.

7.2.1 Verwenden der ceph-salt-Shell

Wenn Sie config ohne Pfad oder Unterbefehl ausführen, gelangen Sie in eine interaktive ceph-saltceph-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 ceph-saltls-Kommandos von 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

7.2.2 Hinzufügen von Salt Minions

Nehmen Sie alle oder eine Teilmenge der von uns in Kapitel 6, 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]

7.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 '*'

7.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.

7.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

7.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.

7.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]

7.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-SP3/html/SLES-all/cha-ntp.html#sec-ntp-yast.

7.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

7.2.10 Verwenden der Container-Registrierung

Der Ceph-Cluster benötigt Zugang zu einer Container-Registrierung, damit er containerisierte Ceph-Services herunterladen und bereitstellen kann. Es gibt zwei Möglichkeiten, auf die Registrierung zuzugreifen:

  • Wenn der Cluster auf die Standardregistrierung unter registry.suse.com zugreifen kann (direkt oder über einen Proxy), können Sie ceph-salt direkt auf diese URL verweisen, ohne eine lokale Registrierung zu erstellen. Setzen Sie den Vorgang fort, indem Sie die Schritte in Abschnitt 7.2.10.2, „Konfigurieren des Pfads zu den Container-Images“ ausführen.

  • Wenn Ihr Cluster nicht auf die Standardregistrierung zugreifen kann, z. B. bei einer Air-Gapped-Bereitstellung, müssen Sie eine lokale Container-Registrierung konfigurieren. Nachdem die lokale Registrierung erstellt und konfiguriert wurde, müssen Sie ceph-salt auf diese Registrierung verweisen.

7.2.10.1 Erstellen und Konfigurieren der lokalen Registrierung (optional)

Wichtig
Wichtig

Es gibt zahlreiche Methoden zur Erstellung einer lokalen Registrierung. Die Anweisungen in diesem Abschnitt sind Beispiele für die Erstellung sicherer und unsicherer Registrierungen. Allgemeine Informationen zur Ausführung einer Container-Image-Registrierung finden Sie unter https://documentation.suse.com/sles/15-SP3/single-html/SLES-container/#sec-docker-registry-installation.

Tipp
Tipp: Platzierung und Portnutzung

Stellen Sie die Registrierung auf einem Rechner bereit, auf den alle Knoten des Clusters zugreifen können. Es wird empfohlen, den Admin-Knoten zu verwenden. Standardmäßig überwacht die Registrierung Port 5000.

Verwenden Sie auf dem Registrierungsknoten folgendes Kommando, um sicherzustellen, dass der Port frei ist:

ss -tulpn | grep :5000

Wenn Port 5000 bereits von anderen Prozessen (z. B. iscsi-tcmu) überwacht wird, suchen Sie einen anderen freien Port, der Port 5000 im Registrierungscontainer zugeordnet werden kann.

Vorgehen 7.1: Erstellen der lokalen Registrierung
  1. Vergewissern Sie sich, dass die Erweiterung Containers Module aktiviert ist:

    > SUSEConnect --list-extensions | grep -A2 "Containers Module"
    Containers Module 15 SP3 x86_64 (Activated)
  2. Vergewissern Sie sich, dass die folgenden Pakete installiert sind: apache2-utils (für eine sichere Registrierung), cni, cni-plugins, podman, podman-cni-config und skopeo.

  3. Beschaffen Sie sich folgende Informationen:

    • Vollqualifizierter Domänenname des Registrierungshosts (REG_HOST_FQDN).

    • Nummer eines verfügbaren Ports, der dem Registrierungscontainer-Port 5000 (REG_HOST_PORT) zugeordnet wird.

    • Ob es sich um eine sichere oder unsichere Registrierung handelt (insecure=[true|false]).

  4. Gehen Sie folgendermaßen bei einer unsicheren Registrierung (ohne SSL-Verschlüsselung) vor:

    1. Konfigurieren Sie ceph-salt für die unsichere Registrierung:

      cephuser@adm > ceph-salt config containers/registries_conf enable
      cephuser@adm > ceph-salt config containers/registries_conf/registries \
       add prefix=REG_HOST_FQDN insecure=true \
       location=REG_HOST_PORT:5000
    2. Erstellen Sie zunächst das benötigte Verzeichnis für die unsichere Registrierung (beispielsweise /var/lib/registry) und starten Sie die Registrierung mit dem Befehl podman:

      # mkdir -p /var/lib/registry
      # podman run --privileged -d --name registry \
       -p REG_HOST_PORT:5000 -v /var/lib/registry:/var/lib/registry \
       --restart=always registry:2
    3. Zum Starten der Registrierung nach einem Reboot erstellen Sie eine systemd-Einheitendatei und aktivieren Sie diese:

      > sudo podman generate systemd --files --name registry
      > sudo mv container-registry.service /etc/systemd/system/
      > sudo systemctl enable container-registry.service
  5. Führen Sie folgende Schritte aus, um eine sichere Registrierung zu starten:

    1. Erstellen Sie die benötigten Verzeichnisse:

      # mkdir -p /var/lib/registry/{auth,certs}
    2. Generieren Sie ein SSL-Zertifikat:

      # openssl req -newkey rsa:4096 -nodes -sha256 \
       -keyout /var/lib/registry/certs/domain.key -x509 -days 365 \
       -out /var/lib/registry/certs/domain.crt
      Anmerkung
      Anmerkung

      Legen Sie als Wert für CN=[value] den vollqualifizierten Domänennamen des Hosts ([REG_HOST_FQDN]) fest.

    3. Kopieren Sie das Zertifikat auf alle Cluster-Knoten und aktualisieren Sie den Zertifikatcache:

      # salt-cp '*' /var/lib/registry/certs/domain.crt \
       /etc/pki/trust/anchors/
      # salt '*' cmd.shell "update-ca-certificates"
    4. Generieren Sie eine Kombination aus Benutzernamen und Passwort für die Authentifizierung bei der Registrierung:

      # htpasswd2 -bBc /var/lib/registry/auth/htpasswd \
       REG_USERNAME REG_PASSWORD
    5. Starten Sie die sichere Registrierung. Verwenden Sie das Flag REGISTRY_STORAGE_DELETE_ENABLED=true, damit Sie die Images anschließend mit dem Befehl skopeo delete löschen können.

      podman run --name myregistry -p REG_HOST_PORT:5000 \
       -v /var/lib/registry:/var/lib/registry \
       -v /var/lib/registry/auth:/auth:z \
       -e "REGISTRY_AUTH=htpasswd" \
       -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
       -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
       -v /var/lib/registry/certs:/certs:z \
       -e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt" \
       -e "REGISTRY_HTTP_TLS_KEY=/certs/domain.key" \
       -e REGISTRY_STORAGE_DELETE_ENABLED=true \
       -e REGISTRY_COMPATIBILITY_SCHEMA1_ENABLED=true -d registry:2
    6. Testen Sie den sicheren Zugriff auf die Registrierung:

      > curl https://REG_HOST_FQDN:REG_HOST_PORT/v2/_catalog \
       -u REG_USERNAME:REG_PASSWORD
  6. Sobald die lokale Registrierung erstellt ist, müssen Sie Container-Images aus der offiziellen SUSE-Registrierung unter registry.suse.com mit der lokalen Registrierung synchronisieren. Sie können das Kommando skopeo sync im Paket skopeo für diesen Zweck verwenden. Weitere Informationen finden Sie auf der Handbuchseite (man 1 skopeo-sync). Die folgenden Beispiele dienen zur Verdeutlichung:

    Beispiel 7.1: Anzeigen von Manifestdateien
    skopeo inspect docker://registry.suse.com/ses/7.1/ceph/ceph | jq .RepoTags
    skopeo inspect docker://registry.suse.com/ses/7.1/ceph/grafana | jq .RepoTags
    skopeo inspect docker://registry.suse.com/ses/7.1/ceph/prometheus-server:2.32.1 | jq .RepoTags
    skopeo inspect docker://registry.suse.com/ses/7.1/ceph/prometheus-node-exporter:1.1.2 | jq .RepoTags
    skopeo inspect docker://registry.suse.com/ses/7.1/ceph/prometheus-alertmanager:0.21.0 | jq .RepoTags
    Beispiel 7.2: Synchronisieren mit einem Verzeichnis

    Synchronisieren aller Ceph-Images:

    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/ceph /root/images/

    Synchronisieren nur der neuesten Images:

    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/ceph:latest /root/images/
    Beispiel 7.3: Synchronisieren von Grafana-Images:
    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/grafana /root/images/

    Synchronisieren nur der neuesten Grafana-Images:

    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/grafana:latest /root/images/
    Beispiel 7.4: Synchronisieren der neuesten Prometheus-Images
    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/prometheus-server:2.32.1 /root/images/
    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/prometheus-node-exporter:1.1.2 /root/images/
    skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/prometheus-alertmanager:0.21.0 /root/images/
Vorgehen 7.2: Konfigurieren der lokalen Registrierung und der Zugangsdaten
  1. Konfigurieren Sie die URL der lokalen Registrierung:

    cephuser@adm > ceph-salt config /containers/registry_auth/registry set REG_HOST_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 REG_USERNAME
    cephuser@adm > ceph-salt config /containers/registry_auth/password set REG_PASSWORD
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.

7.2.10.2 Konfigurieren des Pfads zu den Container-Images

Wichtig
Wichtig

In diesem Abschnitt wird beschrieben, wie Sie den Pfad zu den Container-Images des Bootstrap-Clusters konfigurieren können (Bereitstellung der ersten Kombination aus Ceph Monitor und Ceph Manager). Der Pfad gilt nicht für Container-Images zusätzlicher Services, z. B. des Überwachungs-Stacks.

Tipp
Tipp: Konfigurieren des HTTPS-Proxys

Wenn Sie einen Proxy für die Kommunikation mit dem Container-Registrierungsserver verwenden müssen, führen Sie die folgenden Konfigurationsschritte auf allen Cluster-Knoten aus:

  1. Kopieren Sie die Konfigurationsdatei für Container:

    > sudo cp /usr/share/containers/containers.conf /etc/containers/containers.conf
  2. Bearbeiten Sie die kopierte Datei, indem Sie die Einstellung http_proxy in den Abschnitt [engine] einfügen, beispielsweise:

    > cat /etc/containers/containers.conf
     [engine]
     http_proxy=proxy.example.com
     [...]

cephadm muss einen gültigen URI-Pfad zu Container-Images kennen. Überprüfen Sie die Standardeinstellung mit folgendem Kommando:

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

Wenn Sie keine alternative oder lokale Registrierung benötigen, geben Sie die standardmäßige SUSE-Container-Registrierung an:

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

Wenn Ihre Bereitstellung einen bestimmten Pfad erfordert, z. B. einen Pfad zu einer lokalen Registrierung, konfigurieren Sie ihn wie folgt:

root@master # ceph-salt config /cephadm_bootstrap/ceph_image_path set LOCAL_REGISTRY_PATH

7.2.11 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 secure 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

7.2.12 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

7.2.13 Ü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.1/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

7.2.14 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

7.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 7.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

7.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 Section 13.7, “Firewall settings for Ceph”.

7.5 Deaktivieren unsicherer Clients

Seit Pacific v15.2.11 wurde eine neue Zustandswarnung eingeführt, die Sie darüber informiert, dass unsichere Clients im Cluster aufgenommen werden können. Diese Warnung ist standardmäßig aktiviert. Das Ceph Dashboard zeigt den Cluster mit dem Status HEALTH_WARN an. Bei einer Überprüfung des Cluster-Status über die Kommandozeile werden folgende Informationen angezeigt:

cephuser@adm > ceph status
cluster:
  id:     3fe8b35a-689f-4970-819d-0e6b11f6707c
  health: HEALTH_WARN
  mons are allowing insecure global_id reclaim
[...]

Diese Warnung bedeutet, dass Ceph Monitors immer noch alten, ungepatchten Clients erlauben, sich mit dem Cluster zu verbinden. Dadurch wird sichergestellt, dass bestehende Clients während eines Cluster-Upgrades weiterhin eine Verbindung herstellen können. Sie werden jedoch gewarnt, dass ein Problem vorhanden ist, das behoben werden muss. Nach dem Upgrade des Clusters und aller Clients auf die neueste Version von Ceph verhindern Sie mit folgendem Kommando, dass sich ungepatchte Clients mit dem Cluster verbinden:

cephuser@adm > ceph config set mon auth_allow_insecure_global_id_reclaim false