Haute disponibilité ThingWorx > Exemple de déploiement d'une architecture HA PostgreSQL avec Pgpool-II > 4. Configuration de la base de données pour la réplication en streaming en tant que node0
4. Configuration de la base de données pour la réplication en streaming en tant que node0
Il est recommandé de disposer d'un utilisateur dédié pour l'accès à la réplication.
Etape 1
Créez un réplicateur d'utilisateurs.
psql
CREATE USER replicator REPLICATION LOGIN CONNECTION LIMIT 5
PASSWORD 'trUf6yuz2?_Gub';
\q
Etape 2
Modifiez postgresql.conf de façon à prendre en charge la réplication.
vim /db/postgres/postgresql.conf
Configurez les paramètres suivants :
Paramètrespostgres.conf pour node0
Ligne
Paramètre
Valeur
Noeud
1
listen_addresses
*
*inclut toutes les adresses. Modifiez cette valeur en fonction de vos exigences de sécurité.
2
port
5432
3
max_connections
150
4
archive_mode
le
5
wal_level
hot_standy
6
Fsync
le
7
synchronous_commit
le
8
wal_sync_method
open_sync
9
max_wal_sendors
10
10
synchronous_standby_names
'node1,node2'
11
hot_standby
le
12
hot_standby_feedback
le
13
wal_keep_segments
500
14
max_replication_slots
10
15
archive_command
'cp -f %p /db/node0archive/%f</dev/null'
16
checkpoint_segments
3
Etape 3
Exécutez le script start_replication.
Le script start_replication.sh permet de lancer le processus de réplication sur node0 :
vim /db/bin/start_replication.sh
avec le contenu suivant :
cp /db/postgres/postgresql.conf /db/bin/postgresql.conf
cp /db/postgres/pg_hba.conf /db/bin/pg_hba.conf
rm -rf /db/postgres
rm -rf /db/thingworx/*
pg_basebackup -h $1 -D /db/postgres -U replicator --xlog-method=stream
-v -P
cp /db/bin/postgresql.conf /db/postgres/postgresql.conf
cp /db/bin/pg_hba.conf /db/postgres/pg_hba.conf
Etape 4
Exécutez le script retargetMaster.sh pour node0.
Créez le script retargetMaster.sh :
vim /db/bin/retargetMaster.sh
avec le contenu suivant :
#!/bin/bash -x
NEW_MASTER_HOSTNAME=$1
NEW_ARCHIVE_FOLDER=$2
if grep -q "$1" /db/postgres/recovery.conf
then
echo $1 is current target,server does not need a restart, done!
else
#service postgresql stop
/usr/pgsql-10.x/bin/pg_ctl -D /db/postgres stop -m fast
#/db/bin/start_replication.sh $NEW_MASTER_HOSTNAME
# Write out new recovery.conf file
rm /db/postgres/recovery.conf
echo "standby_mode = 'on'" >> /db/postgres/recovery.conf
echo "primary_conninfo = 'port=5432 host=$NEW_MASTER_HOSTNAME user=replicator password=trUf6yuz2?_Gub sslmode=disable sslcompression=1 application_name=node0'" >> /db/postgres/recovery.conf
echo "trigger_file='/db/trigger'" >> /db/postgres/recovery.conf
echo "restore_command = 'cp -f $NEW_ARCHIVE_FOLDER/%f %p>/db/postgres/recovery.conf
echo "archive_cleanup_command = '/usr/bin/pg_archivecleanup $NEW_ARCHIVE_FOLDER %r>/db/postgres/recovery.conf
echo "recovery_target_timeline = 'latest'" >> /db/postgres/recovery.conf
/usr/pgsql-10.x/bin/pg_ctl -D /db/postgres -l /db/postgres.log start
echo target is $1 now
fi
Rendez ensuite les scripts exécutables :
chmod a+x /db/bin/start_replication.sh
chmod a+x /db/bin/reargetMaster.sh
Etape 5
Mettez à jour le paramètre pg_hba :
vim /db/postgres/pg_hba.conf
et mettez à jour les lignes suivantes :
host all all 10.10.0.0/16 trust
host replicator replicator 10.10.0.0/16 trust
Les paramètres d'hôte ci-dessus peuvent varier en fonction de vos exigences de sécurité. Par exemple, md5 peut être utilisé pour l'authentification plutôt que pour l'approbation.