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.serviceroot@master #
salt \* saltutil.sync_all
7.2 Konfigurieren der Clustereigenschaften #
Konfigurieren Sie mit dem Kommando ceph-salt config
die grundlegenden Eigenschaften des Clusters.
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-salt
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 ceph-salt
ls-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]
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.
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.
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.
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]
ceph.conf
und den Admin-Schlüsselbund auf mehreren KnotenSie 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:
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 disableGeben 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.comAlternativ 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 konfiguriertceph-salt
den internen Zeitserver (der einer der Salt Minions sein sollte) so, dass er seine Zeit mit einem externen Zeitserver, zum Beispielpool.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.comroot@master #
ceph-salt config /time_server/external_servers add pool.ntp.orgDie 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 adminroot@master #
ceph-salt config /cephadm_bootstrap/dashboard/password set PWD
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 Sieceph-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) #
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.
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.
Vergewissern Sie sich, dass die Erweiterung Containers Module aktiviert ist:
>
SUSEConnect --list-extensions | grep -A2 "Containers Module" Containers Module 15 SP3 x86_64 (Activated)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.
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]
).
Gehen Sie folgendermaßen bei einer unsicheren Registrierung (ohne SSL-Verschlüsselung) vor:
Konfigurieren Sie
ceph-salt
für die unsichere Registrierung:cephuser@adm >
ceph-salt config containers/registries_conf enablecephuser@adm >
ceph-salt config containers/registries_conf/registries \ add prefix=REG_HOST_FQDN
insecure=true \ location=REG_HOST_PORT
:5000Erstellen Sie zunächst das benötigte Verzeichnis für die unsichere Registrierung (beispielsweise
/var/lib/registry
) und starten Sie die Registrierung mit dem Befehlpodman
:#
mkdir -p /var/lib/registry#
podman run --privileged -d --name registry \ -pREG_HOST_PORT
:5000 -v /var/lib/registry:/var/lib/registry \ --restart=always registry:2Zum 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
Führen Sie folgende Schritte aus, um eine sichere Registrierung zu starten:
Erstellen Sie die benötigten Verzeichnisse:
#
mkdir -p /var/lib/registry/{auth,certs}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.crtAnmerkungLegen Sie als Wert für
CN=[value]
den vollqualifizierten Domänennamen des Hosts ([REG_HOST_FQDN
]) fest.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"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
Starten Sie die sichere Registrierung. Verwenden Sie das Flag
REGISTRY_STORAGE_DELETE_ENABLED=true
, damit Sie die Images anschließend mit dem Befehlskopeo 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:2Testen Sie den sicheren Zugriff auf die Registrierung:
>
curl https://REG_HOST_FQDN
:REG_HOST_PORT
/v2/_catalog \ -uREG_USERNAME
:REG_PASSWORD
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 Kommandoskopeo 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/
Konfigurieren Sie die URL der lokalen Registrierung:
cephuser@adm >
ceph-salt config /containers/registry_auth/registry set REG_HOST_URLKonfigurieren 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_USERNAMEcephuser@adm >
ceph-salt config /containers/registry_auth/password set REG_PASSWORD
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 #
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.
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:
Kopieren Sie die Konfigurationsdatei für Container:
>
sudo
cp /usr/share/containers/containers.conf /etc/containers/containers.confBearbeiten 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).
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"
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 secureroot@master #
ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_service_mode secureroot@master #
ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_client_mode secure
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 globalroot@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]
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
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
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
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.
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)"
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