È piuttosto comune utilizzare il cloud per archiviare i dati o come opzione di failover in caso di errore principale. Esistono diversi provider cloud che consentono di archiviare, gestire, recuperare e manipolare i dati tramite una piattaforma cloud; accessibile via internet. Ogni fornitore di servizi cloud ha le proprie offerte di prodotti e caratteristiche uniche, ognuna con diversi modelli di costo.
Microsoft Azure è uno di questi potrebbe provider. In questo blog, daremo un'occhiata alle funzionalità offerte da Microsoft Azure per l'archiviazione primaria, come sito di ripristino di emergenza, e vedremo in particolare come gestisce un ambiente di database PostgreSQL misto.
Distribuzione di un'istanza di database PostgreSQL su Microsoft Azure
Prima di eseguire questa attività, devi decidere come utilizzerai questa istanza e quale prodotto Azure è più adatto a te. Esistono due modi di base per distribuire un'istanza PostgreSQL su Microsoft Azure.
- Database di Azure per PostgreSQL :è un servizio gestito che puoi utilizzare per eseguire, gestire e ridimensionare database PostgreSQL a disponibilità elevata nel cloud. È disponibile in due opzioni di distribuzione:Server singolo e Hyperscale.
- Macchina virtuale :fornisce un'infrastruttura on-demand, su larga scala, sicura e virtualizzata. Supporta Ubuntu Server, RedHat Enterprise Linux, SUSE Linux Enterprise Server, CentOS, Debian e Windows Server e ti consente di sviluppare, testare, eseguire applicazioni ed estendere il tuo datacenter in pochi secondi.
Per questo blog daremo un'occhiata sia a come possiamo creare un database di Azure per PostgreSQL che a utilizzare una macchina virtuale Azure dal portale di Microsoft Azure.
Distribuzione del database di Azure per PostgreSQL
Se accedi al tuo portale di Azure -> Crea una risorsa -> Database -> Database di Azure per PostgreSQL, potrai scegliere tra server singolo o iperscalabilità. Per questo blog, utilizzeremo un server singolo, poiché l'opzione Hyperscale è in anteprima e non offre ancora uno SLA.
Qui devi aggiungere alcune informazioni sulla tua nuova istanza PostgreSQL; come abbonamento, nome del server, credenziali utente e posizione. Puoi anche scegliere quale versione di PostgreSQL utilizzare (sono attualmente disponibili le versioni 9.5, 9.6, 10 o 11) e l'hardware virtuale per eseguirlo (Compute + Storage).
Quando specifichi l'hardware, vedrai il prezzo stimato in reale -tempo. Questo è davvero utile per evitare una grande sorpresa il mese prossimo. Dopo questo passaggio, devi solo confermare la configurazione della risorsa e attendere un paio di minuti fino al completamento del processo di creazione di Azure.
Quando hai creato la nuova risorsa, puoi andare su Tutte le risorse per vedere le opzioni disponibili per le risorse.
Nelle opzioni delle risorse create, puoi andare su Replica per abilitarla e replica dal server master fino a un massimo di cinque repliche. Dovresti anche controllare la sezione Sicurezza della connessione per abilitare o disabilitare l'accesso esterno. Per conoscere le informazioni di accesso, devi visitare la sezione delle risorse di panoramica.
$ psql -h pg1blog.postgres.database.azure.com -U [email protected] postgres
Password for user [email protected]:
psql (11.5, server 11.4)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.
postgres=>
Failover nel database di Azure per PostgreSQL
Purtroppo, il failover automatico tra i server master e di replica non è disponibile. Se elimini l'istanza master, tuttavia, Azure eseguirà un processo di failover per promuovere la replica in modo automatico.
C'è un'opzione per eseguire questa attività di failover manualmente, che richiede di arrestare la replica e configurare il nuovo endpoint nell'applicazione in modo che punti al nuovo master. La replica sarà promossa e scollegata dal master. Non c'è un modo per ricollegare questa replica al tuo master.
Distribuzione di PostgreSQL nella macchina virtuale di Azure
Se vai al tuo portale di Azure -> Crea una risorsa -> Calcola -> Macchina virtuale, aprirai la sezione Crea una macchina virtuale in cui puoi specificare diverse configurazioni per la tua nuova macchina virtuale di Azure .
Nella scheda Base, è necessario specificare la sottoscrizione di Azure, la regione, la disponibilità opzioni, sistema operativo, dimensioni del server, credenziali di accesso (nome utente/password o chiave SSH) e regole del firewall in entrata.
Nella scheda del disco, devi specificare la memoria (tipo e dimensione) per la tua nuova macchina virtuale. Il tipo di disco può essere HDD standard, SSD standard o SSD Premium. L'ultimo è consigliato per carichi di lavoro con IOPS elevati.
Nella scheda networking, puoi specificare la rete virtuale, l'indirizzo IP pubblico e le porte in entrata consentite. Puoi anche aggiungere questa nuova macchina virtuale dietro una soluzione di bilanciamento del carico di Azure in uscita.
Nella scheda successiva, abbiamo alcune opzioni di gestione, come il monitoraggio e i backup .
E infine, nella scheda avanzata, possiamo aggiungere estensioni, cloud- init o gruppi host.
Dopo aver esaminato l'opzione precedente e averla confermata, la tua nuova macchina virtuale verrà creata e accessibile dal portale di Azure. Nella sezione Risorsa -> Panoramica, puoi vedere le informazioni di accesso alla macchina virtuale (indirizzo IP pubblico/privato).
Ora puoi accedervi tramite SSH e installare il database PostgreSQL utilizzando ClusterControl .
$ ssh 23.102.177.27
Last login: Mon Sep 23 21:33:27 2019
[[email protected] ~]$
Puoi controllare questo link per vedere i passaggi per eseguire la distribuzione di PostgreSQL con ClusterControl.
Failover PostgreSQL nella macchina virtuale di Azure
Il ripristino di emergenza è una funzionalità della macchina virtuale nella sezione Operazioni che consente di replicare l'ambiente in un'altra area di Azure. Per abilitarlo, devi scegliere la regione di destinazione. Nella scheda avanzata, puoi modificare i dettagli del target specifico; come la rete virtuale, le impostazioni di archiviazione e le impostazioni di replica.
Quando il ripristino di emergenza è abilitato, potrai controllare il stato della replica, testare il processo di failover o eseguire manualmente il failover su di esso.
L'abilitazione di questa opzione consente di avere un'opzione di failover in caso di errore. Questo, tuttavia, sarà un failover per l'intero ambiente e non solo per il servizio di database.
Un processo di failover PostgreSQL migliorato per Microsoft Azure
Poiché disponi dell'accesso SSH, puoi migliorare questo processo di failover importando la macchina virtuale (o persino distribuendo il database PostgreSQL) con ClusterControl.
Se stai gestendo i nodi del database con ClusterControl (e se l'opzione “Auto Recovery” è attiva) in caso di errore del master, ClusterControl promuoverà lo slave più avanzato (se non è nella blacklist ) per controllare e per informarti del problema. Inoltre, esegue automaticamente il failover del resto degli slave per replicare dal nuovo master.
Con ClusterControl puoi anche distribuire un ambiente misto con alcuni nodi nel cloud e altri nodi in locale. Puoi anche aggiungere sistemi di bilanciamento del carico alla tua topologia per migliorare il nostro ambiente ad alta disponibilità. Puoi trovare maggiori informazioni su questo argomento qui.
Conclusione
Azure offre molte funzionalità e prodotti per offrire una soluzione di livello aziendale. Durante questi test, tuttavia, il problema principale che ho riscontrato è stato che il tempo necessario per la creazione e il failover era troppo lungo per la maggior parte delle esigenze delle applicazioni.
Se hai bisogno di un failover e di un ripristino rapidi, dovresti migliorare la disponibilità dell'ambiente utilizzando un servizio di bilanciamento del carico o un sistema esterno come ClusterControl, per ridurre i tempi di inattività. Per informazioni più dettagliate sull'esecuzione di PostgreSQL su Microsoft Azure puoi dare un'occhiata al nostro blog di approfondimento.