Ottimizzazione delle prestazioni ODF per i carichi di lavoro di virtualizzazione
Cloud privato virtuale 4.20 e in seguito Solo nodi di lavoro bare metal
È possibile migliorare le prestazioni di archiviazione di Data Foundation (ODF) di OpenShift per i carichi di lavoro di virtualizzazione selezionando il profilo di prestazioni appropriato, regolando i limiti delle risorse dei pod OSD e configurando le operazioni sui dati in blocco. Queste opzioni si applicano ai cluster di " Red Hat OpenShift on IBM Cloud " con cluster di " OpenShift Virtualization" e " Red Hat OpenShift Virtualization Service" distribuiti manualmente.
Prima di iniziare
- È necessario disporre di un accesso di tip
cluster-admine al cluster. - Installare o aggiornare la CLI di IBM Cloud e quella di
oc. - È necessario che ODF sia installato e funzioni correttamente prima di modificare i limiti delle risorse o configurare i pool di archiviazione. Per verificare lo stato di integrità dell'ODF, consultare la sezione " Verifica dello stato di integrità del cluster Ceph ".
Selezione di un profilo di prestazioni ODF
ODF offre due profili di prestazioni che regolano l'allocazione della CPU e della memoria per i componenti di archiviazione. Scegli il profilo più adatto al tuo carico di lavoro.
- Prestazioni
- Assegna più risorse di CPU e memoria rispetto al profilo “Bilanciato ”. Utilizza questo profilo per i carichi di lavo VM i che richiedono un throughput elevato e una bassa latenza, come i database o le applicazioni ad alto traffico.
- Bilanciato
- Richiede una quantità moderata di CPU e memoria. Utilizza questo profilo per carichi di lavoro generici, ambienti misti o implementazioni ottimizzate in termini di costi.
Quando si esegue il deployment di ODF, selezionare “Prestazioni ” nel campo “Profilo delle risorse ” nella sezione “Archiviazione di supporto ”. Nei cluster del servizio di virtualizzazione, l'opzione " Prestazioni " è selezionata per impostazione predefinita.
È possibile configurare il profilo dalla console o dalla CLI.
- Console - Cluster standard di tipo " Red Hat OpenShift on IBM Cloud ": quando si installa il componente aggiuntivo ODF, selezionare "Performance " nella sezione " Backing storage ".
- Console - Cluster dei servizi di virtualizzazione: l'opzione " Prestazioni " è selezionata per impostazione predefinita. Per modificarlo, selezionare "Modifica " nella scheda " OpenShift Data Foundation " nella sezione " Integrazioni di virtualizzazione " durante la creazione del cluster.
Questa opzione si applica solo ai cluster standard di Red Hat OpenShift on IBM Cloud. Per i cluster del servizio di virtualizzazione, il profilo va impostato durante la creazione del cluster.
Dalla CLI, includere --param "resourceProfile=performance" quando si abilita il componente aggiuntivo:
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"
Per tutti i parametri dei componenti aggiuntivi ODF, consultare la guida di riferimento ai parametri di Data Foundation all’indirizzo OpenShift.
Configurazione dei limiti delle risorse dei pod OSD
Object Storage I pod Daemon (OSD) memorizzano i dati e partecipano al posizionamento e alla replica dei dati. Per i carichi di lavoro di virtualizzazione con un elevato carico di I/O, è possibile aumentare i limiti di CPU e memoria sui pod OSD per contribuire a ridurre i colli di bottiglia.
Verifica i limiti attuali delle risorse OSD
Prima di modificare i limiti delle risorse, controlla le impostazioni attuali relative alla CPU e alla memoria dei tuoi pod OSD. Prendi nota delle richieste e dei limiti attuali, in modo da poterli confrontare in seguito con l'utilizzo effettivo e i valori aggiornati.
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}'
Esamina i risultati per identificare le richieste e i limiti attuali relativi alla CPU e alla memoria per ciascun contenitore OSD. Confronta questi valori con l'utilizzo effettivo nel comando seguente. Se l'utilizzo della CPU o della memoria si avvicina costantemente ai limiti configurati, aumentare tali limiti potrebbe contribuire a ridurre i colli di bottiglia.
Per verificare il consumo effettivo delle risorse, esegui il seguente comando e confronta l'utilizzo della CPU e della memoria con i limiti che hai annotato:
oc adm top pods -n openshift-storage -l app=rook-ceph-osd
Aumentare i limiti delle risorse OSD
Se i limiti di corrente non sono sufficienti per il tuo carico di lavoro VM, aggiornali modificando la risorsa ocs-storagecluster.
È inoltre possibile modificare i limiti per altri pod di Rook-Ceph, quali mon, mgr e rgw, nella configurazione di ocs-storagecluster. Per ulteriori dettagli, consultare la soluzione 6959127 su Red Hat.
-
Apri la risorsa del cluster di archiviazione per modificarla.
oc edit storagecluster ocs-storagecluster -n openshift-storage -
Nella voce corrispondente di
storageDeviceSets, aggiungere o aggiornare il camporesources. Il seguente esempio parziale imposta un limite di 4 CPU e 24 Gi di memoria, e una richiesta di 2 CPU e 24 Gi di memoria:storageDeviceSets: - name: ocs-deviceset resources: limits: cpu: "4" memory: "24Gi" requests: cpu: "2" memory: "24Gi"Le richieste relative alla CPU e alla memoria devono essere inferiori o uguali ai limiti.
-
Salva e chiudi l'editor.
Dopo aver salvato le modifiche, i pod OSD si riavviano automaticamente. Attendere il completamento del riavvio graduale prima di eseguire altre operazioni di archiviazione.
Verificare i limiti aggiornati delle risorse
Una volta completata la riavvio graduale, verificare che i limiti aggiornati siano stati applicati a tutti i pod OSD.
-
Monitorare il riavvio graduale per verificare che tutti i pod OSD tornino allo stato “
Running”. Il riavvio è completato quando tutti i pod OSD mostrano lo stato “Running” e nessuno di essi risulta “Pending” o “Terminating”.oc get pods -n openshift-storage | grep osd | grep -v prepare | grep -v rotation -
Verificare che i nuovi valori delle risorse siano stati applicati.
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}'Verifica che i valori relativi alla CPU e alla memoria corrispondano a quelli che hai configurato.
Configurazione del flag "bulk" per operazioni su grandi volumi di dati
Per operazioni su grandi volumi di dati, come le migrazioni di tipo “ VM ”, le importazioni in blocco o l’archiviazione dei dati, l’attivazione del flag “bulk” su un pool di blocchi Ceph può migliorare la distribuzione iniziale dei dati tra gli OSD e ridurre il sovraccarico dovuto al ribilanciamento.
Il flag "bulk" viene comunemente utilizzato per:
- VM migrazioni e importazioni di dischi che coinvolgono diversi TB di dati.
- Operazioni di backup e ripristino.
- Caricamento iniziale dei dati per le nuove applicazioni.
- Pool di archiviazione dei dati.
Per configurare una risorsa CephBlockPool con il flag "bulk" abilitato, seguire la procedura riportata di seguito.
-
Creare o aggiornare la definizione della risorsa
CephBlockPoolin modo che la sezioneparametersincludabulk: "true".apiVersion: ceph.rook.io/v1 kind: CephBlockPool metadata: name: <pool-name> namespace: openshift-storage spec: replicated: size: 3 parameters: bulk: "true" -
Applica il file di configurazione.
oc apply -f <pool-config-file>.yamlDopo aver applicato la configurazione, Ceph sarà in grado di distribuire i nuovi dati in modo più uniforme all'interno del pool sin dall'inizio. Questo comportamento può ridurre la necessità di ribilanciamento man mano che il pool si riempie.
Verifica dello stato di salute del cluster Ceph
Monitorate regolarmente il vostro cluster Ceph per individuare eventuali problemi di prestazioni e garantire l'integrità dei dati. Esegui i controlli di integrità prima e dopo aver apportato modifiche alla configurazione.
Eseguire un controllo di base dello stato di salute
Esegui il seguente comando per ottenere un riepilogo generale dello stato di Ceph. Un cluster integro restituisce il valore " HEALTH_OK".
oc rsh -n openshift-storage $(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name) ceph status
Per visualizzare gli avvisi o gli errori attivi, eseguire il seguente comando:
oc rsh -n openshift-storage $(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name) ceph health detail
Comprendere gli stati dei cluster
L'output di ceph status include gli stati dei gruppi di collocazione (PG) che indicano l'integrità dei dati.
- Attivo/pulito
- Lo stato ideale. Tutti i gruppi di collocazione sono attivi, tutti i dati sono replicati e non vi è alcun trasferimento di dati. Non è richiesta alcuna azione.
- Attivo+rimappato, attivo+riempimento, attivo+ripristino
- I dati sono in fase di ridistribuzione. Questi stati sono normali a seguito di una modifica delle risorse OSD, della sostituzione di un nodo o di un'operazione di ridimensionamento. Attendere che il cluster torni allo stato “
active/clean” prima di apportare ulteriori modifiche.
Esempio di output corretto:
HEALTH_OK
Esempio di output durante il ribilanciamento:
HEALTH_WARN
Degraded data redundancy: 123/456 objects degraded (26.974%)
Recovery 50/456 objects degraded (10.965%)
Verifica il gruppo di collocazione e lo stato dell'OSD
Per avere una visione più dettagliata della distribuzione dei dati e dello stato di salute dell'OSD, eseguire i seguenti controlli.
-
Verificare lo stato dei gruppi di collocazione per individuare quelli che non si trovano nello stato “
active+clean”.oc rsh -n openshift-storage $(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name) ceph pg stat -
Controllare lo stato di ciascun OSD per verificare che gli OSD siano
upein.oc rsh -n openshift-storage $(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name) ceph osd status