Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Automatizza switchover e failover per il database PostgreSQL con Oracle Cloud Infrastructure Full Stack Disaster Recovery
Introduzione
Oracle Cloud Infrastructure Full Stack Disaster Recovery (OCI Full Stack DR) orchestra la transizione di computazione, database e applicazioni tra le region Oracle Cloud Infrastructure (OCI) di tutto il mondo con un solo clic. I clienti possono automatizzare i passaggi necessari per recuperare uno o più sistemi aziendali senza riprogettare o riprogettare l'infrastruttura, i database o le applicazioni esistenti e senza dover ricorrere a server di gestione o conversione specializzati.
OCI Full Stack DR è un servizio altamente flessibile, possiamo sfruttare i gruppi di piani definiti dall'utente nel piano Disaster Recovery (DR) per gestire le operazioni di DR del bucket dello storage degli oggetti OCI.
Architettura di distribuzione
Nota: l'area principale è Francoforte e l'area DR è Londra.
Obiettivi
- Automatizza lo switchover e il failover per il database PostgreSQL con OCI Full Stack DR.
Prerequisiti
-
Privilegi di amministratore o configurazione dei criteri Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) necessari per OCI Full Stack DR. Per ulteriori informazioni, vedere Configurazione dei criteri IAM (Identity and Access Management) per l'uso di OCI Full Stack DR e Criteri per OCI Full Stack DR.
-
È necessario abilitare il plugin Comando di esecuzione dell'istanza di computazione sia nel database primario che in standby poiché OCI Full Stack DR eseguirà i comandi
sudo
per eseguire il MOUNT e il NO MOUNT dei comandi durante lo switchover. Per ulteriori informazioni sui comandi di esecuzione nell'istanza di OCI Compute, vedere Esecuzione dei comandi nell'istanza di OCI Compute. -
Utilizzare il comando di esecuzione con OCI Full Stack DR. Per ulteriori informazioni, vedere Richiama script personalizzati utilizzando il comando di esecuzione con Oracle Cloud Infrastructure Full Stack Disaster Recovery.
-
Stabilire una connessione RPC (Remote Peering Connection) tra due gateway di instradamento dinamico (DRG) situati nella stessa tenancy. Per ulteriori informazioni, consulta la sezione relativa al peering VCN remoto tramite un DRG aggiornato.
-
Assicurarsi che entrambi i computer possano comunicare sulla porta PostgreSQL
5432
per la replica del database, configurando la rispettiva lista di sicurezza o il gruppo di sicurezza di rete. -
Usare Bastion as a Service o un host Bastion per connettersi ai server PostegreSQL.
-
Bucket di storage degli oggetti OCI (uno in ogni area).
Task 1: installare e configurare PostgreSQL
-
Per installare PostgreSQL, connettersi all'host utilizzando il client SSH preferito ed eseguire il comando seguente.
sudo dnf install -y postgresql postgresql-server postgresql-contrib sudo /usr/bin/postgresql-setup initdb sudo systemctl enable postgresql sudo systemctl start postgresql
-
Abilitare il firewall Linux per ricevere connessioni.
sudo firewall-cmd --zone=public --add-port=5432/tcp --permanent sudo firewall-cmd --reload
-
Modificare il file
postgresql.conf
(disponibile in xxxxx) per consentire la connessione e modificare i parametriwal
come indicato di seguito.... listen_addresses = '*' ... wal_level = logical wal_log_hints = on ...
-
Connettersi al database, quindi creare l'utente di replica.
sudo su postgres psql
CREATE ROLE replica_user WITH REPLICATION LOGIN PASSWORD 'YourUserPassword';
-
Aggiungere questo utente al file
pg_hba.conf
(disponibile in xxxxx).host all all all md5 host replication replica_user <IP Host 1> md5 host replication replica_user <IP Host 2> md5
-
Riavviare il database PostgreSQL per applicare le modifiche.
sudo systemctl restart postgresql
-
Ripetere questa procedura nel secondo server.
Task 2: replicare il database PostgreSQL
In questo task verrà configurata la replica del database nativo PostgreSQL.
-
Connettersi al database primario e creare lo slot di replica.
sudo su postgres psql
select pg_create_physical_replication_slot('replica_0');
-
Connettersi al database secondario ed eseguire i comandi riportati di seguito per creare la replica.
sudo systemctl stop postgresql sudo rm -rv /var/lib/pgsql/data/ sudo pg_basebackup -d "host=<IP Host 1> port=5432 user=replica_user password=YourUserPassword" -w -X stream -S replica_0 -v -R -W -D /var/lib/pgsql/data/ --no-password sudo chown postgres -R /var/lib/pgsql/data/ sudo systemctl start postgresql
-
Controllare che la replica stia fluendo sul database primario.
select * from pg_stat_replication;
Dovresti essere in grado di vedere una riga con il processo di streaming.
Task 3: Creare il piano di switchover
Task 3.1: Creare e associare gruppi di protezione da disaster recovery (DRPG)
-
Nell'area primaria (Francoforte), fare clic sul menu hamburger, passare a Migrazione e disaster recovery, Disaster Recovery, Disaster Recovery Protection Group e Crea gruppo di protezione Disaster Recovery.
-
Nella standby region (Londra), fare clic sul menu Hamburger, passare a Migrazione e disaster recovery, Disaster Recovery, Disaster Recovery Protection Group e Crea gruppo di protezione Disaster Recovery.
-
Nell'area principale (Francoforte), immettere le informazioni riportate di seguito e fare clic su Associa.
- Ruolo:
Primary
. - Area peer:
UK South (London)
. - Gruppo di protezione DR peer:
postgresql-lon
.
- Ruolo:
Task 3.2: Aggiungi membri a DRPG principale e in standby
-
Nel DRPG primario (
postgresql-fra
), selezionare Membri e aggiungere la VM di calcolo (postgresql01
) come membro.Nota: durante l'aggiunta di Compute come membro, selezionare Istanza non in movimento nel tipo di istanza di computazione, poiché è disponibile l'impostazione attivo-passivo per il database PostgreSQL.
-
Nel DRPG in standby (
postgresql-lon
), selezionare Membri e aggiungere la VM di calcolo (postgresql02
) come membro.Nota: durante l'aggiunta della computazione come membri, selezionare Istanza non in movimento nel tipo di istanza di computazione, poiché è disponibile l'impostazione attivo-passivo per il database PostgreSQL.
Task 3.3: Creare un piano di switchover nel DRPG in standby (Londra)
Piano di switchover: tipo di piano DR che esegue una transizione pianificata dei servizi dal DRPG primario al DRPG in standby.
-
Creare un piano di switchover in DRPG in standby
postgresql-lon
. -
Selezionare Piani e fare clic su Crea piano.
-
Immettere il nome come
postgresql-switchover-frankfurt-london
e selezionare il tipo di piano comeSwitchover (planned)
. -
Fare clic su Crea.
Nota: assicurarsi di creare il piano di switchover dal DRPG in standby (Londra).
Task 3.4: Personalizzare il piano di switchover con vari gruppi di piani definiti dall'utente
Abbiamo aggiunto Compute (istanza non mobile) come membri in entrambi i gruppi di protezione DR. È necessario personalizzare il piano di switchover con ulteriori gruppi di piani definiti dall'utente. Inoltre, dobbiamo creare i seguenti script bash e caricarli nello storage degli oggetti OCI, in modo da poter richiamare tali script durante lo switchover.
-
stop_postgresql.sh
.#!/bin/bash sudo systemctl stop postgresql
-
promote_postgresql.sh
.#!/bin/bash sudo -u postgres /usr/bin/pg_ctl promote -D /var/lib/pgsql/data/ sudo -u postgres psql -c "select pg_create_physical_replication_slot('replica_1');"
-
change_replication_direction.sh
.#!/bin/bash sudo rm -rv /var/lib/pgsql/data/ sudo sudo pg_basebackup -d "host=<IP Host 2> port=5432 user=replica_user password=YourUserPassword" -w -X stream -S replica_1 -v -R -W -D /var/lib/pgsql/data/ --no-password sudo chown postgres -R /var/lib/pgsql/data/ sudo systemctl start postgresql sudo -u postgres psql -c "select pg_create_physical_replication_slot('replica_0');"
Nota: questi script devono essere caricati nel bucket dell'area di Londra.
Di seguito è riportato un tipico flusso di lavoro per lo switchover DR.
-
Arresta il database PostgreSQL nell'area di Francoforte: il gruppo di piani avrà la procedura per arrestare il database PostgreSQL nell'area di Francoforte.
-
Promuovi il database PostgreSQL nell'area di Londra: il gruppo di piani avrà la procedura per promuovere il database PostgreSQL nell'area di Londra.
-
Modificare la direzione di replica del database PostgreSQL: il gruppo di piani avrà la procedura per modificare la direzione di replica del database PostgreSQL (LON-FRA).
Nota: assicurarsi che i passi vengano eseguiti nello stesso ordine.
Creare il gruppo di piani definito dall'utente seguente.
-
Creare il gruppo di piani Arresta database PostgreSQL nell'area Francoforte.
-
In Gruppi di piani, fare clic su Aggiungi gruppo per creare un gruppo di piani personalizzato per arrestare il database PostgreSQL nell'area Francoforte. Immettere Nome gruppo come
Stop PostgreSQL Database at Frankfurt Region
. -
Fare clic su Aggiungi passo e immettere le informazioni seguenti. Verrà aggiunto un passo nel gruppo di piani.
-
Assicurarsi di scegliere l'area come
Frankfurt
e l'istanza di destinazione comepostgresql01
. Selezionare lo script di storage degli oggetti Esegui e la posizione dello script sceglie il bucket di storage degli oggetti OCIposgres-dr-lon
. -
Immettere i dettagli dello script
stop_postgresql.sh
con la posizione dello script. Lo script chiuderà il database PostgreSQL nell'area FRA. -
Fare clic su Aggiungi passo e verificare il passo aggiunto.
-
-
-
Creare il gruppo di piani Promuovi database PostgreSQL nell'area di Londra.
-
In Gruppi di piani fare clic su Aggiungi gruppo per creare un gruppo di piani personalizzato per promuovere il database PostgreSQL a Londra. Immettere Nome gruppo come
Promote PostgreSQL Database at London Region
. -
Fare clic su Aggiungi passo e immettere i seguenti dettagli. Verrà aggiunto un passo nel gruppo di piani.
-
Assicurarsi di scegliere l'area come
London
, l'istanza di destinazione comepostgresql02
. Selezionare lo script di storage degli oggetti Esegui e la posizione dello script sceglie il bucket di storage degli oggetti OCIposgres-dr-lon
. -
Immettere i dettagli dello script
promote_postgresql.sh
con la posizione dello script. Lo script chiuderà il database PostgreSQL nell'area FRA. -
Fare clic su Aggiungi passo e verificare il passo aggiunto.
-
-
-
Creare il gruppo di piani Modifica direzione di replica del database PostgreSQL.
-
In Gruppi di piani, fare clic su Aggiungi gruppo per creare un gruppo di piani personalizzato per modificare la direzione di replica del database PostgreSQL. Immettere Nome gruppo come
Promote PostgreSQL Database at London Region
. -
Fare clic su Aggiungi passo e immettere le informazioni seguenti. Verrà aggiunto un passo nel gruppo di piani.
-
Assicurarsi di scegliere l'area come
Frankfurt
e l'istanza di destinazione comepostgresql01
. Selezionare lo script di storage degli oggetti Esegui e la posizione dello script scegliere il bucket di storage degli oggetti OCIposgres-dr-lon
. -
Immettere i dettagli dello script
change_replication_direction.sh
con la posizione dello script. Lo script chiuderà il database PostgreSQL nell'area FRA. -
Fare clic su Aggiungi passo e verificare il passo aggiunto.
-
-
Task 4: Esegui controlli preliminari ed esegui il piano di switchover
L'opzione Esegui controlli preliminari consente di convalidare rapidamente tutti i passi di un piano DR e i membri associati ai passi.
-
Dal piano di switchover
postgresql-switchover-frankfurt-london
, fare clic su Esegui controlli preliminari per eseguire controlli preliminari.Controllare che l'operazione sia stata completata.
-
Dal piano di switchover
postgresql-switchover-frankfurt-london
, fare clic su Esegui piano di disaster recovery per eseguire il piano. -
Controllare lo stato del piano e assicurarsi che tutti i passi del piano abbiano esito positivo.
-
Il piano di switchover esegue tutti i gruppi di piani in un ordine specifico. Dopo il successo dell'esecuzione del piano, il database PostgreSQL verrà promosso a master nella regione di Londra.
-
Il ruolo cambierà automaticamente nel DRPG. Ora Londra avrà il ruolo primario e Francoforte avrà il ruolo di standby.
-
Verificare il database PostgreSQL a Londra.
Task 5: Creare un piano di switchover nel DRPG in standby (Francoforte) per lo switchback
Task 5.1: Creare un piano di switchover nel DRPG in standby (Londra)
-
Creare un piano di switchover in Standby DRPG
postgresql-fran
. -
Selezionare Piani e fare clic su Crea piano.
-
Immettere il nome come
postgresql-switchover-london-frankfurt
e selezionare il tipo di piano comeSwitchover (planned)
. -
Fare clic su Crea.
Nota: assicurarsi di creare il piano di switchover dal DRPG in standby (Francoforte).
Task 5.2: Personalizzare il piano di switchover con vari gruppi di piani definiti dall'utente
È necessario personalizzare il piano di switchover con ulteriori gruppi di piani definiti dall'utente. È inoltre necessario creare i seguenti script bash e caricarli nello storage degli oggetti OCI, in modo da poter richiamare tali script durante lo switchover.
-
rewind_postgresql.sh
.#!/bin/bash sudo systemctl stop postgresql sudo rm -rv /var/lib/pgsql/data/ sudo -u postgres pg_basebackup -d "host=<IP Host 2> port=5432 user=replica_user password=YourUserPassword" -v -R -D /var/lib/pgsql/data/ --no-password sudo chown postgres -R /var/lib/pgsql/data/ sudo systemctl start postgresql sudo -u postgres /usr/bin/pg_ctl promote -D /var/lib/pgsql/data/ sudo -u postgres psql -c "select pg_create_physical_replication_slot('replica_0');"
-
replicate_postgresql.sh
.#!/bin/bash sudo systemctl stop postgresql sudo rm -rv /var/lib/pgsql/data/ sudo pg_basebackup -d "host=<IP Host 2> port=5432 user=replica_user password=YourUserPassword" -w -X stream -S replica_0 -v -R -W -D /var/lib/pgsql/data/ --no-password sudo chown postgres -R /var/lib/pgsql/data/ sudo systemctl start postgresql
Nota: questi script devono essere caricati nel bucket nell'area Francoforte.
Di seguito è riportato un tipico flusso di lavoro per lo switchover DR.
-
Riavviare i database PostgreSQL: gruppo di piani per riavvolgere il database. Francoforte sincronizzerà i contenuti dal database di Londra.
-
Ripristinare la replica del database PostgreSQL a Londra: il gruppo di piani inizierà a replicare il database PostgreSQL da Francoforte all'area di Londra.
Nota: assicurarsi che i passi vengano eseguiti nello stesso ordine.
Creare i due gruppi di piani definiti dall'utente seguenti
-
Creare il gruppo di piani Riavvia database PostgreSQL.
-
In Gruppi di piani, fare clic su Aggiungi gruppo per creare un gruppo di piani personalizzato per riavvolgere il database PostgreSQL nell'area Francoforte. Immettere Nome gruppo come
Rewind PostgreSQL Databases at Frankfurt Region
. -
Fare clic su Aggiungi passo e immettere le informazioni seguenti. Verrà aggiunto un passo al gruppo di piani.
-
Assicurarsi di scegliere l'area come
Frankfurt
e l'istanza di destinazione comepostgresql01
. Selezionare lo script di storage degli oggetti Esegui e la posizione dello script sceglie il bucket di storage degli oggetti OCIposgres-dr-lon
. -
Immettere i dettagli dello script
rewind_postgresql.sh
con la posizione dello script. Lo script chiuderà il database PostgreSQL nell'area FRA. -
Fare clic su Aggiungi passo e verificare il passo aggiunto.
-
-
-
Creare Ristabilire la replica del database PostgreSQL nel gruppo di piani di Londra.
-
In Gruppi di piani, fare clic su Aggiungi gruppo per creare un gruppo di piani personalizzato per ristabilire la replica del database PostgreSQL a Londra. Immettere Nome gruppo come
Promote PostgreSQL Database at London Region
. -
Fare clic su Aggiungi passo e immettere le informazioni seguenti. Verrà aggiunto un passo nel gruppo di piani.
-
Assicurarsi di scegliere l'area come
London
e l'istanza di destinazione comepostgresql02
. Selezionare lo script di storage degli oggetti Esegui e la posizione dello script sceglie il bucket di storage degli oggetti OCIposgres-dr-lon
. -
Immettere i dettagli dello script
replicate_postgresql.sh
con la posizione dello script. Lo script chiuderà il database PostgreSQL nell'area FRA. -
Fare clic su Aggiungi passo e verificare il passo aggiunto.
-
-
Task 6: Esegui controlli preliminari ed esegui il piano di switchover
Il comando Esegui controlli preliminari consente di convalidare rapidamente tutti i passi di un piano DR e i membri associati ai passi.
-
Dal piano di switchover
postgresql-switchover-london-frankfurt
, fare clic su Esegui controlli preliminari per eseguire controlli preliminari.Controllare che l'operazione sia stata completata.
-
Dal piano di switchover
postgresql-switchover-london-frankfurt
, fare clic su Esegui piano di disaster recovery per eseguire il piano. -
Controllare lo stato del piano e assicurarsi che tutti i passi del piano abbiano esito positivo.
-
Il piano di switchover esegue tutti i gruppi di piani in un ordine specifico. Dopo il successo dell'esecuzione del piano, il database PostgreSQL verrà promosso a master nella regione di Francoforte.
-
Il ruolo cambierà automaticamente nel DRPG. Ora Francoforte avrà il ruolo primario e Londra avrà il ruolo di standby.
-
Verificare il database PostgreSQL a Francoforte.
Passi successivi
Hai visto come eseguire automaticamente lo switchover del database PostgreSQL e ripristinare le operazioni di Disaster Recovery utilizzando OCI Full Stack DR. Per ulteriori informazioni, consulta la documentazione di OCI Full Stack DR nella sezione Collegamenti correlati.
Collegamenti correlati
Conferme
-
Autore - Raphael Teixeira (membro principale dello staff tecnico per FSDR)
-
Contributori - Ricardo Malhado (Hyperscaler per l'esperto OCI), Suraj Ramesh (Principal Product Manager per MAA)
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.
Per la documentazione del prodotto, visita l'Oracle Help Center.
Automate Switchover and Failover for PostgreSQL Database with Oracle Cloud Infrastructure Full Stack Disaster Recovery
F96164-01
April 2024