Crea servizi ad alta disponibilità utilizzando Persistent Disk a livello di regione

Disco permanente a livello di regione è un'opzione di archiviazione che consente di implementare servizi ad alta disponibilità in Compute Engine. Il disco permanente regionale replica in modo sincrono i dati tra due zone nella stessa regione e garantisce l'alta disponibilità per i dati del disco per un massimo di un errore a livello di zona.

Questo documento spiega come utilizzare Persistent Disk a livello di regione per creare servizi ad alta disponibilità.

Creazione di servizi ad alta disponibilità con Persistent Disk a livello di regione

Questa sezione spiega come creare servizi ad alta disponibilità con Persistent Disk a livello di regione.

Note sul layout

Prima di iniziare a progettare un servizio ad alta disponibilità, occorre comprendere le caratteristiche dell'applicazione, del file system e del sistema operativo. Queste caratteristiche costituiscono la base della progettazione e possono escludere vari approcci. Ad esempio, se un'applicazione non supporta la replica a livello di applicazione, alcune opzioni di progettazione corrispondenti non sono applicabili.

Analogamente, se l'applicazione, il file system o il sistema operativo non sono compatibili con gli arresti anomali, l'utilizzo di dischi permanenti a livello di regione o persino di snapshot di dischi permanenti a livello di zona potrebbe non essere un'opzione. La tolleranza agli arresti anomali è definita come la capacità di eseguire il ripristino in seguito a una terminazione brusca senza perdere o danneggiare i dati di cui era già stato eseguito il commit su un disco permanente prima dell'arresto anomalo.

Quando progetti per l'alta disponibilità, tieni presente quanto segue:

  • L'effetto dell'utilizzo di dischi permanenti a livello di regione o di altre soluzioni sulle prestazioni di scrittura di applicazioni e dischi.
  • Il Service Recovery Time Objective. Scopri la velocità con cui il tuo servizio deve recuperare da un'interruzione a livello di zona e i requisiti dello SLA (accordo sul livello del servizio).
  • Il costo per creare un'architettura di servizio resiliente e affidabile.

In termini di costo, le seguenti opzioni sono per la replica di applicazioni sincrone e asincrone:

  • Utilizza due istanze del database e della VM. In questo caso, il costo totale è determinato dalle seguenti voci:

    • Costi delle istanze VM
    • Costi dei dischi permanenti
    • Costi di mantenimento della replica delle applicazioni
  • Utilizza una singola VM con dischi permanenti a livello di regione. Per ottenere l'alta disponibilità con un disco permanente a livello di regione, utilizza la stessa istanza VM e gli stessi componenti del disco permanente, ma includi anche un disco permanente a livello di regione. I dischi permanenti a livello di regione costano il doppio del costo per byte rispetto ai dischi permanenti a livello di zona perché sono replicati in due zone.

    Tuttavia, l'utilizzo di dischi permanenti a livello di regione potrebbe ridurre i costi di manutenzione perché i dati vengono replicati automaticamente in due repliche senza il requisito di mantenere la replica dell'applicazione.

  • Non avviare la seconda VM finché non è richiesto il failover. Puoi ridurre ulteriormente i costi dell'host avviando la VM di backup solo on demand durante il failover anziché mantenerla in modalità standby a caldo.

Confronta costi, prestazioni e resilienza

La seguente tabella evidenzia i compromessi in termini di costi, prestazioni e resilienza per le diverse architetture di servizio.

Architettura
del servizio ad alta disponibilità
Snapshot
di disco permanente a livello di zona

sincrona
a livello di applicazione
Asincrona
a livello di applicazione
Soluzione ad alta disponibilità
utilizzando un disco permanente
a livello di regione
Protezione da errori di applicazioni, VM e zone1
Mitigazione del danneggiamento delle applicazioni (ad esempio: intolleranza agli arresti anomali dell'applicazione) 2 2
Costo $ $$

  • Due istanze del database o della VM in esecuzione, configurazione e manutenzione della replica delle applicazioni, networking tra zone.
$$

  • Due istanze del database o della VM in esecuzione, configurazione e manutenzione della replica delle applicazioni, networking tra zone.
1,5 $ x 1,5 $

  • I costi sono gli stessi della replica delle applicazioni se utilizzi un hot standby. Puoi ottenere un costo inferiore avviando una VM di backup on demand durante il failover. Non è previsto alcun costo per il networking tra zone tra repliche di disco permanente a livello di regione.
Prestazioni delle applicazioni

  • Nessun effetto


  • compromesso sulle prestazioni delle applicazioni con la replica sincrona


  • Nessun effetto


  • Nessun effetto per la maggior parte delle applicazioni
Adatto per applicazioni con requisiti RPO ridotti (tolleranza molto bassa per la perdita di dati)

  • Perdita di dati in base a quando è stato acquisito lo snapshot


  • Nessuna perdita di dati3


  • Perdita di dati perché la replica è asincrona


  • Nessuna perdita di dati
Tempo di ripristino dello spazio di archiviazione in caso di emergenza4
  • O(minuti)
  • O(secondi)
  • O(secondi)
  • O(secondi): per forzare il collegamento del disco a un'istanza VM in standby

1 L'utilizzo di dischi permanenti o snapshot a livello di regione non è sufficiente per proteggere e mitigare da errori e danneggiamenti. L'applicazione, il file system ed eventualmente altri componenti software devono essere coerenti o utilizzare una sorta di quiescing.

2 La replica di alcune applicazioni riduce alcune danneggiamenti delle applicazioni. Ad esempio, il danneggiamento dell'applicazione principale di MySQL non determina il danneggiamento anche delle relative istanze VM di replica. Per informazioni dettagliate, consulta la documentazione della tua applicazione.

3 Per perdita di dati si intende la perdita non recuperabile dei dati impegnati nell'archiviazione permanente. I dati di cui non è stato eseguito il commit andranno comunque persi.

4 Le prestazioni del failover non includono il controllo del file system, il recupero e il caricamento dell'applicazione dopo il failover.

crea servizi di database ad alta disponibilità utilizzando dischi permanenti a livello di regione

Questa sezione tratta concetti ad alto livello per la creazione di soluzioni ad alta disponibilità per servizi di database stateful (MySQL, Postgres e così via) utilizzando dischi permanenti a livello di regione e Compute Engine.

Se si verificano interruzioni di servizio ampie in Google Cloud, ad esempio se un'intera regione diventa non disponibile, la tua applicazione potrebbe non essere più disponibile. A seconda delle tue esigenze, prendi in considerazione le tecniche di replica tra regioni per una disponibilità ancora maggiore.

Le configurazioni ad alta disponibilità del database hanno in genere almeno due istanze VM. Preferibilmente, queste istanze VM fanno parte di uno o più gruppi di istanze gestite:

  • Un'istanza VM principale nella zona principale
  • Un'istanza VM in standby in una zona secondaria

Un'istanza VM primaria ha almeno due dischi permanenti: un disco di avvio e un disco permanente a livello di regione. Il disco permanente a livello di regione contiene i dati del database e tutti gli altri dati modificabili che devono essere conservati in un'altra zona in caso di interruzione.

Un'istanza VM in standby richiede un disco di avvio separato per il ripristino in seguito a interruzioni legate alla configurazione, che potrebbero derivare, ad esempio, da un upgrade del sistema operativo. Non puoi forzare il collegamento di un disco di avvio a un'altra VM durante un failover.

Le istanze VM principali e in standby sono configurate per utilizzare un bilanciatore del carico con il traffico indirizzato alla VM principale in base agli indicatori del controllo di integrità. Questa configurazione è anche nota come hot standby. Lo scenario di ripristino di emergenza per i dati descrive altre configurazioni di failover, che potrebbero essere più appropriate per il tuo scenario.

Challenge con replica dei database

La seguente tabella elenca alcune sfide comuni relative alla configurazione e alla gestione della replica sincrona o semi-sincrona delle applicazioni (come MySQL) e delle differenze rispetto alla replica a blocchi con dischi permanenti a livello di regione.

sfide Replica sincrona
o semisincrona dell'applicazione
Blocca la replica con
dischi permanenti a livello di regione
Mantenimento della replica stabile tra la replica principale e quella di failover. Potrebbero verificarsi una serie di problemi che potrebbero causare l'uscita dalla modalità ad alta disponibilità di un'istanza VM:
  1. Errori di configurazione dei parametri di replica, come mancata corrispondenza del certificato SSL o ACL mancante sul lato principale.
  2. Un carico elevato sull'istanza VM principale impedisce alla replica di failover non essere al passo.
  3. Bug che causano problemi di replica, ad esempio problemi dell'applicazione, configurazione errata del sistema operativo o errori relativi a Docker.
  4. Errori dell'infrastruttura come contesa della CPU, VM bloccata o interruzione di rete intermedia.
Gli errori di archiviazione sono gestiti dai dischi permanenti a livello di regione. Ciò avviene in modo trasparente per l'applicazione, tranne per una possibile fluttuazione delle prestazioni del disco.

Devono essere previsti controlli di integrità definiti dall'utente per rilevare eventuali problemi dell'applicazione o della VM e attivare il failover.
Il tempo di failover end-to-end è più lungo del previsto. Il tempo impiegato per l'operazione di failover non ha un limite superiore. L'attesa della riproduzione di tutte le transazioni (passaggio 2 precedente) potrebbe richiedere arbitrariamente un tempo prolungato, a seconda dello schema e del carico sul database. I dischi permanenti a livello di regione forniscono la replica sincrona, perciò il tempo di failover è vincolato dalla somma delle seguenti latenze:
  1. Creazione di una VM secondaria, a meno che non sia già disponibile un'istanza VM in standby a caldo.
  2. Forza il collegamento di un disco permanente a livello di regione.
  3. Inizializzazione dell'applicazione.
Cervello divisa Per evitare lo split-brain, entrambi gli approcci richiedono provisioning per garantire che ne sia presente un solo elemento principale alla volta.

Controlli di integrità

I controlli di integrità utilizzati dal bilanciatore del carico vengono implementati dall'agente per il controllo di integrità. L'agente per il controllo di integrità ha due scopi:

  1. L'agente per il controllo di integrità si trova all'interno delle VM primarie e secondarie per monitorare le istanze VM e comunicare con il bilanciatore del carico per indirizzare il traffico. Questa opzione funziona al meglio se configurata con gruppi di istanze.
  2. L'agente per il controllo di integrità si sincronizza con il piano di controllo a livello di regione specifico dell'applicazione e prende decisioni di failover in base al comportamento del piano di controllo. Il piano di controllo deve trovarsi in una zona diversa dall'istanza VM di cui sta monitorando l'integrità.

Lo stesso agente per il controllo di integrità deve essere a tolleranza di errore. Ad esempio, nota che, nell'immagine che segue, il piano di controllo è separato dall'istanza VM principale, che si trova nella zona us-central1-a, mentre la VM in standby si trova nella zona us-central1-f.

Ruolo dell'agente per il controllo di integrità nella VM.

Ruolo dell'agente per il controllo di integrità nelle istanze VM primarie e in standby.

Passaggi successivi