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

  1. Apri la risorsa del cluster di archiviazione per modificarla.

    oc edit storagecluster ocs-storagecluster -n openshift-storage
    
  2. Nella voce corrispondente di storageDeviceSets, aggiungere o aggiornare il campo resources. 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.

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

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

  1. Creare o aggiornare la definizione della risorsa CephBlockPool in modo che la sezione parameters includa bulk: "true".

    apiVersion: ceph.rook.io/v1
    kind: CephBlockPool
    metadata:
      name: <pool-name>
      namespace: openshift-storage
    spec:
      replicated:
        size: 3
      parameters:
        bulk: "true"
    
  2. Applica il file di configurazione.

    oc apply -f <pool-config-file>.yaml
    

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

  1. 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
    
  2. Controllare lo stato di ciascun OSD per verificare che gli OSD siano up e in.

    oc rsh -n openshift-storage $(oc get pods -n openshift-storage -l app=rook-ceph-tools -o name) ceph osd status
    

Passi successivi