Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
Merci Ioguix pour ta réponse tres clair.
Et merci à vous 3 pour vos réponses très clair et détailler.
Je pense que Patroni n'a pas finit de me donner du fils à retordre mais c'est assez intéressant de découvrir de nouveau produit et leur limite ....
Bonne journée à tous.
Katia
Perso je pense que quand il est tout seul cela reviens à dire que postgresql se retrouve en mode standolone ... Il faut juste faire attention de pas planter ce leader ou si il s’arrête de le redemarrer en 1er pour ne pas perdre ce qu'on a rajouté comme donnée dedans ....
La surveillance du cluster devient primordial.
Le MOE applicatif est en train de tester les limites de patroni pour voir si il a des régressions par rapport à son architecture precedente qui etait du safekit/postgresql loadbalancé à travers une vip .... donc il test tout les cas de figure possible.
Merci de votre implication et vos réponses.
Bonne fin de journée
Katia
Sébastien,
Normalement patroni devrai se mettre en read-only car il n y a qu'un noeud de démarrer ? le corrum n'est plus bon vu que c'est normalement n+1 et la je n'ai que 1 serveur sur 3 de démarrer.
Cela ne viendrai pas d'un pb entre etcd et Patroni qui concidere quand meme les 3 membres present bien que 2 sont arreté?
rjuju:
Ma conf:
-----------------------------
patroni.yml
------------------------------------
scope: clusterp03
namespace: /service/ # valeur par défaut
name: membre2-p03
restapi:
listen: IP_PATRONI:8008
connect_address: IP_PATRONI:8008
log:
level: INFO
dir: /var/log/patroni/
etcd:
hosts:
- IP_ETCD1:2379
- IP_ETCD2:2379
- IP_ETCD3:2379
username: root
password: Supp0rt
protocol: http
bootstrap:
dcs:
ttl: 30
loop_wait: 10
retry_timeout: 10
maximum_lag_on_failover: 1048576
postgresql:
use_pg_rewind: true
use_slots: true
parameters:
archive_command: 'cp %p /bases/pgsql/14/var/journaux/%f'
archive_mode: true
archive_timeout: 1800
effective_cache_size: 1536MB
hot_standby: true
logging_collector: true
log_directory: /bases/pgsql/14/var/log/
log_file_mode: 0640
log_filename: 'postgresql-%d.log'
log_truncate_on_rotation: true
log_rotation_age: 1440
log_rotation_size: 0
log_checkpoints: true
log_connections: true
log_disconnections: true
log_error_verbosity: verbose
log_hostname: true
log_line_prefix: '%t [%p]: [%l-1] '
log_lock_waits: true
log_temp_files: 0
log_timezone: 'Europe/Paris'
max_connections: 100
restore_command: 'cp /bases/pgsql/14/var/journaux/%f %p'
shared_buffers: 512MB
wal_level: replica
work_mem: 2MB
dynamic_shared_memory_type: posix
max_worker_processes: 1
max_parallel_workers: 1
hot_standby: true
max_wal_senders: 10
max_replication_slots: 5
initdb:
- encoding: UTF8
- data-checksums
pg_hba:
- host all all all scram-sha-256
- host replication replication all scram-sha-256
- local all postgres trust
users:
dba:
password: dba_password
options:
- createrole
- createdb
admin:
password: admin
options:
- createrole
- createdb
commvault:
password: hotbackup
postgresql:
listen: "*:5434"
connect_address: IP_PATRONI:5434
data_dir: /bases/pgsql/14/data/clusterp03
bin_dir: /usr/pgsql-14/bin
authentication:
replication:
username: replication
password: PWD_REPLICATION
superuser:
username: postgres
password: PWD_POSTGRES
rewind:
username: rewinder
password: PWD_REWINDER
parameters:
unix_socket_directories: '/var/run/postgresql'
basebackup:
max-rate: "100M"
checkpoint: "fast"
watchdog:
mode: automatic
device: /dev/watchdog
safety_margin: 5
tags:
nofailover: false
noloadbalance: false
clonefrom: false
nosync: false
----------------------------------
etcd.conf:
-----------------------------
ETCD_DATA_DIR="/logi/etcd/"
ETCD_NAME="etcd-1"
ETCD_LISTEN_PEER_URLS="http://IP-ETCD1:2380"
ETCD_LISTEN_CLIENT_URLS="http://IP_ETCD1:2379"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://IP_ETCD1:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://IP_ETCD1:2379,http://IP_ETCD2:2379,http://IP_ETCD3:2379"
ETCD_INITIAL_CLUSTER="etcd-1=http://IP_ETCD1:2380,etcd-2=http://IP_ETCD2:2380,etcd-3=http://IP_ETCD3:2380"
ETCD_INITIAL_CLUSTER_TOKEN="ETCD-PreProd"
ETCD_INITIAL_CLUSTER_STATE="new"
--------------------------------------------------------------------------
ce que je fais:
je démarre les 3 membres patroni depuis les service (systemctl start patroni.service) par une connexion putty sur chaque serveur.
je me connecte à l'utilisateur postgresql depuis le membre1
je lance la commande :
psql postgresql://postgres@serveur1:Port,serveur2:port,serveur3:port/postgres?target_session_attrs=read-write
je fais des insert
j'arrete 2 des membres du cluster à partir d'autre fenetre putty.
sur ma session lancé precedemment je continue à faire des insert.
Cela passe ....
-----------------------------
voila voila tout le detail ....
Cordialement
KAtia
bonjour Julien,
alors oui si mon leader switch et que j'ai encore 2 ou 3 membres je veux pas perdre ma connexion en cours et continué à faire des insertion .... en mettant primary à la place read-write ca fonctionne. j'ai juste 1 mezssage d'erreur et je peux continué à faire des insert/update etc....
Mais si je n'ai qu'un seul membre je veux passé en read-only .... et donc perdre ma connexion à la base ....
la si je n'ai qu'un membre mon patroni reste en mode leadrt ce qui n'est pas normal.
----------------------
root@div6sv000198:/var/log/patroni# patronictl -c /etc/patroni/patroni.yml topology
+ Cluster: clusterp03 (7216717851421801304) --+---------+-----+-----------+
| Member | Host | Role | State | TL | Lag in MB |
+--------------+---------------------+--------+---------+-----+-----------+
| p03-cluster1 | 172.16.171.152:5434 | Leader | running | 293 | |
+--------------+---------------------+--------+---------+-----+-----------+
et donc ma connexion reste et je peux faire des insertions ....
Cordialement
Katia
Bonjour Sébastien,
Merci de ta réponse .
Si je mets standby ou prefer-standby je peux pas faire d'insert car je dois etre sur le primaire pour cela ... meme si j'ai mon cluster complètement démarrer .
Si je mets any c'est comme read-write ou primary vu que ma connexion va d office sur le primaire .. si j'arrete les 2 standby ( simulation de perte de 2 sites) je peux toujours ecrire à travers ma session active ....
Donc il faut peu etre que je met autre chose que target_session_attrs dans ma ligne de commande mais quoi .... je seche .....
Cordialement
Katia
bonjour,
j'ai toujours mon soucis .... si j’arrête 2 membres de mon cluster ( simulation de perte de 2 site) ma conexion ne passe pas en read only mais reste bien en read-write ....
ma chaine de connection:
psql postgresql://postgres@serveur1:Port,serveur2:port,serveur3:port/postgres?target_session_attrs=read-write
j'ai juste un message me disant une erreur de connexion mais je peux continuer à faire des insert ...
--------------------------------------------------------
p03=> insert into depart values ('10','interne');
FATAL: terminating connection due to administrator command
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
The connection to the server was lost. Attempting reset: Succeeded.
p03=> insert into depart values ('10','interne');
INSERT 0 1
---------------------
Normalement j'aurai du passer en read only.... voyez vous ce que je dois faire ou rajouter dans ma chaine de connexion pour etre sur de pas resté en read-write ?
Merci d'avance de votre réponse.
Katia
Le moe applicatif fait des tests car son application fait des update en continue ... donc il veut voir jusqu ou il peut inséré ....
Il passe d'une configuration postgresql/ safekit à postgresql/Patroni.
Cordialement
Katia
re ...
Un collègue a trouvé cette commande :
psql postgresql://postgres@serveur1:Port,serveur2:port,serveur3:port/postgres?target_session_attrs=primary hostRecheckSeconds=2
et quand on arrete le leader et laissons les 2 autre membre du cluster démarré on peut continuer à faire des insertion de données ....
Par contre comportement surprenant de Patroni : quand on a 2 membres d'arrêté nous ne sommes plus en read-only mais toujours en read-write et donc on peut continuer à insérer des données comme si nous étions sur une base postgresql classique ....
surprenant .
Cordialement
Katia
Bonjour,
Ma connexion persiste car je ne fais qu'un changement de leader ou un arret du leader en cours et non pas un arret complet du cluster.
Vu que les 2 autres membres sont en standby lors de l 'arrêt du leader , un des 2 autres membres passe leader.
Cordialement
Katia
bon je m en doutais un peu
merci de votre réponse et bonne journée.
bonjour,
pour me connecté à partir de postgresql14 sur mes serveurs en cluster j'utilise la commande suivante pour etre sur de bien me connecté sur le primaire:
psql postgresql://postgres@serveur1:Port,serveur2:port,serveur3:port/postgres?target_session_attrs=read-write
hors si je fait des update dans ma base et le leader bascule je me retrouve en read-only et donc obligé de relancer une session...
message d'erreur dans l application:
Caused by: org.postgresql.util.PSQLException: ERROR: cannot execute UPDATE in a read-only transaction
ma question: est ce que vous connaissez un attribu à rajouter à ma connexion psql pour ne pas passer en mode read-only sur ma session si je change de leader et que je puisse continuer à faire des transactions de type DML?
Merci d'avance pour vos réponses.
Katia
La section bootstrap n'est utilisée qu'une fois : lors de la création initiale du cluster.
Ensuite ce sont les autres sections qui sont utilisées (dont celle qui s'appelle create_replica_method)
ok.
Merci de tes explications et de ton aide.
Bonne journée.
Katia
bonjour,
nous avons trouvez le problème ...cela vient du package poppler en version 20.11 qui n'est pas sur notre repository rhel8.6 ....
Une fois mis en place postgis s’installe sans soucis ....
bonne journée.
Katia
Bonjour,
je dois installer l extension postgis sur un postgresql 14 sur une vm rhel8.
Lorsque j’exécute le dnf install j'ai d'abord un refus car les packages hdf5 et xerces-c doivent d'abord etre installer ( package venant du repository EPEL) ...
puis une fois ceux-ci mis j'ai toute une list de librairie qui devrait etre installer avant de mettre postgis ....
En fouillant sur le web j'ai trouver la doc d'installation de postgis et dedans ils parlent de faire un " config-manager --set-enabled PowerTools"
Savez vous à quoi correspond ce PowerTools ? ce qu'il contient et son utilité pour postgis ???
est ce que vous avez deja installer un postgis sur postgresl14 et quel methode avez vous suivit ?
ci-dessous les librairie demandé apres avoir installé hdf5 et xerces-c
------------------------------------------------------------------------------------
Error:
Problem: package postgis33_14-3.3.2-1.rhel8.x86_64 requires libgdal.so.31()(64bit), but none of the providers can be installed
- package postgis33_14-3.3.2-1.rhel8.x86_64 requires gdal35-libs >= 3.5.2, but none of the providers can be installed
- cannot install the best candidate for the job
- nothing provides gpsbabel needed by gdal35-libs-3.5.2-3.rhel8.x86_64
- nothing provides libfreexl.so.1()(64bit) needed by gdal35-libs-3.5.2-3.rhel8.x86_64
- nothing provides libcfitsio.so.7()(64bit) needed by gdal35-libs-3.5.2-3.rhel8.x86_64
- nothing provides libdf.so.0()(64bit) needed by gdal35-libs-3.5.2-3.rhel8.x86_64
- nothing provides libgta.so.1()(64bit) needed by gdal35-libs-3.5.2-3.rhel8.x86_64
- nothing provides libmfhdf.so.0()(64bit) needed by gdal35-libs-3.5.2-3.rhel8.x86_64
- nothing provides libnetcdf.so.15()(64bit) needed by gdal35-libs-3.5.2-3.rhel8.x86_64
- nothing provides netcdf needed by gdal35-libs-3.5.2-3.rhel8.x86_64
- nothing provides libarmadillo.so.10()(64bit) needed by gdal35-libs-3.5.2-3.rhel8.x86_64
- nothing provides armadillo needed by gdal35-libs-3.5.2-3.rhel8.x86_64
- nothing provides libkmlbase.so.1()(64bit) needed by gdal35-libs-3.5.2-3.rhel8.x86_64
- nothing provides libkmldom.so.1()(64bit) needed by gdal35-libs-3.5.2-3.rhel8.x86_64
- nothing provides libkmlengine.so.1()(64bit) needed by gdal35-libs-3.5.2-3.rhel8.x86_64
- nothing provides gpsbabel needed by gdal35-libs-3.5.3-1.rhel8.x86_64
- nothing provides libfreexl.so.1()(64bit) needed by gdal35-libs-3.5.3-1.rhel8.x86_64
- nothing provides libcfitsio.so.7()(64bit) needed by gdal35-libs-3.5.3-1.rhel8.x86_64
- nothing provides libdf.so.0()(64bit) needed by gdal35-libs-3.5.3-1.rhel8.x86_64
- nothing provides libgta.so.1()(64bit) needed by gdal35-libs-3.5.3-1.rhel8.x86_64
- nothing provides libmfhdf.so.0()(64bit) needed by gdal35-libs-3.5.3-1.rhel8.x86_64
- nothing provides libnetcdf.so.15()(64bit) needed by gdal35-libs-3.5.3-1.rhel8.x86_64
- nothing provides netcdf needed by gdal35-libs-3.5.3-1.rhel8.x86_64
- nothing provides libarmadillo.so.10()(64bit) needed by gdal35-libs-3.5.3-1.rhel8.x86_64
- nothing provides armadillo needed by gdal35-libs-3.5.3-1.rhel8.x86_64
- nothing provides libkmlbase.so.1()(64bit) needed by gdal35-libs-3.5.3-1.rhel8.x86_64
- nothing provides libkmldom.so.1()(64bit) needed by gdal35-libs-3.5.3-1.rhel8.x86_64
- nothing provides libkmlengine.so.1()(64bit) needed by gdal35-libs-3.5.3-1.rhel8.x86_64
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
--------------------------
Merci d'avance pour votre réponse .
Katia
re bonjour ...
Bonjour,
Mon problème avance et se résout petit à petit.
Déjà j’avais un problème de firewall ; Je l’ai complètement désactivé ….
Ensuite le problème du fs … en effet pour répliquer patroni supprime le répertoire récepteur de la base puis le recrée en même temps que la base… étant que c’est un fs la suppression est impossible d’où le message dans la log de patroni
OSError: [Errno 16] Device or resource busy: '/bases/pgsql/14/data' -> '/bases/pgsql/14/data_2023-02-28-14-45-13'
Enfin mon 3 eme problème concerne l’entrée pg_hba dans patroni.yml….
Quand on exécute la commande patronictl avec edit-config la section hba_conf n’apparait pas ….
Nous avons modifié le fichier patroni.yml mais cela n a pas été pris en compte … il a fallu passé par edit-config pour que cela le soit….
Petite question pourquoi la section pg_hba.conf dans le boostrap n’est pas prise en compte ?
en tout cas merci de vos aides .... car la je comprennais plus ( et mes collègues non plus) ...
bonjour
/bases/pgsql/14/data du noeud 2 est vide comme marqué plus haute. et le reinit à été fait fs vide .
si je fais le reinit patroni arreter il me dit que ig9-cluster2 n est pas un membre du cluster
--------------------------------------------------------------------------------------------------------------------------------
root@div2sv002597:/bases/pgsql/14/data# patronictl -c /etc/patroni/patroni.yml reinit clusterig9 ig9-cluster2
+ Cluster: clusterig9 (7191794644507281311) --+---------+----+-----------+
| Member | Host | Role | State | TL | Lag in MB |
+--------------+---------------------+--------+---------+----+-----------+
| ig9-cluster1 | 172.18.239.151:5434 | Leader | running | 2 | |
+--------------+---------------------+--------+---------+----+-----------+
Error: ig9-cluster2 is not a member of cluster
root@div2sv002597:/bases/pgsql/14/data#
--------------------------------------------------------------------------------------------------------------------------------------------
quand je verifie l etat de patroni arreter j'ai comme retour de log que pg_basebackup n arrive pas a se connecter au serveur 1
je ping et ça fonctionne ....
---------------------------------------------------------------------------------------------------------------------------------------------
root@div2sv002597:/bases/pgsql/14/data# systemctl status patroni
● patroni.service - Patroni high-availability PostgreSQL
Loaded: loaded (/etc/systemd/system/patroni.service; enabled; vendor preset: disabled)
Active: inactive (dead) since Tue 2023-02-28 08:55:50 CET; 4min 2s ago
Process: 21222 ExecStart=/usr/bin/patroni /etc/patroni/patroni.yml (code=exited, status=0/SUCCESS)
Main PID: 21222 (code=exited, status=0/SUCCESS)
Feb 28 04:29:55 div2sv002597 patroni[58538]: pg_basebackup: error: connection to server at "172.18.239.151", port 5434 failed: No route to host
Feb 28 04:29:55 div2sv002597 patroni[58538]: Is the server running on that host and accepting TCP/IP connections?
Feb 28 06:34:25 div2sv002597 patroni[32553]: pg_basebackup: error: connection to server at "172.18.239.151", port 5434 failed: No route to host
Feb 28 06:34:25 div2sv002597 patroni[32553]: Is the server running on that host and accepting TCP/IP connections?
Feb 28 08:55:46 div2sv002597 systemd[1]: Stopping Patroni high-availability PostgreSQL...
Feb 28 08:55:50 div2sv002597 systemd[1]: patroni.service: Succeeded.
Feb 28 08:55:50 div2sv002597 systemd[1]: Stopped Patroni high-availability PostgreSQL.
Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
root@div2sv002597:/bases/pgsql/14/data# ping 172.18.239.151
PING 172.18.239.151 (172.18.239.151) 56(84) bytes of data.
64 bytes from 172.18.239.151: icmp_seq=1 ttl=64 time=0.541 ms
64 bytes from 172.18.239.151: icmp_seq=2 ttl=64 time=0.498 ms
----------------------------------------------------------------------------------------------------------------------------------------------------
quand je demarre patroni:
-----------------------------------------------------------------------------------------------------------------------------------------------------
root@div2sv002597:/bases/pgsql/14/data# systemctl status patroni
● patroni.service - Patroni high-availability PostgreSQL
Loaded: loaded (/etc/systemd/system/patroni.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2023-02-28 09:03:35 CET; 3s ago
Main PID: 16681 (patroni)
Tasks: 6 (limit: 11200)
Memory: 28.9M
CGroup: /system.slice/patroni.service
└─16681 /usr/bin/python3 /usr/bin/patroni /etc/patroni/patroni.yml
Feb 28 09:03:35 div2sv002597 systemd[1]: Started Patroni high-availability PostgreSQL.
root@div2sv002597:/bases/pgsql/14/data#
------------------------------------------------------------------------------------------------------------------------
si je fais le reinit il me dis succes mais j ai le message d erreur busy dans la log ....
------------------------------------------------------------------------------------------------------------------------------
root@div2sv002597:/bases/pgsql/14/data# patronictl -c /etc/patroni/patroni.yml reinit clusterig9 ig9-cluster2
+ Cluster: clusterig9 (7191794644507281311) ---+---------+----+-----------+
| Member | Host | Role | State | TL | Lag in MB |
+--------------+---------------------+---------+---------+----+-----------+
| ig9-cluster1 | 172.18.239.151:5434 | Leader | running | 2 | |
| ig9-cluster2 | 172.18.239.153:5434 | Replica | stopped | | unknown |
+--------------+---------------------+---------+---------+----+-----------+
Are you sure you want to reinitialize members ig9-cluster2? [y/N]: Y
Failed: reinitialize for member ig9-cluster2, status code=503, (bootstrap from leader 'ig9-cluster1' already in progress)
Do you want to cancel it and reinitialize anyway? [y/N]: Y
Success: reinitialize for member ig9-cluster2
------------------------------------------------------------------------------------------------------------------------------------
/vat/log/patroni/patroni.log:
-------------------------------------------------------------------------------------------------------------------------------------
OSError: [Errno 16] Device or resource busy: '/bases/pgsql/14/data'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/patroni/postgresql/__init__.py", line 1047, in move_data_directory
os.rename(self._data_dir, new_name)
OSError: [Errno 16] Device or resource busy: '/bases/pgsql/14/data' -> '/bases/pgsql/14/data_2023-02-28-09-06-11'
-----------------------------------------------------------------------------------------------------------------------------------------
Je vais créé un nouveau cluster en utilsant non pas un fs mais un repertoire sous le fs voir si ca passe ..... ( comme mon 1er cluster).....
merci de votre aide
Katia
super il est passé leader
bon par contre j arrive pas a connecté le 2ème dessus maintenant ....
root@div2sv002597:/bases/pgsql/14/data# patronictl -c /etc/patroni/patroni.yml list
+ Cluster: clusterig9 (7191794644507281311) ---+---------+----+-----------+
| Member | Host | Role | State | TL | Lag in MB |
+--------------+---------------------+---------+---------+----+-----------+
| ig9-cluster1 | 172.18.239.151:5434 | Leader | running | 2 | |
| ig9-cluster2 | 172.18.239.153:5434 | Replica | stopped | | unknown |
+--------------+---------------------+---------+---------+----+-----------+
root@div2sv002597:/bases/pgsql/14/data# ll
total 0
sur le secondaire , j'ai lancer la commande suivante:
patronictl -c /etc/patroni/patroni.yml reinit clusterig9 ig9-cluster2
et dans la log patroni.log j'ai le message suivant:
OSError: [Errno 16] Device or resource busy: '/bases/pgsql/14/data/'
/bases/pgsql/14/data/ est un fs ... cela peu venir de la ????
merci de votre aide
Katia
bonjour,
Désolé j etais en week end prolongé ....
donc j'ai testé ta commande .... rien
voici le message que je reçois....
root@div2sv002596:/root# patronictl -c /etc/patroni/patroni.yml restart --role master clusterig9 ig9-cluster1
+ Cluster: clusterig9 (7191794644507281311) ---+---------+----+-----------+
| Member | Host | Role | State | TL | Lag in MB |
+--------------+---------------------+---------+---------+----+-----------+
| ig9-cluster1 | 172.18.239.151:5434 | Replica | running | | unknown |
| ig9-cluster2 | 172.18.239.153:5432 | Replica | stopped | | unknown |
+--------------+---------------------+---------+---------+----+-----------+
Error: No master among provided members
... je vais supprimé les entré dans etcd vois si ça permet de recréé le cluster .....
merci de votre aide.
Katia
en complement coté etcd:
-----------------------------
root@div2sv002487:/root# etcdctl --endpoints=$ENDPOINTS ls /service/clusterig9
/service/clusterig9/initialize
/service/clusterig9/members
/service/clusterig9/clusterig9
root@div2sv002487:/root# etcdctl --endpoints=$ENDPOINTS get /service/clusterig9
/service/clusterig9: is a directory
root@div2sv002487:/root# etcdctl --endpoints=$ENDPOINTS get /service/clusterig9/members
/service/clusterig9/members: is a directory
root@div2sv002487:/root# etcdctl --endpoints=$ENDPOINTS ls /service/clusterig9/members
root@div2sv002487:/root# etcdctl --endpoints=$ENDPOINTS ls /service/clusterig9/clusterig9
/service/clusterig9/clusterig9/members
/service/clusterig9/clusterig9/initialize
root@div2sv002487:/root# etcdctl --endpoints=$ENDPOINTS ls /service/clusterig9/clusterig9/members
/service/clusterig9/clusterig9/members/ig9-cluster1
/service/clusterig9/clusterig9/members/ig9-cluster2
root@div2sv002487:/root# etcdctl --endpoints=$ENDPOINTS get /service/clusterig9/clusterig9/members/ig9-cluster1
{"conn_url":"postgres://172.18.239.151:5434/postgres","api_url":"http://172.18.239.151:8008/patroni","state":"running","role":"replica","version":"2.1.7"}
root@div2sv002487:/root# etcdctl --endpoints=$ENDPOINTS get /service/clusterig9/clusterig9/members/ig9-cluster2
{"conn_url":"postgres://172.18.239.153:5432/postgres","api_url":"http://172.18.239.153:8008/patroni","state":"stopped","role":"uninitialized","version":"2.1.7"}
root@div2sv002487:/root# etcdctl --endpoints=$ENDPOINTS get /service/clusterig9/clusterig9/initialize
7191794644507281311
root@div2sv002487:/root
-------------------------------------
sur mon autre cluster qui lui fonctionne :
root@div2sv002487:/root# etcdctl --endpoints=$ENDPOINTS ls /service/cluster-patroni-test
root@div2sv002487:/root# etcdctl --endpoints=$ENDPOINTS ls /service/cluster-patroni-test
/service/cluster-patroni-test/config
/service/cluster-patroni-test/history
/service/cluster-patroni-test/initialize
/service/cluster-patroni-test/leader
/service/cluster-patroni-test/members
/service/cluster-patroni-test/status
root@div2sv002487:/root#
donc j'ai vidé PGDATA:
j'ai relancé patroni sur la 2eme VM ....
PGDATA reste vide....
commande patronictl -c /Etc/patroni/patroni.yml list sur la 1ere VM:
root@div2sv002596:/root# patronictl -c /etc/patroni/patroni.yml list
+ Cluster: clusterig9 (7191794644507281311) ---+---------+----+-----------+
| Member | Host | Role | State | TL | Lag in MB |
+--------------+---------------------+---------+---------+----+-----------+
| ig9-cluster1 | 172.18.239.151:5434 | Replica | running | | unknown |
| ig9-cluster2 | 172.18.239.153:5432 | Replica | stopped | | unknown |
+--------------+---------------------+---------+---------+----+-----------+
sur la 2eme vm:
--------------------------------------------------------------------------------
root@div2sv002597:/bases/pgsql/14/data# systemctl start patroni
root@div2sv002597:/bases/pgsql/14/data# systemctl status patroni
● patroni.service - Patroni high-availability PostgreSQL
Loaded: loaded (/etc/systemd/system/patroni.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2023-02-23 14:36:15 CET; 8min ago
Main PID: 2207 (patroni)
Tasks: 5 (limit: 11200)
Memory: 31.1M
CGroup: /system.slice/patroni.service
└─2207 /usr/bin/python3 /usr/bin/patroni /etc/patroni/patroni.yml
Feb 23 14:36:15 div2sv002597 systemd[1]: Started Patroni high-availability PostgreSQL.
root@div2sv002597:/bases/pgsql/14/data# vim /var/log/patroni/patroni.log
root@div2sv002597:/bases/pgsql/14/data# ll
total 0
root@div2sv002597:/bases/pgsql/14/data#
-----------------------------------------------------------
le contenur de /var/log/patroni/patroni.log:
2023-02-23 14:53:54,089 INFO: Selected new etcd server http://172.16.132.9:2379
2023-02-23 14:53:54,095 INFO: No PostgreSQL configuration items changed, nothing to reload.
2023-02-23 14:53:54,103 INFO: Lock owner: None; I am ig9-cluster2
2023-02-23 14:53:54,107 INFO: waiting for leader to bootstrap
2023-02-23 14:54:04,104 INFO: Lock owner: None; I am ig9-cluster2
2023-02-23 14:54:04,107 INFO: waiting for leader to bootstrap
---------------------------------------------------------------------------------
merci rjuju,
Suppression de l instance sur la 2eme VM ( postgresql ne tourne pas car patroni ne se lance pas) suppression de pgdata , et redemarrer patroni j'ai deja fait. Le resultat de ça: patroni demarre bien mais ne rattache pas de postgresql et le pgdata reste vide.....
alors je te met comment ce passe l'installation....
je crée mon serveur via ansible ou sont descendu les package postgresql14-libs, postgresql14 et postgresql14-server.
apres cela j install les packages python3-certifi, patroni-etcd et jq...
je crée le fichier patroni.service et le fichier patroni.yml .
Dans le fichier patroni.yml je met bien la bonne adresse ip correspondant à mon serveur en face de connect_address
et mon name est bien différent sur chacune des vm : ig9-cluster1 sur la 1ere VM, ig9-cluster2 sur la 2eme ....
Je demarre la 1ere vm:
root@div2sv002596:/root# systemctl status patroni
● patroni.service - Patroni high-availability PostgreSQL
Loaded: loaded (/etc/systemd/system/patroni.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2023-02-22 17:38:09 CET; 20h ago
Main PID: 52614 (patroni)
Tasks: 11 (limit: 11200)
Memory: 80.1M
CGroup: /system.slice/patroni.service
├─52614 /usr/bin/python3 /usr/bin/patroni /etc/patroni/patroni.yml
├─52635 /usr/pgsql-14/bin/postgres -D /bases/pgsql/14/data --config-file=/bases/pgsql/14/data/postgresql.conf --listen_addresses=* --port=5434 --cluster_name=clusterig9 --wal_l>
├─52637 postgres: clusterig9: logger
├─52642 postgres: clusterig9: startup recovering 000000010000000000000003
├─52649 postgres: clusterig9: checkpointer
├─52650 postgres: clusterig9: background writer
└─52651 postgres: clusterig9: stats collector
je demarre la 2eme vm:
root@div2sv002597:/root# systemctl start patroni
root@div2sv002597:/root# systemctl status patroni
● patroni.service - Patroni high-availability PostgreSQL
Loaded: loaded (/etc/systemd/system/patroni.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Thu 2023-02-23 14:11:44 CET; 4s ago
Process: 59533 ExecStart=/usr/bin/patroni /etc/patroni/patroni.yml (code=exited, status=1/FAILURE)
Main PID: 59533 (code=exited, status=1/FAILURE)
Feb 23 14:11:43 div2sv002597 systemd[1]: Started Patroni high-availability PostgreSQL.
Feb 23 14:11:44 div2sv002597 systemd[1]: patroni.service: Main process exited, code=exited, status=1/FAILURE
Feb 23 14:11:44 div2sv002597 systemd[1]: patroni.service: Failed with result 'exit-code'.
le message d'erreur vu dans patroni.log:
2023-02-23 14:11:43,547 INFO: Selected new etcd server http://XXX.XX.XXX.XXX:2379
2023-02-23 14:11:43,553 INFO: No PostgreSQL configuration items changed, nothing to reload.
2023-02-23 14:11:43,575 CRITICAL: system ID mismatch, node ig9-cluster2 belongs to a different cluster: 7191794644507281311 != 7191807465559984021
ci-dessous mon fichier patroni.service et patroni.yml
exemple patroni.service
----------------------------------------------------------------------
[Unit]
Description=Patroni high-availability PostgreSQL
After=syslog.target network.target
[Service]
Type=simple
User=postgres
Group=postgres
ExecStart=/usr/bin/patroni /etc/patroni/patroni.yml
ExecReload=/usr/bin/kill -s HUP $MAINPID
KillMode=process
TimeoutSec=30
Restart=no
[Install]
WantedBy=multi-user.target
--------------------------------------------------------------------------------
exemple fichier patroni
------------------------------------------------------------------------------
scope: clusterig9
namespace: /service/clusterig9/ # valeur par défaut
name: ig9-cluster1
restapi:
listen: IP_SERVEUR:8008
connect_address: IP_SERVEUR:8008
log:
level: INFO
dir: /var/log/patroni/
etcd:
hosts:
- IP_ETCD1:2379
- IP_ETCD2:2379
- IP_ETCD3:2379
username: root
password: Supp0rt
protocol: http
bootstrap:
dcs:
ttl: 30
loop_wait: 10
retry_timeout: 10
maximum_lag_on_failover: 1048576
postgresql:
use_pg_rewind: true
use_slots: true
parameters:
wal_level: replica
hot_standby: on
max_wal_senders: 10
max_replication_slots: 5
initdb:
- encoding: UTF8
- data-checksums
pg_hba:
- host all all all scram-sha-256
- host replication replicator all scram-sha-256
users:
dba:
password: dba_password
options:
- createrole
- createdb
admin:
password: admin
options:
- createrole
- createdb
postgresql:
listen: "*:5434"
connect_address: IP_SERVEUR:5434
data_dir: /bases/pgsql/14/data
bin_dir: /usr/pgsql-14/bin
authentication:
replication:
username: replication
password: replicator
superuser:
username: postgres
password: postgres
rewind:
username: rewinder
password: rewinder
parameters:
unix_socket_directories: '.'
basebackup:
max-rate: "100M"
checkpoint: "fast"
watchdog:
mode: automatic
device: /dev/watchdog
safety_margin: 5
tags:
nofailover: false
noloadbalance: false
clonefrom: false
nosync: false
--------------------------------------------------------------------------------------
bonjour,
merci de votre réponse ... j'avais bien compris mais comment faire pour rattacher ma vm alors ou comment faire pour que ma base ai le même ID ?
j'ai essayé de supprimé le noyau postgresql , supprimé tout les package et reinstaller et j ai toujours le meme probleme ......
merci d avance pour vos aides....
bonjour,
j'ai un soucis quand je crée mon cluster patroni.... quand je crée ma 2eme VM elle ne se rattache pas à mon cluster et j’ai un message dans la log patroni qui dit :
" CRITICAL: system ID mismatch, node ig9-cluster4 belongs to a different cluster: 7191794644507281311 != 7202911683523250114"
mes fichiers patroni.yml sont identique avec juste le name et connect_address qui chage entre la 1ere vm et la 2eme
j'arrive pas à comprend le problème...
mon architecture: rhel8 et postgresql14: 3 vm etcd en cluster et 3 vm patroni/postgresql .....
pour info j ai deja un cluster patroni rattaché à mon cluster etcd qui lui fonctionne bien ....
merci d'avance pour votre aide car ça fait 1 semaine que je tourne en rond la dessus ....
super ... merci pour vos réponses....
Non je n'ai pas encore de connaissance sur etcd et je vais en formation installation patroni en novembre chez dalibo donc je verrai ce qu'ils proposent en contournement...
En attendant je vais tester avec etcd sur des serveurs rhel7 et les autres outils proposé.
Merci et bonne fin de journée.
Katia
Bonjour,
Je cherche a mettre en place patroni sur du rhel8 hors pour cela j'ai besoin de mettre etcd.
Sur RHEL8 etcd n'est plus disponible. Savez vous ou je peux trouver la distrib ??
Merci d'avance.
Pages : 1