Optimierung der ODF-Leistung für Virtualisierungs-Workloads
Virtuelle Private Cloud 4.20 und später Ausschließlich Bare-Metal-Worker-Knoten
Sie können die Speicherleistung von „ OpenShift Data Foundation“ (ODF) für Virtualisierungs-Workloads verbessern, indem Sie das geeignete Leistungsprofil auswählen, die Ressourcenbeschränkungen für OSD-Pods anpassen und Massendatenoperationen konfigurieren. Diese Optionen gelten für „ Red Hat OpenShift on IBM Cloud “-Cluster mit manuell bereitgestellten „ OpenShift Virtualization“- und „ Red Hat OpenShift Virtualization Service“-Clustern.
Vorbereitende Schritte
- Sie benötigen Zugriff auf den Cluster über „
cluster-admin“. - Installieren oder aktualisieren Sie die CLI „ IBM Cloud “ und die CLI „
oc“. - ODF muss installiert und in einwandfreiem Zustand sein, bevor Sie die Ressourcenbeschränkungen anpassen oder Speicherpools konfigurieren. Informationen zur Überprüfung des ODF-Zustands finden Sie unter „ Überprüfen des Ceph-Cluster-Zustands “.
Auswahl eines ODF-Leistungsprofils
ODF bietet zwei Leistungsprofile, mit denen die CPU- und Speicherzuweisung für Speicherkomponenten gesteuert wird. Wählen Sie das Profil aus, das am besten zu Ihrer Arbeitsbelastung passt.
- Leistung
- Weist mehr CPU-Leistung und Arbeitsspeicher zu als das Profil „ Ausgewogen “. Verwenden Sie dieses Profil für „ VM “-Workloads, die einen hohen Durchsatz und eine geringe Latenz erfordern, wie beispielsweise Datenbanken oder Anwendungen mit hohem Datenverkehr.
- Ausgeglichen
- Benötigt mäßige CPU- und Speicherressourcen. Verwenden Sie dieses Profil für allgemeine Workloads, gemischte Umgebungen oder kostenoptimierte Bereitstellungen.
Wenn Sie ODF bereitstellen, wählen Sie im Feld „Ressourcenprofil“ unter „ Speicher “ die Option „Leistung“ aus. Bei Virtualisierungsdienst-Clustern ist standardmäßig die Option „Leistung“ ausgewählt.
Sie können das Profil über die Konsole oder die Befehlszeilenschnittstelle (CLI) festlegen.
- Konsole – Standard- Red Hat OpenShift on IBM Cloud-Cluster: Wählen Sie bei der Installation des ODF-Add-ons im Abschnitt „ Backing Storage “ die Option „Performance“ aus.
- Konsole – Virtualisierungsdienst-Cluster: Standardmäßig ist „Leistung“ ausgewählt. Um dies zu ändern, wählen Sie bei der Cluster-Erstellung im Abschnitt „Virtualisierungsintegrationen“ auf der Karte „ OpenShift-Datenbasis“ die Option „Bearbeiten“ aus.
Diese Option gilt nur für Standard- Red Hat OpenShift on IBM Cloud-Cluster. Bei Virtualisierungsdienst-Clustern legen Sie das Profil bei der Clustererstellung fest.
Fügen Sie in der Befehlszeile „ --param "resourceProfile=performance" “ ein, wenn Sie das Add-on aktivieren:
ibmcloud oc cluster addon enable openshift-data-foundation \
-c <cluster-name> \
--version <addon-version> \
--param "odfDeploy=true" \
--param "osdStorageClassName=localblock" \
--param "autoDiscoverDevices=true" \
--param "resourceProfile=performance" \
--param "setDefaultStorageClassForVirtualization=true"
Alle Parameter für ODF-Add-ons finden Sie unter „ OpenShift: Parameterreferenz “.
Konfigurieren der Ressourcenbeschränkungen für OSD-Pods
Object Storage Daemon-Pods (OSD) speichern Daten und sind an der Datenplatzierung und -replikation beteiligt. Bei Virtualisierungs-Workloads mit hohem I/O-Aufkommen können Sie die CPU- und Speichergrenzen für OSD-Pods erhöhen, um Engpässe zu verringern.
Aktuelle OSD-Ressourcenbeschränkungen prüfen
Bevor Sie die Ressourcenbeschränkungen ändern, überprüfen Sie die aktuellen CPU- und Speichereinstellungen Ihrer OSD-Pods. Notieren Sie sich die aktuellen Anfragen und Grenzwerte, damit Sie diese später mit der tatsächlichen Nutzung und den aktualisierten Werten vergleichen können.
oc get pods -n openshift-storage -l app=rook-ceph-osd \
-o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{range .spec.containers[*]} Container: {.name}{"\n"} Requests - CPU: {.resources.requests.cpu}, Memory: {.resources.requests.memory}{"\n"} Limits - CPU: {.resources.limits.cpu}, Memory: {.resources.limits.memory}{"\n"}{end}{"\n"}{end}'
Überprüfen Sie die Ausgabe, um die aktuellen CPU- und Speicheranforderungen sowie die Grenzwerte für jeden OSD-Container zu ermitteln. Vergleichen Sie diese Werte im nächsten Befehl mit den tatsächlichen Nutzungswerten. Wenn die CPU- oder Speicherauslastung regelmäßig an die konfigurierten Grenzwerte heranreicht, kann eine Anhebung dieser Grenzwerte dazu beitragen, Engpässe zu verringern.
Um den tatsächlichen Ressourcenverbrauch zu überprüfen, führen Sie den folgenden Befehl aus und vergleichen Sie die CPU- und Speicherauslastung mit den von Ihnen notierten Grenzwerten:
oc adm top pods -n openshift-storage -l app=rook-ceph-osd
Erhöhung der OSD-Ressourcengrenzen
Sollten die aktuellen Grenzwerte für Ihre „ VM “-Workload nicht ausreichen, passen Sie diese an, indem Sie die Ressource „ ocs-storagecluster “ bearbeiten.
Sie können auch die Grenzwerte für andere „ Rook “-Ceph-Pods, wie beispielsweise „ mon “, „ mgr “ und „ rgw “, in der Konfiguration unter „ ocs-storagecluster “ anpassen. Weitere Informationen
finden Sie unter Red Hat Lösung 6959127.
-
Öffnen Sie die Speichercluster-Ressource zur Bearbeitung.
oc edit storagecluster ocs-storagecluster -n openshift-storage -
Fügen Sie im entsprechenden Eintrag unter „
storageDeviceSets“ das Feld „resources“ hinzu oder aktualisieren Sie es. Das folgende Teilbeispiel legt eine Obergrenze von 4 CPUs und 24 Gi Arbeitsspeicher fest und fordert 2 CPUs und 24 Gi Arbeitsspeicher an:storageDeviceSets: - name: ocs-deviceset resources: limits: cpu: "4" memory: "24Gi" requests: cpu: "2" memory: "24Gi"Die CPU- und Speicheranforderungen dürfen die Grenzwerte nicht überschreiten.
-
Speichern Sie die Datei und verlassen Sie den Editor.
Nachdem Sie die Änderungen gespeichert haben, werden die OSD-Pods automatisch neu gestartet. Warten Sie, bis der schrittweise Neustart abgeschlossen ist, bevor Sie weitere Speicheroperationen durchführen.
Überprüfen Sie die aktualisierten Ressourcenbeschränkungen
Vergewissern Sie sich nach Abschluss des schrittweisen Neustarts, dass die aktualisierten Grenzwerte auf alle OSD-Pods angewendet wurden.
-
Überwachen Sie den schrittweisen Neustart, um sicherzustellen, dass alle OSD-Pods wieder in den Status „
Running“ zurückkehren. Der Neustart ist abgeschlossen, wenn bei allen OSD-Pods „Running“ angezeigt wird und bei keinem „Pending“ oder „Terminating“ zu sehen ist.oc get pods -n openshift-storage | grep osd | grep -v prepare | grep -v rotation -
Vergewissern Sie sich, dass die neuen Ressourcenwerte wirksam sind.
oc get pods -n openshift-storage -l app=rook-ceph-osd \ -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{range .spec.containers[*]} Container: {.name}{"\n"} Requests - CPU: {.resources.requests.cpu}, Memory: {.resources.requests.memory}{"\n"} Limits - CPU: {.resources.limits.cpu}, Memory: {.resources.limits.memory}{"\n"}{end}{"\n"}{end}'Stellen Sie sicher, dass die Werte für CPU und Arbeitsspeicher mit den von Ihnen konfigurierten Werten übereinstimmen.
Konfigurieren des Bulk-Flags für Operationen mit großen Datenmengen
Bei umfangreichen Datenoperationen wie Migrationen im Rahmen von „ VM “, Massenimporten oder der Datenarchivierung kann die Aktivierung des „Bulk“-Flags für einen Ceph-Blockpool die anfängliche Datenverteilung auf die OSDs verbessern und den Aufwand für das Rebalancing verringern.
Das „Bulk“-Flag wird üblicherweise für folgende Zwecke verwendet:
- VM Datenträgermigrationen und -importe mit Datenmengen im Umfang von mehreren TB.
- Sicherungs- und Wiederherstellungsvorgänge.
- Erstbefüllung mit Daten für neue Anwendungen.
- Datenarchivierungspools.
Um eine „ CephBlockPool “-Ressource mit aktiviertem Bulk-Flag zu konfigurieren, führen Sie die folgenden Schritte aus.
-
Erstellen oder aktualisieren Sie die Ressourcen-Definition „
CephBlockPool“ so, dass der Abschnitt „parameters“ den Eintrag „bulk: "true"“ enthält.apiVersion: ceph.rook.io/v1 kind: CephBlockPool metadata: name: <pool-name> namespace: openshift-storage spec: replicated: size: 3 parameters: bulk: "true" -
Wenden Sie die Konfigurationsdatei an.
oc apply -f <pool-config-file>.yamlNachdem Sie die Konfiguration übernommen haben, kann Ceph neue Daten von Anfang an gleichmäßiger über den Pool verteilen. Dieses Verhalten kann dazu führen, dass im Zuge der Befüllung des Pools weniger Neugewichtungen erforderlich sind.
Überprüfung des Zustands des Ceph-Clusters
Überwachen Sie Ihren Ceph-Cluster regelmäßig, um Leistungsprobleme zu erkennen und die Datenintegrität sicherzustellen. Führen Sie vor und nach Konfigurationsänderungen Zustandsprüfungen durch.
Führen Sie einen grundlegenden Gesundheitscheck durch
Führen Sie den folgenden Befehl aus, um eine allgemeine Übersicht über den Zustand von Ceph zu erhalten. Ein funktionierender Cluster gibt „ HEALTH_OK “ zurück.
oc rsh -n openshift-storage $(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name) ceph status
Um aktive Warnungen oder Fehler anzuzeigen, führen Sie den folgenden Befehl aus:
oc rsh -n openshift-storage $(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name) ceph health detail
Clusterzustände verstehen
Die Ausgabe von „ ceph status “ enthält den Status der Platzierungsgruppen (PG), der Aufschluss über den Zustand der Daten gibt.
- Aktiv/sauber
- Der ideale Zustand. Alle Platzierungsgruppen sind aktiv, alle Daten werden repliziert, und es werden keine Daten übertragen. Es ist keine Aktion erforderlich.
- Aktiv+Neuzuordnung, aktiv+Nachfüllung, aktiv+Wiederherstellung
- Die Daten werden neu verteilt. Diese Zustände treten nach einer Änderung der OSD-Ressourcen, einem Knotenaustausch oder einem Skalierungsvorgang normalerweise auf. Warten Sie, bis der Cluster wieder den Status „
active/clean“ erreicht hat, bevor Sie weitere Änderungen vornehmen.
Beispiel für eine korrekte Ausgabe:
HEALTH_OK
Beispielausgabe während der Neugewichtung:
HEALTH_WARN
Degraded data redundancy: 123/456 objects degraded (26.974%)
Recovery 50/456 objects degraded (10.965%)
Platzierungsgruppe und OSD-Status prüfen
Um einen detaillierteren Überblick über die Datenverteilung und den Zustand des OSD zu erhalten, führen Sie die folgenden Überprüfungen durch.
-
Überprüfen Sie den Status der Platzierungsgruppen, um Gruppen zu identifizieren, die sich nicht im Status „
active+clean“ befinden.oc rsh -n openshift-storage $(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name) ceph pg stat -
Überprüfen Sie den Status der einzelnen OSDs, um sicherzustellen, dass die OSDs unter
upundinzu finden sind.oc rsh -n openshift-storage $(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name) ceph osd status