PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : Réplication » chaine de connexion à un cluster Patroni / pgs14 » 07/09/2023 09:04:49

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

#2 Re : Réplication » chaine de connexion à un cluster Patroni / pgs14 » 06/09/2023 17:41:55

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

#3 Re : Réplication » chaine de connexion à un cluster Patroni / pgs14 » 06/09/2023 17:27:45

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

#4 Re : Réplication » chaine de connexion à un cluster Patroni / pgs14 » 06/09/2023 16:55:54

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

#5 Re : Réplication » chaine de connexion à un cluster Patroni / pgs14 » 06/09/2023 16:34:43

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 ..... sad

Cordialement
Katia

#6 Re : Réplication » chaine de connexion à un cluster Patroni / pgs14 » 06/09/2023 16:02:47

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

#7 Re : Réplication » chaine de connexion à un cluster Patroni / pgs14 » 30/08/2023 15:53:38

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

#8 Re : Réplication » chaine de connexion à un cluster Patroni / pgs14 » 30/08/2023 15:44:17

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

#9 Re : Réplication » chaine de connexion à un cluster Patroni / pgs14 » 30/08/2023 15:06:24

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

#10 Re : Réplication » chaine de connexion à un cluster Patroni / pgs14 » 30/08/2023 11:51:23

bon je m en doutais un peu smile
merci de votre réponse et bonne journée.

#11 Réplication » chaine de connexion à un cluster Patroni / pgs14 » 30/08/2023 11:15:23

katia
Réponses : 23

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

#12 Re : Réplication » creation d'un cluster patroni et impossible de rattacher les membres » 06/03/2023 16:19:59

ruizsebastien a écrit :

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

#13 Re : Installation » installation de l extension postgis sur un postgresql 14 » 06/03/2023 16:17:40

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

#14 Installation » installation de l extension postgis sur un postgresql 14 » 03/03/2023 13:08:56

katia
Réponses : 1

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

#15 Re : Réplication » creation d'un cluster patroni et impossible de rattacher les membres » 28/02/2023 16:05:02

re bonjour smile ...

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) ...

#16 Re : Réplication » creation d'un cluster patroni et impossible de rattacher les membres » 28/02/2023 10:10:10

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

#17 Re : Réplication » creation d'un cluster patroni et impossible de rattacher les membres » 27/02/2023 18:01:02

super il est passé leader big_smile
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

#18 Re : Réplication » creation d'un cluster patroni et impossible de rattacher les membres » 27/02/2023 12:02:51

bonjour,

Désolé j etais en week end prolongé smile....

donc j'ai testé ta commande .... rien sad
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

#19 Re : Réplication » creation d'un cluster patroni et impossible de rattacher les membres » 23/02/2023 16:11:03

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#

#20 Re : Réplication » creation d'un cluster patroni et impossible de rattacher les membres » 23/02/2023 15:55:53

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

---------------------------------------------------------------------------------

#21 Re : Réplication » creation d'un cluster patroni et impossible de rattacher les membres » 23/02/2023 15:19:23

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
--------------------------------------------------------------------------------------

#22 Re : Réplication » creation d'un cluster patroni et impossible de rattacher les membres » 23/02/2023 10:31:15

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....

#23 Réplication » creation d'un cluster patroni et impossible de rattacher les membres » 22/02/2023 17:02:02

katia
Réponses : 17

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 ....

#24 Re : Réplication » etcd et patroni sur rhel8 » 13/10/2022 16:51:03

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

#25 Réplication » etcd et patroni sur rhel8 » 13/10/2022 11:46:32

katia
Réponses : 5

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.

Pied de page des forums

Propulsé par FluxBB