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 22/09/2017 17:34:11

ruizsebastien
Membre

[RESOLU] [PAF v2.2.0] instance "pgsqld" is not listening

Bonjour,

Je suis en train de tester la version 2.2.0 de PAF.

J'ai fait une installation calquée sur celle que j'avais faite (et réussie) en v2.1.0.
La réplication fonctionne et les instances sont arrêtées au moment de la création des ressources pour postgresql.
J'ai checké pg_hba.conf, postgresql.conf, .pgpass, recovery.conf.pcmk : tout semble ok et en tout cas conforme à la conf du cluster qui existe déjà en v2.1 (sur d'autres serveurs).

Tout va bien jusqu'à ce que je créais ces ressources :

pcs -f clusterCRM.xml resource create pgsqld ocf:heartbeat:pgsqlms \
    bindir=/logiciels/postgres/product/9.3/bin pgdata=/P01CRMP02_1/admin     \
    op start timeout=60s                                         \
    op stop timeout=60s                                          \
    op promote timeout=30s                                       \
    op demote timeout=120s                                       \
    op monitor interval=15s timeout=10s role="Master"            \
    op monitor interval=16s timeout=10s role="Slave"             \
    op notify timeout=60s                                        \
   
pcs -f clusterCRM.xml resource master pgsql3-ha pgsqld \
    master-max=1 master-node-max=1                  \
    clone-max=3 clone-node-max=1 notify=true

pcs -f clusterCRM.xml constraint colocation add pgsql-master-ip with master pgsql3-ha INFINITY;
pcs -f clusterCRM.xml constraint order promote pgsql3-ha then start pgsql-master-ip symmetrical=false;
pcs -f clusterCRM.xml constraint order demote pgsql3-ha then stop pgsql-master-ip symmetrical=false;

à ce moment là le serveur pouj-pgsql-6 s'arrête (fencing) et le pouj-pgsql-5 est déclaré comme slave (l'instance est ouverte en read only).

[root@pouj-pgsql-5 cluster]# pcs status --full
Cluster name: cluster_xxx_CRM2
Stack: corosync
Current DC: pouj-pgsql-5.xxx.lan (1) (version 1.1.16-12.el7_4.2-94ff4df) - partition with quorum
Last updated: Fri Sep 22 17:25:05 2017
Last change: Fri Sep 22 15:58:58 2017 by root via cibadmin on pouj-pgsql-5.xxx.lan

2 nodes configured
6 resources configured

Node pouj-pgsql-5.xxx.lan (1): UNCLEAN (online)
OFFLINE: [ pouj-pgsql-6.xxx.lan (2) ]

Full list of resources:

fence_vm_pouj-pgsql-5.xxx.lan    (stonith:fence_vmware_soap):    Stopped
fence_vm_pouj-pgsql-6.xxx.lan    (stonith:fence_vmware_soap):    Started pouj-pgsql-5.xxx.lan
pgsql-master-ip        (ocf::heartbeat:IPaddr2):       Started pouj-pgsql-5.xxx.lan
Master/Slave Set: pgsql3-ha [pgsqld]
     pgsqld     (ocf::heartbeat:pgsqlms):       FAILED pouj-pgsql-5.xxx.lan
     pgsqld     (ocf::heartbeat:pgsqlms):       Stopped
     pgsqld     (ocf::heartbeat:pgsqlms):       Stopped
     Stopped: [ pouj-pgsql-6.xxx.lan ]

Node Attributes:
* Node pouj-pgsql-5.xxx.lan (1):

Migration Summary:
* Node pouj-pgsql-5.xxx.lan (1):
   pgsqld: migration-threshold=5 fail-count=1000000 last-failure='Fri Sep 22 15:59:02 2017'

Failed Actions:
* pgsqld_stop_0 on pouj-pgsql-5.xxx.lan 'unknown error' (1): call=37, status=complete, exitreason='none',
    last-rc-change='Fri Sep 22 15:59:02 2017', queued=0ms, exec=76ms


PCSD Status:
  pouj-pgsql-6.xxx.lan: Online
  pouj-pgsql-5.xxx.lan: Online

Daemon Status:
  corosync: active/disabled
  pacemaker: active/disabled
  pcsd: active/enabled

voici les erreurs remontées pour la partie postgresql :

pgsqlms(pgsqld)[4067]:  2017/09/22_15:59:01  ERROR: _confirm_stopped: instance "pgsqld" is not listening, but the process referenced in postmaster.pid exists
pgsqlms(pgsqld)[4067]:  2017/09/22_15:59:01  ERROR: pgsql_start: instance "pgsqld" is not running as a slave (returned 1)
pgsqlms(pgsqld)[4217]:  2017/09/22_15:59:02  ERROR: _confirm_stopped: instance "pgsqld" is not listening, but the process referenced in postmaster.pid exists
pgsqlms(pgsqld)[4217]:  2017/09/22_15:59:02  WARNING: pgsql_stop: unexpected state for instance "pgsqld" (returned 1)

dans le postgresql.conf des 2 instances, j'ai :

postgresql.conf:#unix_socket_directories = '/tmp'   
postgresql.conf:#unix_socket_group = ''                 
postgresql.conf:#unix_socket_permissions = 0777

Qu'est ce que j'ai pu louper ? et dans quelle direction dois-je chercher ?

Merci par avance.

Dernière modification par ruizsebastien (25/09/2017 15:05:46)

Hors ligne

#2 22/09/2017 17:36:35

ruizsebastien
Membre

Re : [RESOLU] [PAF v2.2.0] instance "pgsqld" is not listening

et j'ai ce message dans le slave :

2017-09-22 15:48:11 CEST [24729]: [1-1] user=,db= LOG:  database system was shut down in recovery at 2017-09-19 09:25:46 CEST
2017-09-22 15:48:11 CEST [24729]: [2-1] user=,db= LOG:  entering standby mode
cp: cannot stat â/P01CRMP02_1/archive/00000001000000000000001Dâ: No such file or directory
2017-09-22 15:48:11 CEST [24729]: [3-1] user=,db= LOG:  consistent recovery state reached at 0/1D000090
2017-09-22 15:48:11 CEST [24729]: [4-1] user=,db= LOG:  record with zero length at 0/1D000090
2017-09-22 15:48:11 CEST [24726]: [3-1] user=,db= LOG:  database system is ready to accept read only connections
2017-09-22 15:48:11 CEST [24734]: [1-1] user=,db= LOG:  started streaming WAL from primary at 0/1D000000 on timeline 1
2017-09-22 15:48:12 CEST [24784]: [1-1] user=postgres,db=postgres LOG:  statement: select version();
2017-09-22 15:48:12 CEST [24786]: [1-1] user=postgres,db=postgres LOG:  statement: show server_version;
2017-09-22 15:48:12 CEST [24788]: [1-1] user=postgres,db=postgres LOG:  statement: select to_char(pg_postmaster_start_time(),'DD/MM/YYYY - HH24HMI');
2017-09-22 15:48:12 CEST [24790]: [1-1] user=postgres,db=postgres LOG:  statement: select setting from pg_settings where name = 'archive_mode';
2017-09-22 15:48:53 CEST [24817]: [1-1] user=postgres,db=postgres LOG:  statement: select pg_last_xlog_receive_location();
2017-09-22 15:48:53 CEST [24819]: [1-1] user=postgres,db=postgres LOG:  statement: show server_version;
2017-09-22 15:48:55 CEST [24832]: [1-1] user=postgres,db=postgres LOG:  statement: select pg_last_xlog_receive_location();
2017-09-22 15:48:55 CEST [24834]: [1-1] user=postgres,db=postgres LOG:  statement: show server_version;
2017-09-22 15:49:08 CEST [24729]: [5-1] user=,db= LOG:  redo starts at 0/1D000090
2017-09-22 15:49:17 CEST [24878]: [1-1] user=postgres,db=postgres LOG:  statement: select pg_last_xlog_receive_location();
2017-09-22 15:49:17 CEST [24880]: [1-1] user=postgres,db=postgres LOG:  statement: show server_version;
2017-09-22 15:49:27 CEST [24898]: [1-1] user=postgres,db=postgres LOG:  statement: select pg_last_xlog_receive_location();
2017-09-22 15:49:27 CEST [24900]: [1-1] user=postgres,db=postgres LOG:  statement: show server_version;
2017-09-22 15:49:47 CEST [24734]: [2-1] user=,db= LOG:  replication terminated by primary server
2017-09-22 15:49:47 CEST [24734]: [3-1] user=,db= FATAL:  could not send end-of-streaming message to primary: no COPY in progress

cp: cannot stat â/P01CRMP02_1/archive/00000001000000000000001Fâ: No such file or directory
2017-09-22 15:49:47 CEST [24729]: [6-1] user=,db= LOG:  record with zero length at 0/1F000090
2017-09-22 15:49:47 CEST [24903]: [1-1] user=,db= FATAL:  could not connect to the primary server: FATAL:  the database system is shutting down

cp: cannot stat â/P01CRMP02_1/archive/00000001000000000000001Fâ: No such file or directory
2017-09-22 15:49:52 CEST [24919]: [1-1] user=,db= FATAL:  could not connect to the primary server: could not connect to server: Connection refused
                Is the server running on host "192.168.12.43" and accepting
                TCP/IP connections on port 5433?

2017-09-22 15:49:53 CEST [24726]: [4-1] user=,db= LOG:  received fast shutdown request
2017-09-22 15:49:53 CEST [24726]: [5-1] user=,db= LOG:  aborting any active transactions
2017-09-22 15:49:53 CEST [24731]: [1-1] user=,db= LOG:  shutting down
2017-09-22 15:49:53 CEST [24731]: [2-1] user=,db= LOG:  database system is shut down

Hors ligne

#3 24/09/2017 14:25:09

ioguix
Administrateur

Re : [RESOLU] [PAF v2.2.0] instance "pgsqld" is not listening

Bonjour,

D'après les log, pgsqlms n'arrive pas à se connecter à l'instance (il utilise "pg_isready") et pourtant "pg_ctl" lui indique bien que l'instance est démarrée ("postmaster.pid" présent et correspond bien à un processus postgres).

Je pense donc que pgsqlms n'arrive simplement pas à se connecter aux instances. Soit car il tente de se connecter au mauvais endroit, soit à cause d'un firewall (impossible si via le socket).

Je constate que le bout de conf que vous présentez à propos du socket est commenté. Néanmoins, il se peut tout à faire le socket soit bien situé dans "/tmp" (emplacement par défaut utilisé par pgsqlms). Avez-vous bien vérifié que tout est OK de ce coté là ?

Notez que si pouj-pgsql-5 est déclaré comme slave, c'est simplement car il n'existe aucune possibilité de l'isoler. Le nœud est bien marqué UNCLEAN et pgsqld FAILED (car pgsqlms n'a probablement pas pu s'y connecter donc).


Jehan-Guillaume (ioguix) de Rorthais
www.postgresql.org | www.postgresql.fr
www.dalibo.org | www.dalibo.com

Hors ligne

#4 25/09/2017 13:47:44

ruizsebastien
Membre

Re : [RESOLU] [PAF v2.2.0] instance "pgsqld" is not listening

bonjour,

Merci pour la réponse.
Les infos sur le socket dans postgresql.conf ne sont pas commentées (il s(agit du résultat d'un grep).

Le firewall (firewalld de centos7) est désactivé.

De plus la replication en streaming fonctionne avant la mise en place du cluster HA.

Au niveau des sockets ils sont bien dans /tmp :
.s.PGSQL.5433.lock
.s.PGSQL.5433
et bizarrement sur les 2 serveurs alors que le pouj-pgsql-6 a été éjecté du cluster et arrêté.

Je ne comprends pas.

Hors ligne

#5 25/09/2017 14:44:53

ioguix
Administrateur

Re : [RESOLU] [PAF v2.2.0] instance "pgsqld" is not listening

Bonjour,

Les infos sur le socket dans postgresql.conf ne sont pas commentées (il s(agit du résultat d'un grep).

Je ne vois pas comment grep pourrait ajouter des '#' tout seul devant les lignes...Mais bon, de toute façon, les sockets sont aux bons endroits, donc ce n'est pas bien important.

Au niveau des sockets ils sont bien dans /tmp :
.s.PGSQL.5433.lock
.s.PGSQL.5433

Vous n'utilisez pas le port par défaut...et je ne vois pas ce port 5433 apparaître dans la définition de votre ressource dans pacemaker. Game over smile


Jehan-Guillaume (ioguix) de Rorthais
www.postgresql.org | www.postgresql.fr
www.dalibo.org | www.dalibo.com

Hors ligne

#6 25/09/2017 14:59:26

ruizsebastien
Membre

Re : [RESOLU] [PAF v2.2.0] instance "pgsqld" is not listening

ah bon sang...
quel boulet...

Merci je vois ça.

Plus c'est gros et moins on le voit...

Dernière modification par ruizsebastien (25/09/2017 15:00:55)

Hors ligne

#7 25/09/2017 15:09:30

ruizsebastien
Membre

Re : [RESOLU] [PAF v2.2.0] instance "pgsqld" is not listening

Voilà ça marche :-)

Pour ceux qui rencontreraient le même problème, il ne faut pas oublier d'ajouter pgport dans l'ordre de création de la resource quand vous n'utulisez pas le port par défaut (5432).
Exemple :

pcs -f clusterCRM.xml resource create pgsqld ocf:heartbeat:pgsqlms \
    bindir=/logiciels/postgres/product/9.3/bin pgport=5433 pgdata=/xxx/admin     \
    op start timeout=60s                                         \
    op stop timeout=60s                                          \
    op promote timeout=30s                                       \
    op demote timeout=120s                                       \
    op monitor interval=15s timeout=10s role="Master"            \
    op monitor interval=16s timeout=10s role="Slave"             \
    op notify timeout=60s                                        \

Merci Jehan-Guillaume pour l'oeil avisé.

Hors ligne

#8 25/09/2017 15:34:49

ioguix
Administrateur

Re : [RESOLU] [PAF v2.2.0] instance "pgsqld" is not listening

Excellent !


Jehan-Guillaume (ioguix) de Rorthais
www.postgresql.org | www.postgresql.fr
www.dalibo.org | www.dalibo.com

Hors ligne

Pied de page des forums