Hoogbeschikbare PostgreSQL met Patroni en HAProxy

Staat u voor de uitdaging om een veerkrachtige PostgreSQL-database te onderhouden in het steeds veranderende landschap van digitale eisen? Als het begrip “Patroni” resoneert met uw technologische aspiraties, staat u op het punt een oplossing te ontgrendelen die PostgreSQL verheft tot een vesting van hoge beschikbaarheid.

Zeker, er wacht een uitdaging, maar vrees niet – u begint aan een transformerende reis naar het construeren van een onwankelbare PostgreSQL-cluster. Stel u een toekomst voor waarin database-onderbrekingen slechts kleine haperingen zijn, en uw PostgreSQL-opstelling staat als het toppunt van betrouwbaarheid.

Maak u klaar om uw PostgreSQL-omgeving te versterken tot een onwankelbare bastion!

Vereisten

Voordat u aan de slag gaat met het implementeren van hoge beschikbaarheid voor PostgreSQL, zorg ervoor dat u het volgende klaar heeft staan:

  • Vijf (of meer) Linux-servers – Deze tutorial maakt gebruik van Debian 12-servers, elk met een niet-root gebruiker met sudo/beheerder privileges als volgt:
Hostname IP Address Used as
postgres01 192.168.5.20 PostgreSQL Server
postgres02 192.168.5.21 PostgreSQL Server
postgres03 192.168.5.22 PostgreSQL Server
etcd 192.168.5.15 Cluster Data Store
haproxy 192.168.5.16 Load Balancer

PostgreSQL-server en Patroni installeren

Met alle vereisten voldaan, stel u dit moment voor als het leggen van de basis voor een robuuste, fail-safe databaseomgeving. Het doel is om een PostgreSQL-implementatie met hoge beschikbaarheid te creëren via PostgreSQL 15. Maar eerst moet u de benodigde pakketten (PostgreSQL-server en Patroni) installeren op al uw PostgreSQL-servers.

Patroni is een op Python gebaseerde toepassing voor het maken van high-availability PostgreSQL-implementaties in uw datacenters, van bare-metal tot Kubernetes. Patroni is beschikbaar in de officiële PostgreSQL-opslagplaats en ondersteunt PostgreSQL-servers 9.5-16.

Om PostgreSQL Server en Patroni te installeren, voert u het volgende uit:

? LET OP: Voer de volgende bewerkingen uit op PostgreSQL-servers. In dit geval postgres01, postgres02 en postgres03.

1. Open een terminal en voer de onderstaande curl-opdracht uit, die geen uitvoer geeft maar de GPG-sleutel voor de PostgreSQL-opslagplaats toevoegt aan /usr/share/keyrings/pgdg.gpg.

? Deze handleiding gebruikt een rootaccount voor het uitvoeren van commando’s om de compatibiliteit met demonstraties te waarborgen. Maar onthoud dat het gebruik van een niet-rootaccount met sudo-rechten ten zeerste wordt aanbevolen. Met een niet-rootaccount moet u uw commando’s voorzien van het voorvoegsel sudo voor verbeterde beveiliging en beste praktijken.

curl -fsSL <https://www.postgresql.org/media/keys/ACCC4CF8.asc> | sudo gpg --dearmor -o /usr/share/keyrings/pgdg.gpg

2. Voer vervolgens de volgende opdracht uit, die geen uitvoer geeft maar de PostgreSQL-opslagplaats toevoegt aan de lijst met pakketbronnen in het bestand /etc/apt/sources.list.d/pgdg.list.

sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/pgdg.gpg] <https://apt.postgresql.org/pub/repos/apt> $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

3. Nadat toegevoegd, voer de onderstaande apt update opdracht uit om uw pakketindex te vernieuwen en nieuwere pakketinformatie op te halen.

apt update
Adding PostgreSQL repository and updating package index

4. Zodra bijgewerkt, voer de volgende opdracht uit om de volgende pakketten te installeren:

  • postgresql-15 – Het PostgreSQL-databasemanagementsysteem versie 15.
  • patroni – Een opensource-oplossing voor hoge beschikbaarheid in PostgreSQL, een sjabloon voor PostgreSQL HA-clusters met behulp van Python en etcd.
  • python3-etcd – Een Python-clientbibliotheek voor interactie met etcd, een gedistribueerde sleutel-waarde-opslag. Deze bibliotheek maakt het mogelijk voor Python-toepassingen om te communiceren met en etcd-clusters te beheren.
  • python3-psycopg2 – Een PostgreSQL-adapter voor Python 3, die Python-toepassingen en PostgreSQL-databases verbindt.
apt install postgresql-15 postgresql-server-dev-15 patroni python3-etcd python3-psycopg2

Voer Y in om door te gaan met de installatie wanneer daarom wordt gevraagd.

Installing packages including PostgreSQL 15 and Patroni

5. Met de geïnstalleerde pakketten, voer elke onderstaande opdracht uit, die geen uitvoer naar de terminal heeft maar het volgende uitvoert:

  • Stop de postgresql en patroni services. Op Debian/Ubuntu worden de postgresql en patroni services automatisch gestart na installatie.
  • Maak een symbolische koppeling voor de PostgreSQL binaire bestanden naar de map /usr/sbin. Hierdoor kan patroni de PostgreSQL binaire bestanden uitvoeren om PostgreSQL te creëren en te beheren.
systemctl stop postgresql patroni
ln -s /usr/lib/postgresql/15/bin/* /usr/sbin/

6. Voer tot slot de volgende commando’s uit om het binaire pad voor patroni en psql te verifiëren, en de geïnstalleerde --version van patroni.

which patroni
which psql
patroni --version

Hieronder staan de paden naar de patroni (/usr/bin/patroni) en psql (/usr/sbin/psql) binaire bestanden; de geïnstalleerde versie van Patroni is 3.2.1.

Verifying binary paths for Patroni and psql

Installatie en configuratie van de etcd-server

Nu je PostgreSQL Server en Patroni hebt geïnstalleerd, heb je een ruggengraat nodig die de coördinatie tussen je PostgreSQL-servers versterkt voor naadloze hoge beschikbaarheid. Je zult etcd opzetten en configureren, een key-value dataopslag.

Deze key-value dataopslag is de stille architect achter de schermen, zorgt ervoor dat gegevens met betrekking tot je PostgreSQL-cluster veilig worden opgeslagen en efficiënt worden beheerd.

? LET OP: Zorg ervoor dat je etcd op een aparte server installeert. In dit voorbeeld is etcd geïnstalleerd op de etcd-server.

Volg deze stappen om etcd te installeren en configureren op je etcd-server:

1. Voer op je etcd-server het onderstaande commando uit om de repository-index bij te werken en de nieuwste pakketinformatie te verkrijgen.

apt update
Updating the Debian repository on the etcd server

2. Voer vervolgens de onderstaande opdracht uit om de etcd op uw server te installeren.

apt install etcd-server
Installing etcd

3. Nadat u etcd hebt geïnstalleerd, opent u de standaardconfiguratie /etc/default/etcd met uw voorkeurseditor en voegt u de volgende configuratie in.

Deze configuratie stelt een enkele etcd-cluster in, dus zorg ervoor dat u het IP-adres 192.168.5.15 wijzigt met uw interne IP-adres.

ETCD_LISTEN_PEER_URLS="<http://192.168.5.15:2380>"
ETCD_LISTEN_CLIENT_URLS="<http://localhost:2379>,<http://192.168.5.15:2379>"
ETCD_INITIAL_ADVERTISE_PEER_URLS="<http://192.168.5.15:2380>"
ETCD_INITIAL_CLUSTER="default=http://192.168.5.15:2380,"
ETCD_ADVERTISE_CLIENT_URLS="<http://192.168.5.15:2379>"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_INITIAL_CLUSTER_STATE="new" 

Sla de wijzigingen op en verlaat de editor.

Configuring an etcd single cluster mode

4. Voer nu de onderstaande systemctl-opdracht uit om etcd te herstarten en uw wijzigingen toe te passen.

Deze opdracht geeft geen uitvoer, maar u controleert de wijzigingen in de volgende stap.

systemctl restart etcd

5. Zodra de etcd opnieuw is opgestart, controleert u of de etcd-service actief is en ingeschakeld.

systemctl is-enabled etcd
systemctl status etcd

Als de etcd-service actief is, ziet u een uitvoer actief (lopend). Wanneer ingeschakeld, ziet u de uitvoer ingeschakeld, wat ook betekent dat etcd automatisch wordt gestart bij het opstarten.

Checking the etcd service status

6. Voer tot slot de volgende etcdctl-opdracht uit om de lijst van beschikbare servers op de etcd-cluster te controleren.

etcdctl member list

In dit geval wordt etcd uitgevoerd als een single-node cluster op een lokaal IP-adres http://192.168.5.15:2379/.

Checking cluster members on etcd

Bootstrappen van PostgreSQL-cluster via Patroni

Met de etcd-server nu stevig op zijn plaats, sta je aan de drempel van de volgende cruciale fase. Door het starten van het bootstrap-proces met behulp van Patroni, verhoog je je PostgreSQL-configuratie naar een robuuste en fouttolerante cluster.

? Zorg ervoor dat je eerst een back-up maakt van je database als je een PostgreSQL-cluster implementeert op een bestaande PostgreSQL-server.

Om je PostgreSQL-cluster via Patroni te starten, voer je het volgende uit op elke PostgreSQL-server:

1. Open de standaardconfiguratie van Patroni (/etc/patroni/config.yml) in je teksteditor en voeg de volgende configuratie toe.

Zorg ervoor dat je de waarde van de optie name vervangt door de hostnaam van je PostgreSQL-server (bijv. postgres01), maar sluit de editor nog niet af.

Deze configuratie stelt je PostgreSQL-cluster met de naam postgres in.

# Scope van PostgreSQL
scope: postgres
# Naamruimte voor de PostgreSQL-database
namespace: /db/
# Naam van de PostgreSQL-instantie
name: postgres01

2. Voeg vervolgens de onderstaande configuratie toe om de Patroni REST API in te stellen om uit te voeren op 192.168.5.20:8008.

Zorg ervoor dat elke PostgreSQL-server binnen de cluster verbinding kan maken via de API. Wijzig daarom het IP-adres 192.168.5.20 met het respectieve IP-adres van elke PostgreSQL-server.

# Configuratie Patroni REST API
restapi:
    # Het IP-adres en de poort waarop de REST API moet luisteren
    listen: 192.168.5.20:8008

    # Het IP-adres en de poort waarmee clients moeten verbinden
    connect_address: 192.168.5.20:8008

3. Voeg de onderstaande configuratie toe om integratie met etcd in te schakelen. In dit geval draait de etcd-server op het IP-adres 192.168.5.15.

# Configuratie Patroni Etcd
etcd3:
    # Het hostadres en de poort van de Etcd-server
    host: 192.168.5.15:2379

4. Voeg nu de onderstaande configuratie toe om de PostgreSQL-server te bootstrap via initdb.

Deze configuratie stelt de standaardregels en instellingen in voor clientauthenticatie (pg_hba.conf) en een nieuwe gebruiker admin met het wachtwoord admin.

Zorg ervoor dat je de IP-adressen van de PostgreSQL-cluster invoert in de pg_hba-sectie en wijzig het standaardwachtwoord admin in de users-sectie.

# Patroni Bootstrap Configuratie
bootstrap:
    # Configuratieparameters voor gedistribueerde configuratieservice (DCS)
    dcs:
        ttl: 30
        loop_wait: 10
        retry_timeout: 10
        maximum_lag_on_failover: 1048576
        postgresql:
            # pg_rewind gebruiken tijdens het opstarten
            use_pg_rewind: true

    # Initdb-configuratie
    initdb:
        - auth: scram-sha-256
        - encoding: UTF8
        - data-checksums

    # pg_hba.conf-vermeldingen voor replicatie en algemene toegang
    pg_hba:
        - host replication replicator 127.0.0.1/32 scram-sha-256
        - host replication replicator 192.168.5.20/0 scram-sha-256
        - host replication replicator 192.168.5.21/0 scram-sha-256
        - host replication replicator 192.168.5.22/0 scram-sha-256
        - host all all 0.0.0.0/0 scram-sha-256

		# Toevoegen van standaardgebruiker admin met wachtwoord admin
		users:
        admin:
            password: admin
            options:
                - createrole
                - createdb

5. Na het configureren van hoe PostgreSQL start, voeg de volgende configuratie in om in te stellen hoe PostgreSQL op elke server draait.

Wat betreft de server postgres01, PostgreSQL zal draaien op IP-adres 192.168.5.20 met de gegevensdirectory /var/lib/patroni.

Bovendien maakt deze configuratie een nieuwe gebruiker genaamd replicator aan voor replicatieoperaties en de gebruiker postgres als supergebruiker/beheerder met het wachtwoord (secretpassword).

Zorg ervoor dat je het IP-adres en het standaardwachtwoord (secretpassword) wijzigt.

# Patroni PostgreSQL-configuratie
postgresql:
    # PostgreSQL-server luisteradres en poort
    listen: 192.168.5.20:5432
    # Verbindingsadres voor PostgreSQL-clients
    connect_address: 192.168.5.20:5432
    # Gegevensdirectory voor PostgreSQL
    data_dir: /var/lib/patroni
    # Pad naar het pgpass-bestand
    pgpass: /tmp/pgpass

    # Authenticatieconfiguratie
    authentication:
        # Replicatie van gebruikersreferenties
        replication:
            username: replicator
            password: rep-pass
        # Supergebruikersreferenties
        superuser:
            username: postgres
            password: secretpassword

    # Extra PostgreSQL-parameters
    parameters:
        # Map voor Unix-socket
        unix_socket_directories: '.'
        # Wachtwoordencryptiemethode
        password_encryption: 'scram-sha-256'

6. Voeg de volgende configuratie in om tags in te stellen voor uw PostgreSQL-server die het gedrag op het cluster bepalen, sla de wijzigingen op en sluit het bestand.

# Patroni Tags-configuratie
tags:
    # Voorkomt dat een node wordt gepromoveerd bij een storing
    nofailover: false
    # Voorkomt dat de load balancer deze node overweegt
    noloadbalance: false
    # Voorkomt dat er een replica wordt gemaakt door klonen
    clonefrom: false
    # Voorkomt dat synchrone replicatie wordt afgedwongen
    nosync: false

7. Met de opgeslagen configuraties, voer de onderstaande commando’s uit om gezamenlijk de gegevensdirectory van Patroni voor te bereiden, zorg ervoor dat deze passend is eigendom en beveiligd is voor het gebruik van PostgreSQL.

Deze commando’s geven geen uitvoer, maar deze stap is cruciaal bij het opzetten van een PostgreSQL-databasecluster met Patroni voor hoge beschikbaarheid.

# Maak de directory aan voor Patroni-gegevens
mkdir -p /var/lib/patroni

# Stel het eigendom van de Patroni-gegevensdirectory in op de PostgreSQL-gebruiker
chown -R postgres:postgres /var/lib/patroni

# Stel machtigingen in op de Patroni-gegevensdirectory voor beveiliging
chmod 700 /var/lib/patroni

8. Voer vervolgens de systemctl-commando’s hieronder uit om de patroni-service te starten en te verifiëren.

systemctl start patroni
systemctl status patroni

Op de postgres01-server draait de PostgreSQL-server en wordt de cluster geïnitialiseerd. Ook wordt de postgres01-server geselecteerd als de clusterleider.

Checking the Patroni service and verifying PostgreSQL cluster initialization

Op de postgres02-server start de PostgreSQL-server via Patroni en voegt zich bij de PostgreSQL-cluster via de REST API.

Als alles goed gaat, ziet u het volgende bericht:

Checking the Patroni service on the postgres02 server

Op de postgres03-server is de uitvoer vergelijkbaar met die van de postgres02-server.

Checking the Patroni service on the postgres03 server

9. Met uw geïnitialiseerde PostgreSQL-cluster, voer de volgende patronictl-opdracht uit om een lijst weer te geven van door Patroni beheerde PostgreSQL-instanties.

patronictl -c /etc/patroni/config.yml list

In de volgende output ziet u uw PostgreSQL-cluster (postgres) draaien.

Merk op dat uw cluster draait met drie leden: postgres01 als cluster Leider, postgres02 en postgres03 als Replica met modus/status streaming.

Checking the list of servers in the PostgreSQL Cluster

10. Voer tot slot de systemctl-opdracht hieronder uit om de automatische start van de postgresql-service tijdens het opstarten van het systeem uit te schakelen.

Deze opdracht geeft geen output als deze succesvol is, maar is essentieel omdat Patroni de nieuwe PostgreSQL-server beheert.

sudo systemctl disable --now postgresql

Installeren en configureren van HAProxy als Load Balancer

Met uw ingezette PostgreSQL-cluster, hoe maakt u het toegankelijk voor clients en schakelt u over bij problemen? De oplossing is HAProxy als load balancer vóór uw PostgreSQL-cluster.

HAProxy is de spil die uw PostgreSQL-cluster in staat stelt om verschillende workloads te verwerken, verzoeken intelligent te verdelen en hoge beschikbaarheid te behouden.

? LET OP: Installeer HAProxy op een aparte server. In dit geval is de HAProxy-server geïnstalleerd op de haproxy-server met een IP-adres van 192.168.5.16.

Om HAProxy te installeren en configureren als load balancer voor het PostgreSQL-cluster, volg deze stappen:

1. Open het bestand /etc/hosts met uw voorkeurteksteditor, voeg de IP-adressen en hostnamen van uw PostgreSQL-servers in, sla de wijzigingen op en sluit het bestand.

192.168.5.20    postgres01
192.168.5.21    postgres02
192.168.5.22    postgres03

2. Voer vervolgens het onderstaande commando uit om uw pakketindex bij te werken.

apt update
Updating the repository on the HAProxy server

3. Zodra bijgewerkt, voer het onderstaande commando uit om het haproxy-pakket naar uw systeem te installeren.

apt install haproxy
Installing HAProxy via APT

4. Voer nu het volgende commando uit om de standaard HARPOXY-configuratie te back-uppen naar /etc/haproxy/haproxy.cfg.orig.

Dit commando geeft geen output maar is een voorzorgsmaatregel voordat er wijzigingen worden aangebracht.

mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.orig

5. Maak vervolgens een nieuw bestand genaamd /etc/haproxy/haproxy.cfg met uw voorkeurseditor en voeg de volgende configuratie in. Zorg ervoor dat u elk IP-adres van uw PostgreSQL-server vervangt, sla het bestand op en sluit de editor.

Deze HAProxy-configuratie stelt HAProxy in als een load balancer voor uw PostgreSQL-cluster met twee proxies, als volgt:

  • stats – Dit blok draait op poort 8080 en bewaakt de prestaties van de HAProxy-server en back-ends.
  • postgres – Dit blok is de load balancer-configuratie voor de PostgreSQL-cluster.
# Globale configuratie-instellingen
global
    # Maximale wereldwijde verbindingen
    maxconn 100      
    # Logboekinstellingen      
    log 127.0.0.1 local2

# Standaardinstellingen
defaults
    # Globale logboekconfiguratie
    log global
    # Modus instellen op TCP
    mode tcp
    # Aantal herpogingen
    retries 2
    # Time-out van de client
    timeout client 30m
    # Verbindingstime-out
    timeout connect 4s
    # Server time-out
    timeout server 30m
    # Time-out controleren
    timeout check 5s

# Configuratie van statistieken
listen stats
    # Modus instellen op HTTP
    mode http
    # Binden aan poort 8080
    bind *:8080
    # Statistieken inschakelen
    stats enable
    # Statistieken URI
    stats uri /

# PostgreSQL-configuratie
listen postgres
    # Binden aan poort 5432
    bind *:5432
    # HTTP-controle inschakelen
    option httpchk
    # Verwachte status 200
    http-check expect status 200
    # Serverinstellingen
    default-server inter 3s fall 3 rise 2 on-marked-down shutdown-sessions
    # Definieer PostgreSQL-servers
    server postgres01 192.168.5.20:5432 maxconn 100 check port 8008
    server postgres02 192.168.5.21:5432 maxconn 100 check port 8008
    server postgres03 192.168.5.22:5432 maxconn 100 check port 8008

6. Met HAProxy geconfigureerd, voer de onderstaande systemctl commando’s uit om de haproxy service te herstarten en te verifiëren (status).

systemctl restart haproxy
systemctl status haproxy
Checking the HAProxy service status

7. Open tot slot uw voorkeurswebbrowser en bezoek het IP-adres van HAProxy met poort 8080 (bijv. http://192.168.5.16:8080/). In de onderstaande uitvoer ziet u het volgende:

In de onderstaande uitvoer ziet u het volgende:

  • De stats-proxy voor het monitoren van de HAProxy-status.
  • De postgres-proxy is de load balancer voor de PostgreSQL-cluster.
    Let op dat de servers postgres02 en postgres03 als ‘down’ worden aangeduid omdat ze beide in de streaming-modus draaien.
Checking HAProxy performance and information

Het testen van de failover van de PostgreSQL-cluster

Na het instellen van HAProxy als uw betrouwbare load balancer, is het nu tijd om uw PostgreSQL-cluster te testen. Deze cruciale stap onthult de veerkracht van uw high-availability setup. U moet ervoor zorgen dat uw PostgreSQL-cluster robuust en responsief blijft, zelfs in het geval van mogelijke storingen.

Om de failover van uw PostgreSQL-cluster te testen, verbindt u met het cluster vanaf uw clientmachine en controleert u de failover-operaties met de volgende stappen:

1. Log in op uw clientmachine, open een terminal en voer de psql-opdracht hieronder uit om verbinding te maken met PostgreSQL via de HAProxy-load balancer.

psql -h 192.168.5.16 -p 5432 -U postgres

Voer uw PostgreSQL-wachtwoord in wanneer daarom wordt gevraagd. U kunt de benodigde wachtwoordinformatie vinden in het /etc/patroni/config.yml-bestand.

Connecting to PostgreSQL cluster via HAProxy load balancer

2. Als u verbonden bent, voert u de volgende query uit om te zien met welke PostgreSQL-server u verbonden bent, en beëindigt u de huidige PostgreSQL-sessie met quit.

SELECT inet_server_addr() AS hostname;
quit

Als uw PostgreSQL-installatie succesvol is, bent u verbonden met de postgres01-server.

Checking the IP address of the PostgreSQL server

3. Schakel nu over naar de postgres01-server, voer de volgende opdrachten uit om de patroni-service te stoppen en de status van de PostgreSQL-clusters op te sommen met list.

Deze stap stelt u in staat om de failover van PostgreSQL te testen.

systemctl stop patroni
patronictl -c /etc/patroni/config.yml list

U kunt zien dat de status van de postgres01-server is gewijzigd naar stopped, en het nieuwe clusterleiderschap is overgedragen aan de postgres03-server.

Stopping the Patroni service to test the failover

4. Keer terug naar de HAProxy-monitoringsstatistieken en je zult zien dat de server postgres01 UIT is, terwijl postgres03 nu UP is.

Verifying the failover works in the HAProxy monitoring stats report

Als alternatief voer je de volgende patronictl-opdracht uit om de status van de PostgreSQL-cluster te controleren.

patronictl -c /etc/patroni/config.yml list

Zoals je hieronder kunt zien, maakt de postgres01-server geen deel meer uit van de cluster.

Checking the PostgreSQL Cluster members via patronictl

5. Schakel terug naar de clientmachine en voer de onderstaande psql-opdracht uit om verbinding te maken met de PostgreSQL-server via HAProxy.

psql -h 192.168.5.16 -p 5432 -U postgres
Connecting to the PostgreSQL server via HAProxy

6. Zodra verbonden, voer de volgende query uit om te controleren op welke huidige PostgreSQL-server je bent verbonden.

SELECT inet_server_addr() AS hostname;
quit

Als de failover succesvol is, ben je verbonden met een van de draaiende servers, die in dit geval postgres03 is.

Checking the PostgreSQL server IP address

Conclusie

Door aan deze reis te beginnen, dompelde je jezelf onder in de complexiteiten van het verzekeren van hoge beschikbaarheid voor je PostgreSQL-database, waarbij je de krachtige combinatie van Patroni en HAProxy gebruikte. Naadloos navigerend door de opzetfasen van PostgreSQL en Patroni, heb je behendig de nuances van het configureren van de etcd-server aangepakt.

Je orchestratievaardigheden kwamen naar voren toen je een veerkrachtige PostgreSQL-cluster bouwde met Patroni en de kunst van het load balancen met HAProxy fijnafstemde. De climax van dit avontuur met hoge inzet was het grondig testen van de failovercapaciteiten van je PostgreSQL-cluster.

Overweeg je expertise uit te breiden terwijl je terugkijkt op je prestaties bij het opzetten van een robuuste en fouttolerante PostgreSQL-omgeving. Waarom verken je niet de implementatie van Patroni met Kubernetes voor een dynamischer omgeving? Of verdiep je in de complexiteiten van het opzetten van PostgreSQL High Availability over meerdere datacenters?

Source:
https://adamtheautomator.com/patroni/