Condividi tramite


Procedure consigliate per le distribuzioni di macchine virtuali in OpenShift Virtualization

Questo documento fornisce indicazioni per ottimizzare le prestazioni e l'efficienza dei costi durante la distribuzione di macchine virtuali con OpenShift Virtualization in Azure Red Hat OpenShift. Questa guida affronta anche eventuali problemi relativi alle prestazioni dell'applicazione e fornisce passaggi attuabili per una distribuzione efficace.

Approccio all'ottimizzazione

Annotazioni

I carichi di lavoro dipendenti dalla GPU non sono attualmente supportati in OpenShift Virtualization in Azure. Pianificare le distribuzioni di conseguenza.

L'ottimizzazione delle distribuzioni di macchine virtuali inizia con la comprensione dei carichi di lavoro dell'applicazione e l'allineamento delle scelte dell'infrastruttura di conseguenza. La distribuzione di OpenShift Virtualization nei computer Azure Boost, i nodi di lavoro del cluster, comporta un sovraccarico architetturale rispetto alle distribuzioni native di macchine virtuali o pod. La pianificazione della capacità e delle prestazioni deve tenere conto di questo sovraccarico.

Identificazione del carico di lavoro

Prima di effettuare il provisioning delle macchine virtuali, classificare i carichi di lavoro per determinare i requisiti di prestazioni e risorse. I tipi di carico di lavoro comuni includono:

  • Utilizzo generico: Server Web, server applicazioni, sistemi di gestione dei contenuti.
  • Banca dati: Database relazionali e NoSQL che richiedono operazioni di I/O al secondo e memoria coerenti.
  • Analisi in tempo reale: Elaborazione dei dati a bassa latenza, dashboard operativi.
  • Intelligenza artificiale/Machine Learning: Carichi di lavoro a elevato utilizzo di calcolo che richiedono cpu/GPU e memoria elevate.
  • Streaming e messaggistica dei dati: Architetture a eventi con bassa latenza e alta velocità di trasferimento.
  • Elaborazione batch: Processi periodici o su richiesta che elaborano volumi di dati di grandi dimensioni.
  • HpC (High Performance Computing): Simulazioni scientifiche, modellazione finanziaria.
  • Edge e IoT: Aggregare ed elaborare i dati dai sensori distribuiti.
  • Elaborazione multimediale: Codifica/decodifica video, trasformazione dell'immagine, streaming.
  • Ambienti di sviluppo/test: Ambienti temporanei per lo sviluppo e il test.

Ogni tipo di carico di lavoro presenta caratteristiche univoci che influiscono sulle strategie di dimensionamento, configurazione di archiviazione e ottimizzazione delle prestazioni delle macchine virtuali.

Ridimensionamento corretto dei carichi di lavoro dell'applicazione

Considerazioni chiave per il ridimensionamento corretto

  • Requisito minimo core: OpenShift Virtualization richiede almeno otto (8) macchine virtuali di Azure core per i nodi di lavoro OpenShift.
  • Overhead dell'architettura: Le prestazioni possono variare a seconda delle decisioni relative all'architettura prese durante la configurazione dell'ambiente, inclusi i tipi di istanza, l'archiviazione e le caratteristiche di rete.
  • Scaling out: Per i carichi di lavoro impegnativi, aumentare il numero di nodi nel cluster Azure Red Hat OpenShift può aiutare a superare il conflitto delle risorse e a mantenere la velocità effettiva.
  • Eseguire il benchmark dei carichi di lavoro: Evitare di basarsi esclusivamente sui riferimenti di ridimensionamento locali; eseguire il benchmark dei propri carichi di lavoro per informare il ridimensionamento corretto.
  • Fattori di costo: Prendere in considerazione i costi di calcolo di Azure, le licenze OpenShift, le licenze delle macchine virtuali e i requisiti di scalabilità.

Il ridimensionamento corretto garantisce che le macchine virtuali siano dotate di risorse adeguate per soddisfare gli obiettivi di prestazioni senza un sovra-dimensionamento. Questo processo è fondamentale negli ambienti cloud, in cui l'efficienza delle risorse influisce direttamente sui costi e sulle prestazioni.

Passaggi per adattare le dimensioni dei carichi di lavoro

  1. Definire le metriche di salute

    • Utilizzo CPU: obiettivo di un utilizzo medio del 60-70%.
    • Utilizzo della memoria: monitorare l'utilizzo dello scambio, la saturazione della memoria e gli errori di pagina.
    • I/O Strain: misurare la latenza del disco, la velocità effettiva e la profondità della coda.
  2. Configurare il monitoraggio

    • Usare Prometheus e Grafana per la raccolta e la visualizzazione delle metriche in tempo reale.
    • Abilitare le metriche KubeVirt per informazioni dettagliate a livello di macchina virtuale.
    • Eseguire l'integrazione con Monitoraggio di Azure, tramite Azure Arc, per correlare le metriche a livello di infrastruttura con le prestazioni dell'applicazione.
  3. Analizzare i dati cronologici

    • Esaminare le tendenze delle prestazioni nel tempo.
    • Identificare i periodi di utilizzo massimi e gli eventi di saturazione delle risorse.
    • Usare le linee di base cronologiche per guidare le future decisioni di scalabilità automatica.
  4. Modificare le specifiche delle macchine virtuali

    • Scegliere le dimensioni appropriate delle macchine virtuali dalla serie Dsv5 o Dsv6 in base alle metriche osservate.
    • Prendere in considerazione le esigenze di CPU, memoria, IOPS del disco e throughput della rete.
    • Evitare il provisioning eccessivo allineando le risorse ai modelli di utilizzo effettivi.
    • Esaminare le linee guida di Red Hat sul ridimensionamento corretto - Annuncio del ridimensionamento corretto per OpenShift Virtualization | Red Hat Developer.
  5. Testare e convalidare

    • Eseguire test di carico usando strumenti come Apache JMeter, Locust o stress-ng.
    • Valutare in base alle metriche di salute e agli obiettivi di prestazione definiti.
    • Scorrere le modifiche alla configurazione e ripetere il test per confermare i miglioramenti.

Ottimizzazione del tuo ambiente

L'ottimizzazione dell'ambiente di virtualizzazione OpenShift è essenziale per ottenere prestazioni ottimali, soprattutto per carichi di lavoro impegnativi. Le procedure consigliate seguenti derivano da un'ampia esperienza di benchmarking e reale nella serie di macchine virtuali Azure Boost (Dsv5/Dsv6).

Strategie di ottimizzazione delle prestazioni

  • Scalare in orizzontale o in verticale per carichi di lavoro impegnativi: Aggiungere altri nodi o ridimensionare i nodi nel cluster Azure Red Hat OpenShift per applicazioni ad alta concorrenza o intensive dal punto di vista delle risorse.
  • Evitare limiti rigorosi per le risorse: Impostare solo la memoria guest per le macchine virtuali; evitare limiti rigorosi delle risorse, a meno che non sia necessario per la governance.
  • Ottimizzare le configurazioni di archiviazione e di rete: Selezionare soluzioni di archiviazione e livelli di prestazioni che soddisfano le esigenze del carico di lavoro. Per i carichi di lavoro a elevato utilizzo di rete, ottimizzare impostazioni come NAPI e multiqueue e monitorare velocità effettiva e latenza.
  • Monitorare e eseguire regolarmente il benchmark: Usare Prometheus, Grafana e Monitoraggio di Azure per tenere traccia delle metriche chiave. Eseguire il benchmark dei propri carichi di lavoro per convalidare le prestazioni e guidare un'ulteriore ottimizzazione.
  • Prevedere un sovraccarico dell'architettura: Pianificare la capacità e impostare le aspettative di conseguenza, soprattutto per i carichi di lavoro con richieste di I/O o di rete elevate.

Ottimizzazione dell'overcommit della macchina virtuale

L'operatore OpenShift Virtualization consente di regolare i rapporti di overcommit della CPU e della memoria, consentendo di allocare più risorse virtuali rispetto a quelle fisicamente disponibili. Questa modifica può migliorare la densità e l'utilizzo delle risorse, ma potrebbe aumentare la contesa e influire sulle prestazioni.

Procedure consigliate per l'ottimizzazione dell'overcommit:

  • Utilizzare una configurazione conservativa di overcommit per i carichi di lavoro di produzione.
  • Prendere in considerazione una sovra-allocazione maggiore per gli ambienti di sviluppo/test.
  • Monitorare l'utilizzo delle risorse e regolare i rapporti in base alle esigenze.

Per altre informazioni, vedere Configurazione di una maggiore densità del carico di lavoro delle macchine virtuali

Procedure consigliate basate sul benchmarking

  • Carichi di lavoro del database: Evitare di impostare sia le richieste di risorse che i limiti per le macchine virtuali. Monitorare attentamente le prestazioni quando si usano risorse di archiviazione veloci e concorrenza elevata. Aumentare il numero di nodi del cluster per distribuzioni di database di grandi dimensioni.
  • Carichi di lavoro di rete: Ottimizzare le impostazioni di rete per una velocità effettiva ottimale. Effettua lo scaling in base alle necessità per raggiungere la velocità di rete desiderata.

Ottimizzazione della soluzione di archiviazione

  • OpenShift Data Foundation (ODF): Usare l'archiviazione supportata da SSD per l'accesso a bassa latenza. Configurare i criteri di codifica per la replica e la cancellazione in base alle esigenze del carico di lavoro. Per evitare la concorrenza per le risorse di calcolo dell'applicazione, è consigliabile creare un pool di lavoro separato per ODF con dimensioni di macchine virtuali di Azure più piccole, Ds16v5 è un buon punto di partenza e usaretaints/tolerations per garantire che ODF sia l'unico carico di lavoro pianificato. Monitorare le prestazioni di archiviazione e regolare i fattori di replica in base alle esigenze.
  • Azure NetApp Files (ANF): Scegliere i livelli di prestazioni in base ai requisiti di IOPS e velocità effettiva. Assicurarsi che le opzioni di montaggio e la configurazione di rete siano appropriate per ottenere prestazioni ottimali. Utilizzare gli snapshot dei volumi e i backup per supportare le strategie di protezione e recupero dei dati.

OpenShift Virtualization per Azure Red Hat OpenShift.