Avere un ambiente di test è un must in tutte le aziende. Potrebbe essere necessario per testare modifiche o nuove versioni dell'applicazione, o anche per testare l'applicazione esistente con una nuova versione di PostgreSQL. La parte difficile di questo è, in primo luogo, come distribuire un ambiente di test il più simile possibile a quello di produzione e come mantenere quell'ambiente senza ricreare tutto da zero.
In questo blog, vedremo come distribuire un ambiente di test in diversi modi utilizzando ClusterControl, che ti aiuterà ad automatizzare il processo ed evitare attività manuali che richiedono tempo.
Replica da cluster a cluster
Da ClusterControl 1.7.4 è disponibile una funzionalità denominata Replica da cluster a cluster. Ti consente di avere una replica in esecuzione tra due cluster autonomi.
Daremo un'occhiata a come utilizzare questa funzione per un cluster PostgreSQL esistente. Per questa attività, si presume che ClusterControl sia installato e che il cluster primario sia stato distribuito utilizzandolo.
Creazione di una replica da cluster a cluster
Per creare una nuova replica da cluster a cluster dall'interfaccia utente di ClusterControl, vai su ClusterControl -> Seleziona cluster PostgreSQL -> Azioni cluster -> Crea cluster slave.
Il cluster slave verrà creato tramite lo streaming dei dati dal cluster primario corrente.
Devi specificare le credenziali SSH e la porta, un nome per il tuo Cluster Slave e se vuoi che ClusterControl installi il software e le configurazioni corrispondenti per te.
Dopo aver impostato le informazioni di accesso SSH, è necessario definire la versione del database, la datadir, la porta e le credenziali di amministratore. Poiché utilizzerà la replica in streaming, assicurati di utilizzare la stessa versione del database e le credenziali devono essere le stesse utilizzate dal cluster primario.
In questo passaggio, è necessario aggiungere il server al nuovo cluster slave. Per questa attività, puoi inserire sia l'indirizzo IP che il nome host del nodo del database.
È possibile monitorare lo stato del lavoro nel monitor attività di ClusterControl. Al termine dell'attività, puoi vedere il cluster nella schermata principale di ClusterControl.
CLI ClusterControl
ClusterControl CLI, noto anche come s9s, è uno strumento da riga di comando introdotto in ClusterControl versione 1.4.1 per interagire, controllare e gestire i cluster di database utilizzando il sistema ClusterControl. ClusterControl CLI apre una nuova porta per l'automazione del cluster in cui puoi integrarla facilmente con gli strumenti di automazione della distribuzione esistenti come Ansible, Puppet, Chef, ecc. Puoi anche utilizzare questo strumento ClusterControl per creare un cluster slave. Vediamo un esempio:
$ s9s cluster --create --cluster-name=PostgreSQL1rep --cluster-type=postgresql --provider-version=13 --nodes="192.168.100.133" --os-user=root --os-key-file=/root/.ssh/id_rsa --db-admin=admin --db-admin-passwd=********* --vendor=postgres --remote-cluster-id=14 --log
Ora, vediamo più in dettaglio il parametro utilizzato:
-
Cluster:per elencare e manipolare i cluster.
-
Crea:crea e installa un nuovo cluster.
-
Nome-cluster:il nome del nuovo Cluster Slave.
-
Tipo di cluster:il tipo di cluster da installare.
-
Versione provider:la versione del software.
-
Nodi:Elenco dei nuovi nodi nel Cluster Slave.
-
Os-user:il nome utente per i comandi SSH.
-
Os-key-file:il file chiave da utilizzare per la connessione SSH.
-
Db-admin:il nome utente dell'amministratore del database.
-
Db-admin-passwd:la password per l'amministratore del database.
-
Remote-cluster-id:ID cluster principale per la replica da cluster a cluster.
-
Registro:Attendi e monitora i messaggi di lavoro.
Gestione della replica da cluster a cluster
Ora che la replica da cluster a cluster è attiva e funzionante, ci sono diverse azioni da eseguire su questa topologia utilizzando ClusterControl sia dall'interfaccia utente che dalla CLI.
Ricostruire un cluster di schiavi
Per ricostruire un cluster slave, vai su ClusterControl -> Seleziona cluster slave -> Nodi -> Scegli il nodo -> Azioni nodo -> Ricostruisci slave replica.
ClusterControl eseguirà i seguenti passaggi:
-
Interrompi PostgreSQL Server
-
Rimuovi contenuto dalla sua datadir
-
Trasmetti in streaming un backup dal Master allo Slave usando pg_basebackup
-
Avvia lo Slave
Puoi anche ricostruire un Cluster Slave usando il seguente comando dal server ClusterControl:
$ s9s replication --stage --master="192.168.100.125" --slave="192.168.100.133" --cluster-id=15 --remote-cluster-id=14 --log
I parametri sono:
-
Replica:per monitorare e controllare la replica dei dati.
-
Fase:metti in scena/ricostruisci uno slave di replica.
-
Master:il master di replica nel cluster master.
-
Slave:lo slave di replica nel cluster slave.
-
Cluster-id:l'ID del cluster slave.
-
Remote-cluster-id:l'ID del cluster principale.
-
Registro:Attendi e monitora i messaggi di lavoro.
Crea cluster dal backup
Un altro modo per creare un ambiente di test consiste nel creare un nuovo cluster da un backup del tuo cluster primario. Per questo, vai su ClusterControl -> Seleziona il tuo cluster PostgreSQL -> Backup. Lì, scegli il backup da ripristinare dall'elenco.
Ora puoi ripristinare questo backup nel database corrente, in un nodo separato, o creare un nuovo cluster da questo backup.
L'opzione "Crea cluster da backup" creerà un nuovo cluster PostgreSQL dal backup selezionato.
È necessario aggiungere le credenziali del sistema operativo e del database e le informazioni per distribuire il nuovo cluster. Al termine di questo lavoro, vedrai il nuovo cluster nell'interfaccia utente di ClusterControl.
Ripristina backup su host autonomo
Nella stessa sezione Backup, puoi scegliere l'opzione "Ripristina e verifica su host standalone" per ripristinare un backup in un nodo separato.
Qui puoi specificare se vuoi che ClusterControl installi il software nel nuovo nodo e disabiliti il firewall o AppArmor/SELinux (a seconda del sistema operativo). È possibile mantenere il nodo attivo e funzionante oppure ClusterControl può arrestare il servizio database fino al successivo processo di ripristino. Al termine, vedrai il backup ripristinato/verificato nell'elenco dei backup contrassegnato da un segno di spunta.
Se non desideri eseguire questa attività manualmente, puoi pianificare questo processo utilizzando la funzione Verifica backup, per ripetere periodicamente questo processo in un processo di backup.
Verifica automatica del backup di ClusterControl
In ClusterControl -> Seleziona il tuo cluster PostgreSQL -> Backup -> Crea backup.
La funzione di verifica automatica del backup è disponibile per i backup pianificati. Quando si pianifica un backup, oltre a selezionare le opzioni comuni come il metodo o l'archiviazione, è necessario specificare anche la pianificazione/frequenza.
Utilizzando ClusterControl, puoi scegliere diverse modalità di backup, a seconda della tecnologia del database, e, nella stessa sezione, puoi scegliere il server da cui eseguire il backup, dove vuoi archiviare il backup e se desideri caricare il backup nel cloud (AWS, Azure o Google Cloud). Puoi anche comprimere e crittografare il backup e specificare il periodo di conservazione.
Per utilizzare la funzione di verifica del backup, è necessario un host (o VM) dedicato che non faccia parte del cluster. ClusterControl installerà il software e ripristinerà il backup in questo host ogni volta che il lavoro viene eseguito.
Dopo il ripristino, puoi vedere l'icona di verifica nella sezione ClusterControl Backup, la stessa che avrai facendo la verifica in modalità ClusterControl manuale, con la differenza che non devi preoccuparti sull'attività di restauro. ClusterControl ripristinerà automaticamente il backup ogni volta.
Conclusione
La distribuzione di un ambiente di test ogni volta che è necessario potrebbe richiedere molto tempo ed è difficile mantenerlo aggiornato. Il risultato è che a volte le aziende non testano le nuove versioni o il test non è corretto, ad esempio utilizzando un ambiente diverso da quello di produzione.
Come puoi vedere, ClusterControl ti consente di distribuire lo stesso ambiente che stai utilizzando in produzione con pochi clic, o addirittura automatizzare il processo per evitare qualsiasi attività manuale.