Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#26 Re : Réplication » REPLICATION : création système de basculement haute disponibilité » 31/05/2017 14:41:36
Concernant la corruption, oui. Si une corruption silencieuse survient sur le maître, elle sera strictement copiée sur l'esclave. Comme le maître ne s'en rend pas compte, il ne peut pas l'empêcher. Et si le maître ne s'en rend pas compte, l'esclave ne le pourra pas plus, donc il ne pourra pas non plus l'en empêcher.
Je me permets d'apporter un peu de détail à cette phrase. Si la "corruption" est "logique", càd qu'il vient d'un bug applicatif, oui, elle sera répliquée sur le standby.
Si elle est matérielle néanmoins, comme par exemple au niveau disque ou mémoire, il y a peu de chance qu'elle ne soit pas détectée par le standby, la fiabilités des WAL (qui sont répliqués) reposant sur un contrôle CRC qui est vérifié à sa lecture.
#27 Re : Réplication » [RESOLU] [PAF] automatique failover postgresql / pacemaker /corosync » 22/03/2017 00:01:18
1 - quel agent de fencing installer ?
Tout dépend du type d'architecture on utilise (serveurs physiques, vmware, etc...)
Dans la doc on utilise l'agent fence-agents-virsh. Dans mon cas (vmware) il fallait utiliser l'agent fence-agents-vmware-soap.
Pour savoir si l'agent est déjà installé sur le serveur (pcs doit être installé au préalable) :pcs stonith list
Si l'agent nécessaire n'est pas dans la liste, il faut l'installer.
Une petite liste de correspondance des agents à utiliser selon l'architecture cible, ce serait vraiment royal
Oui, effectivement, le fencing est souvent compliqué à mettre en œuvre la première fois quand on découvre le principe. J'imagine que ça aurait plus sa place dans la page de documentation concernant le fencing justement et qui est pointée dans les pages de "Quick Start": https://dalibo.github.io/PAF/fencing.html
D'ailleurs, si vous avez un bout de doc concernant le fencing avec vmWare, je suis preneur pour l'intégrer dans cette page.
2 - corosync.conf
Après l'installation de corsync, le processus refuse de se lancer car il ne trouve pas le fichier corosync.conf.
Il faut donc le créer vide :cp /etc/corosync/corosync.conf.example /etc/corosync/corosync.conf
Alors ça c'est bizarre. L'une des grandes force ce pcs/pcsd est justement de ne pas avoir à toucher à ce fichier une seule fois. Tout se fait directement en ligne de commande avec pcs.
Le fichier corosync.conf est normalement généré par la commande "pcs cluster setup [...]" indiquée dans le quick start.
3 - recovery.conf.pcmk :
il manque la commande "restore_command = 'xxxxxxxxx' "
"Normal". La page de quick start n'a pas vocation à détailler la configuration et mise en œuvre de la réplication PostgreSQL. D'autant que le log shipping n'est pas du tout obligatoire dans le cadre de la réplication. Le quick start étant un "pied à l'étrier", nous avons fait le choix de la simplicité et de nous en passer afin d'éviter que le quick start ne devienne un "long and laborious start" ![]()
Et puis le log shipping requiers le plus souvent plusieurs prises de décisions concernant l'architecture (pousser les WAL ? Les tirer ? montage NFS ? SSH ? ...).
4 - pg_hba.conf :
Je me suis fait avoir sur cette partie. Il faut ajouter les lignes de la doc avant les autres lignes déjà existantes.
Il faut bien comprendre que le pg_hba.conf "avant PAF" doit fonctionner correctement pour la réplication et les connections applicatives.
Évidemment ne pas oublier d'alimenter le .pgpass si on est en authentification md5 (par exemple).
La partie mise en place de la replication postgresql dans la doc peut porter à confusion.
Par exemple, ça ne marchera pas si on ne met que ces 3 lignes dans le pg_hba.conf :host replication postgres 192.168.122.50/32 reject
host replication postgres $(hostname -s) reject
host replication postgres 0.0.0.0/0 trustIl manque au minimum les connexions "local"
Le quick start part du fichier pg_hba.conf par défaut, possédant déjà les connexions locales. Les commandes indiquées ne font qu'ajouter à la fin les règles concernant la réplication.
Néanmoins, je retiens que le chapitre sur PostgreSQL est peut-être un peu trop expéditif (malgré l'avertissement en début de chapitre). Je vais voir à l'étoffer un peu en tenant compte de ces remarques.
5 - clef d'authentification pour corosync :
Je ne sais plus exactement pourquoi, mais à un moment donné j'ai eu une erreur et en lisant la doc officielle de corosync, j'ai vu qu'il fallait créer une clef pour que les processus distants puissent dialoguer.
Je ne sais pas si c'est réellement indispensable mais dans mon cas ça m'a débloqué.cd /etc/corosync
corosync-keygen
chown root:root /etc/corosync/authkey
chmod 400 /etc/corosync/authkey
+ copier la clef sur l'autre serveur dans /etc/corosync/
Ce n'est pas nécessaire. Toute cette partie corosync me semble bizarre étant donné que sous les EL7, dans 90% des cas, il n'est plus nécessaire d'y toucher comme je l'indiquais plus tôt.
Voir le quick start sous Debian 8 (où le corosync.conf n'est pas généré par l'outil client) pour un exemple de fichier corosync, sans clé d'authentification.
6 - STONITH resources :
Le point le plus compliqué à mettre en oeuvre car les paramètres ne sont pas très intuitifs.
Une petite explication de chaque paramètre aurait été un vrai plus (vous me direz : RTFM...)
Ce qui m'a aidé : lancer la commande de fencing directement en mode verbeux et avant de créer la ressource pour voir ce qui ne va pas.
Par exemple dans le cadre de vmware :fence_vmware_soap --action=status --ip=(ip de l'hyperviseur) --plug=(nom du serveur tel qu'il est vu par l'hyperviseur) --username=(user créer dans l'hyperviseur qui a les droits d'agir sur la vm) --password=(passwd de ce user) --ssl --ssl-insecure -v
(ssl-insecure : si on a des problème de certificat sur l'hyperviseur)Les paramètres de la commande de fencing correspondent à ceci dans la commande de création de la ressource stonith :
pcmk_host_list = hostname complet du serveur
ipaddr = --ip
port = --plug
login = --username
passwd = --password
action = --action
C'est peut-être dans la page consacrée au fencing que ça aurait sa place donc.
dans la création de la ressource que signifie INFINITY ?
RTFM ? ![]()
Ce n'est pas la création de la ressource mais de la contrainte de positionnement. Avec une contrainte de location "avoids", plus le score est élevé, et plus la ressource évitera le nœud. Ici, "avoids srv1=INFINITY" signifie que la ressource ne doit jamais se trouver sur ce nœud.
Notez qu'il est possible d'inverser le résonnement en remplaçant "avoids" par "prefers". Auquel cas, plus le score est élevé, plus la ressource préférera démarrer sur le nœud indiqué.
7 - resource pgsqld :
Il faudrait décrire ce que signifie :master-max
master-node-max
clone-max
clone-node-max
notifyLa aussi je me suis fait avoir.
Bien vu, je vais détailler un peu cette partie.
Pour le reste, c'était clair.
Quelques commande qui pourrait aider à comprendre et débugger l'installation :
pcs status --full
crm_mon -Afr -1
corosync-cfgtool -s
pcs property show
pcs resource show --full
traces corosync dans /var/log/cluster/corosync.logEn tout cas merci encore pour votre aide et votre travail sur ce produit.
Merci à vous d'avoir prit le temps d'écrire ce long message de retour, bien détaillé et intéressant. Je ferais évoluer la doc quand j'aurais un peu de temps à y consacrer.
#28 Re : Réplication » [RESOLU] [PAF] automatique failover postgresql / pacemaker /corosync » 20/03/2017 14:59:23
Je vais capitalisé sur tout ça et je vais ensuite vous faire un retour (constructif) sur tous les problèmes et les interrogations que j'ai eu par rapport à la doc (quick start for centos7).
Excellent. Nous essaierons de faire avancer la doc dans le bon sens !
Merci encore pour votre aide.
Je vous en prie.
J'espère que tous nos échanges pourront servir à d'autres.
C'est l'intérêt des forums publiques, j'espère aussi du coup !
Pourriez-vous modifier le sujet de la discussion avec un tag "[résolu]" ? Merci !
#29 Re : Réplication » [RESOLU] [PAF] automatique failover postgresql / pacemaker /corosync » 20/03/2017 13:39:51
Je me demande par contre pourquoi le heartbeat est "stopped".
À noter que ce n'est pas un "heartbeat" qui est en stopped, mais un clone nommé "pgsqld" dans votre conf. Le reste de la ligne signifie que cette ressource est de type "OCF", distribué par "heartbeat" et dont le ressource agent s'appelle "pgsqlms", aussi indiqué sous la forme "ocf::heartbeat:pgsqlms" donc.
#30 Re : Réplication » [RESOLU] [PAF] automatique failover postgresql / pacemaker /corosync » 20/03/2017 13:35:33
En fait je connais bien postgresql depuis plusieurs années et mes aventures avec PAF ont été tellement semées d'embuches et d’échecs que j'en suis venu à douter de mes propres connaissances :-(
La haute dispo étant un sujet complexe et semé d'embûches (en tout cas pour avoir quelque chose de correcte), nous avons prit le parti dans PAF d'être très rigoureux, stricte et de contrôler l'environnement au maximum . Malheureusement, avec Pacemaker, ça se traduit souvent par du fencing ou des ressources qui ne démarrent pas. Mais lui non plus n'a pas le choix. À partir du moment où l'on souhaite une prise de décision non humaine et ne pas avoir de split brain, il faut en arriver là... ![]()
Je me demande par contre pourquoi le heartbeat est "stopped".
Je ne vois que deux nœuds dans ce cluster. Or, vous avez configuré votre nombre d'instance possible à 3 ( "clone-max=3" ) et autorisé qu'une seule instance par nœud ( "clone-node-max=1" ), ce qui est normal pour ce dernier.
Du coup, Pacemaker prévoit 3 instances pgsql (appelés "clones") dans le cluster, mais ne peux démarrer la 3ème nulle part, faute de place. Si vous rajoutez un nœuds à votre cluster (avec une instance PostgreSQL prête à démarrer et entrer en réplication) Pacemaker y placera donc ce 3ème clone.
En attendant, si vous ne construisez qu'un cluster à deux nœuds, il suffit simplement de modifier "clone-max=2".
#31 Re : Réplication » [RESOLU] [PAF] automatique failover postgresql / pacemaker /corosync » 18/03/2017 23:59:35
Bonjour,
Notez que je suis disposé à vous aider, mais disons que votre question sur le PGDATA m'a fait pensé que vous n'aviez pas lu la documentation. Plutôt que de longue phrases ici, autant profiter de la documentation que nous avons mis du temps à écrire ![]()
Pour le reste, si les pg_hba.conf présentés ici sont complets, il y a plusieurs erreurs. Pour commencer, les messages suivants de PostgreSQL indiquent qu'une connexion via un socket unix local est refusée car aucune ligne ne correspond dans le pg_hba:
FATAL: no pg_hba.conf entry for host "[local]", user "postgres", database "postgres", SSL off
J'imagine que ces connexions viennent de PAF...
Rajoutez donc en début de fichier la ligne suivante:
local all postgres peer
Reste que ça ne laisse pas beaucoup de place pour les connexions distantes d'une applications...
Ensuite, il semble que sur "pouj-pgsql-4", vous rejetiez les connexions de réplication non pas de "pouj-pgsql-4", mais de "pouj-pgsql-3"...
#32 Re : Réplication » [RESOLU] [PAF] automatique failover postgresql / pacemaker /corosync » 17/03/2017 12:34:44
que doit-on mettre dans "pgdata" ?
est-ce le répertoire où on trouve le postgresql.conf, les repertoires pg_xxlog, pg_clog, pg_tblspc, etc... ?
Je me permets de vous rediriger vers le chapitre concerné dans la documentation... : http://dalibo.github.io/PAF/configurati … parameters
Et plus globalement, pensez à revoir cette page en entier à propos des autres pré-requis ou configuration à respecter.
Encore une fois, si l'ensemble de la documentation n'est pas suffisante (les pages d'installation, configuration, fencing, les admin cookbook, les quick start), n'hésitez pas à l'étoffer ou à proposer des améliorations.
++
#33 Re : Réplication » [RESOLU] [PAF] automatique failover postgresql / pacemaker /corosync » 17/03/2017 11:33:06
Bonjour,
Ce paramètre est mauvais: "clone-node-max=2 ". Vous ne pouvez pas avoir deux instances fait parti du même groupe de réplication sur le même nœud...
Pour le reste, isolez les lignes qui commencent par "pgsqlms" dans vos logs, ce sont tous les messages de l'agent PAF lui même. Vous y trouverez peut-être d'autres réponses.
#34 Re : Réplication » [RESOLU] [PAF] automatique failover postgresql / pacemaker /corosync » 14/03/2017 17:41:26
Bonjour,
Oui, d'autres l'ont fait, mais il faut utiliser l'agent de fencing "fence_vmware" dans ce cas et non "fence_virsh".
#35 Re : PSQL » cet horrible $$ dans le create function » 10/02/2017 15:37:51
Tiens, j'oubliais, vous avez aussi ce format de disponible:
psql "dbname=$database_name options=--search_path=pg_catalog" <<'EOQ'
...
EOQ#36 Re : PSQL » cet horrible $$ dans le create function » 10/02/2017 15:33:34
Bonjour,
Vous pouvez aussi initialiser le search_path directement à la connexion. Eg.:
$ psql <<'EOQ'
SELECT current_setting($$search_path$$);
EOQ
current_setting
-----------------
"$user",public
(1 row)
$ PGOPTIONS="--search_path=pg_catalog" psql <<'EOQ'
SELECT current_setting($$search_path$$);
EOQ
current_setting
-----------------
pg_catalog
(1 row)#37 Re : Réplication » [RESOLU] [PAF] automatique failover postgresql / pacemaker /corosync » 06/02/2017 18:41:02
WARNING: no stonith devices and stonith-enabled is not false
Ne pas avoir de fencing disponible et conserver stonith-enabled activé vous empêchera de démarrer quoi que ce soit dans votre cluster. Si vous voulez mettre temporairement le fencing de coté **le temps de réussir à démarrer vos instance PostgreSQL à travers Pacemaker**, il faut désactiver "stonith-enabled". Mais gardez bien à l'esprit que sans fencing, votre cluster (que ce soit avec PAF ou autre chose) finira par manger vos données.
Dans vos fichiers "pg_hba.conf", les lignes suivantes ne servent à rien:
host replication postgres 192.168.12.34/24 reject
# ou
host replication postgres 192.168.12.35/24 reject
1- il me semble que l'hyperviseur ne se connectera jamais à PostgreSQL (en tout cas je n'en vois pas l'intérêt)
2- lorsque vous spécifiez l'adresse d'une machine, le masque doit être "/32". Dans le cas présent, vos deux règles rejettent toute la plage 192.168.12.0.
3- pensez à conserver ces reject **AVANT** toute autre règle d'authentification
En revanche, j'imagine que ces mauvaises règles sont issues d'une confusion avec les règles de reject pour la réplication de chaque machine vers elle même, donc de leur IP locale (et non celle de l'hyperviseur donc)... Par exemple, dans le cas de la machine pouj-pgsql-4, les règles doivent être:
host replication postgres 192.168.12.15/32 reject
host replication postgres 192.168.12.14/32 reject
#38 Re : Réplication » [RESOLU] [PAF] automatique failover postgresql / pacemaker /corosync » 06/02/2017 11:38:19
Juste pour être sûr : le user indiqué dans la commande de création du fencing "login=", dans mon cas il s'agit du user root du serveur local (POUJ-PGSQL-3 et POUJ-PGSQL-4).
Est-ce correct ?
Non. Nous parlons ici de fencing. L'intérêt du fencing est de forcer l'arrêt (ou le reboot) de la machine sans lui demander son avis. une connexion locale à la VM en tant que root ne servira donc à rien. Ici, il faut se connecter à l'hyperviseur (192.168.12.34 ou 192.168.12.35 chez vous) pour y éteindre la VM désignée. Le compte "login=" à utiliser est donc un utilisateur système sur l'hyperviseur ayant les droits d'administration sur les VM (les commandes que je vous ai fourni la dernière fois).
Il faut mettre les adresses IP locales (eth0) ou celles vu par l'hyperviseur ?
Il faut mettre l'adresse IP de l'hyperviseur...et indiquer pour le paramètre "port=" le nom de la VM hébergée sur l'hyperviseur et qu'il doit donc éteindre.
Pour le test de résolution, il manquait "pouj-pgsql-3" et "pouj-pgsql-4" dans les /etc/hosts des 2 serveurs... Maintenant ça ping correctement.
Est-ce suffisant ?
Pas forcément, PostgreSQL fait une résolution de nom ET une résolution de nom inverse (IP -> nom) pour s'assurer que la connexion entrante correspond à la règle pg_hba (voir doc postgres). Néanmoins, j'imagine que ça devrait fonctionner désormais.
Mais sinon, comme je l'écrivais, positionnez les adresses IP des machines plutôt que leur nom dans le pg_hba.conf pour les reject. Dans le cadre de votre maquette ce sera déjà un bon point de départ pour valider l'ensemble.
#39 Re : Réplication » [RESOLU] [PAF] automatique failover postgresql / pacemaker /corosync » 03/02/2017 17:05:11
Les commandes virsh que je vous ai fourni sont à exécuter sur l'hyperviseur comme indiqué dans mon message précédent, pas depuis les VM (comme le montre votre prompt).
#40 Re : Réplication » [RESOLU] [PAF] automatique failover postgresql / pacemaker /corosync » 03/02/2017 13:17:41
Bonjour,
Concernant le fencing, de ce que je vois, vous autorisez l'utilisateur "postgres" à se connecter en SSH à vos hyperviseurs 192.168.12.34 et 192.168.12.35 pour y arrêter/démarrer vos instances qui y sont nommées POUJ-PGSQL-3 et POUJ-PGSQL-4, c'est bien ça ?
Faites le test manuellement, l'utilisateur "postgres" a-t-il le droit de se connecter en SSH sur ces hyperviseur avec le mot de passe indiqué ? Si oui, que retourne la commande "virsh list --all" ? Les commandes suivantes fonctionnent-elles ?
# démarrer la VM
virsh start POUJ-PGSQL-3
# interrompre la VM (ps: ne la "détruit" pas)
virsh destroy POUJ-PGSQL-3Concernant votre configuration, j'ai trouvé une erreur bénigne dans les lignes suivantes:
pcs -f cluster1.xml resource master pgsql-ha pgsqld \
master-max=1 master-node-max=1 \
clone-max=3 clone-node-max=1 notify=trueLa paramètre "clone-max" doit être positionné à 2.
Assurez-vous que les noms de machine "pouj-pgsql-3" et "pouj-pgsql-4" que vous avez positionné dans le pg_hba.conf (sans le fqdn complet) sont bien résolus ainsi que leur reverse DNS. Sinon, positionnez les adresses IP des machines plutôt que leur nom dans le pg_hba.conf poru les reject.
Enfin, il semble que les erreurs aient eu lieues lors d'actions "stop" sur les deux instances. Pourriez-vous fournir les log de ce qui a pu se passer entre le démarrage du cluster et ce moment là ?
#41 Re : Réplication » [RESOLU] [PAF] automatique failover postgresql / pacemaker /corosync » 02/02/2017 11:28:53
Bonjour,
Désolé pour l'attente, j'étais indisponible ces deux derniers jours.
- le recovery.conf.pcmk doit-il être sur tous les serveurs (c'est ce que j'ai fait) ?
(Dans ma logique : je dirais non, le fichier ne doit être que sur le slave)
Oui, ce template doit se trouver sur chaque nœud, c'est ce qui est d'ailleurs effectué dans le quick start de la documentation: http://dalibo.github.io/PAF/Quick_Start … esql-setup
Néanmoins, je vais prendre en compte cette question et l'indiquer plus clairement dans la documentation.
Ce fichier n'est qu'un template qui sera copié en tant que "recovery.conf" que si l'instance locale doit démarrer comme un standby. Dans un cluster, avec le jeu des bascules, des failover, etc, n'importe quel nœud doit pouvoir être un standby. Et surtout, le plus important, Pacemaker impose que toute ressource démarre comme un "slave" lors du "start", puis sera ensuite éventuellement promue en "master" avec un "promote". Ce qui explique la présence de ce fichier de template partout.
- l'ip virtuelle est placée sur le serveur qui est sensé être slave (Le pouj-pgsql-4.xxx.lan).
En théorie, cette IP ne sera placé que sur le nœud hébergeant l'instance master. Une fois que vous aurez réglé le problème associé à la configuration de vos instances PostgreSQL, nous pourrons vérifier le comportement de l'adresse IP.
Concernant la localisation du master, PAF la définie au premier démarrage du cluster en cherchant quelle est la seule instance éteinte alors qu'elle était en production (== pas un standby). Pour tous les futurs démarrages du cluster, les scores associés depuis aux instances sont ensuite utilisés (1001 pour le master donc).
Enfin, concernant vos log:
* je suis étonné qu'ils commencent tous par "ERROR: ... the instance has probably crashed", au démarrage du cluster, les instances doivent être au propre
* de même, je suis étonné que 1 minute après ce démarrage tumultueux de chaque instance, elles soient découvertes comme de nouveaux brutalement interrompues (d'autant plus si le fencing ne fonctionne pas).
* comment se fait-il qu'à 13:06:57, les DEUX instances entrent en streaming replication ("started streaming WAL from primary at 3F/39000000 on timeline 1") avec un master alors qu'elles sont toutes deux en standby ?
=> vérifiez bien les règles "reject" dans vos fichiers "pg_hba.conf"
=> supprimez l'adresse IP 192.168.12.15 AVANT le démarrage du cluster
=> arrêtez votre cluster, démarrez les instances PostgreSQL avec un master et un standby, assurez-vous que la réplication fonctionne bien, arrêtez toutes vos instances proprement, puis démarrez Pacemaker partout.
Concernant le fencing, il semble que votre configuration soit mauvaise:
* "ipaddr" doit contenir l'IP d' l'hyperviseur hébergeant la VM concernée
* concernant le login="root", vous devez indiquer ici l'utilisateur de connexion SSH vers l'hyperviseur. N'importe quel utilisateur système ayant le droit d'allumer/éteindre une VM à travers l'outil virsh fera l'affaire. La documentation de PAF donne un exemple avec root, mais dans mes maquette, j'utilise un autre utilisateur. Voir: http://dalibo.github.io/PAF/fencing.htm … -and-virsh
* vérifiez bien que "port" contient le nom de la VM tel que configuré coté hyperviseur (peut-être différent du hostname)
Je pense que la plupart des réponses à vos questions se trouvent dans la documentation de PAF. Je suis preneur si certaines choses ne vous y semble pas clair ou manquante. Merci !
#42 Re : Réplication » [RESOLU] [PAF] automatique failover postgresql / pacemaker /corosync » 30/01/2017 11:26:35
Pour le quorum, dans les docs de pacemaker il est déconseillé de l'activer dans le cas d'une architecture avec seulement 2 serveurs
Ce n'est plus le cas avec les versions modernes de Corosync. Considérez la note à propos du quorum sur la page de documentation suivante: http://clusterlabs.org/doc/en-US/Pacema … lover.html
Cette note explique que la gestion du quorum est désormais possible dans un cluster à deux nœuds grâce à l'option "two_node" dans la configuration de Corosync. Ce paramètre active implicitement "wait_for_all".
Activer le quorum dans un cluster à deux nœuds est utile dans le scénario suivant par exemple:
* démarrage des deux nœuds du cluster, le CRM démarre les instances PostgreSQL, fait une promotion, etc
* après quelques temps, l'un des deux nœuds crash et se fait fencer
* grâce au paramètre "two_node" le nœud encore en vie conserve le quorum et PostgreSQL peut continuer à vivre dessus
* au redémarrage du second nœud, si ce dernier n'arrive pas à se joindre au reste du cluster (problème réseau ou autre), le paramètre "wait_for_all" l'empêche d'acquérir le quorum et il ne pourra démarrer aucune ressource.
#43 Re : Réplication » [RESOLU] [PAF] automatique failover postgresql / pacemaker /corosync » 29/01/2017 15:21:23
Bonjour,
Première chose importante, une fois que vous aurez fait fonctionner l'ensemble, avant de faire vos tests de bascules, activez le fencing et le quorum :
<configuration>
<crm_config>
<cluster_property_set id="cib-bootstrap-options">
...
<nvpair id="cib-bootstrap-options-stonith-enabled" name="stonith-enabled" value="false"/>
<nvpair id="cib-bootstrap-options-no-quorum-policy" name="no-quorum-policy" value="ignore"/>
</cluster_property_set>
</crm_config>Ensuite, à propos du problème lui même, vu la situation, je dirais qu'il y a une erreur ou un oubli dans la configuration des instances PostgreSQL et qui est détecté par PAF dans la fonction "pgsql_validate_all" (dans le fichier "/usr/lib/ocf/resource.d/heartbeat/pgsqlms").
J'imagine que les log de Pacemaker doivent en faire état explicitement. Cherchez dans le fichier "/var/log/cluster/corosync.log" toutes les lignes débutant par "pgsqlms" autour de l'heure de ces erreurs 'Fri Jan 27 13:04:58 2017' (commande à adapter à votre environnement):
grep "^pgsqlms" /var/log/cluster/corosync.logLe plus souvent, les erreurs concernent le template du recovery.conf, avec un mauvais "application_name" par exemple.
Rien à voir, mais validez bien aussi le contenu de votre pg_hba.conf afin de vous assurer que les règles "reject" y sont bien présentes et au bon endroit.
#44 Re : Réplication » Outils de failover automatique » 11/10/2016 15:10:51
Bonjour,
Comme l'écrivait Marc, la bascule auto est complexe à mettre en œuvre, d'autant plus pour un SGBD si on ne veut pas se retrouver dans une situation de split brain.
Le fait est que Pacemaker est une référence incontournable et qu'aucun autre projet sous Linux ne lui arrive à la cheville en terme de fonctionnalité. C'est exactement pour cette raison que PAF a été conçu comme une simple brique (ressource agent) de ce projet essentiel.
Pour rappel, jusqu'à présent, le fencing est la SEULE solution propre pour éviter les split brain, d'autant plus sur un cluster à deux nœud. Je ne vois aucune méthode de fencing dans repmgr ou dans pgpool. Ces deux projets laissent ce "détail" à la discrétion des administrateurs s'ils y pensent à travers des scripts maison à exécuter...
À propos d'avoir une IP secondaire qui se promène là où le maître se situe, là aussi repmgr laisse les administrateurs se débrouiller...C'est faisable, mais ça nécessite un peu d'huile de coude et au moins 2 scripts distincts (pour la bascule à chaud et en cas de redémarrage du serveur)
Coté pgpool, c'est pas beaucoup mieux. Ils ont **encore** ré-écrit la roue en intégrant un watchdog dans leur code. Ce dernier n'est évidement pas parfait et complet et a déjà un sacré historique en terme de bug. Un client m'a rapporté avoir abandonné le watchdog de pgpool car ce dernier provoquait des incidents sur le réseau local à cause de son activité ARP. Un autre à mis pgpool en haute disponibilité grâce à ... Pacemaker pour éviter qu'il soit un SPoF (ce dernier l'utilisait comme répartiteur de charge).
Donc oui, Pacemaker est complexe à comprendre et mettre en œuvre pour le nouveau venu, mais il y a quelques raison derrière ça. Et l'intérêt ensuite, c'est qu'il fait tout, vraiment TOUT, et le fait bien: gestion des ressources, failover, switchover, dépendances des ressources entre elles, fencing, watchdog, quorum, règles, etc. PAF n'est qu'une simple brique au dessus qui exploite au mieux ce que nous offre ce beau projet.
++
#45 Re : Général » Bug PostGreSQL : FULL OUTER JOIN » 09/04/2014 14:36:19
Disons que face à votre non contribution, je me posais bien des questions. Maintenant, je comprends que vous ne suivez simplement pas la liste de discussion, et donc la discussion à propos de votre bug.
je n'ai tout simplement pas eu le temps... Je ne consacre pas tout mon temps à PG... Je travaille aussi !
Quand à ma "non contribution" je considère qu'il s'agit de votre part d'une insukte. En effet une contribution pour éradiquer un bug qu'il ne vous plait pas de voir exposer est une insulte intellectuelles, à peu près équivalentes à celles des totalitarismes, qui ne supportent pas de voir exposer des défaillances dans leurs systèmes et préfèrent couper la tête à ceux qui les exposent !
Hahaha, génial ! Veuillez m'excuser, cher Monsieur, pour ma formulation qui pouvait prêter, je l'admet, à confusion. Ce que je pensais en écrivant cette phrase était :
Disons que face à votre non contribution à la suite de cette discussion, ...
Bon, vous aurez réussi à me faire sourire malgré tout :-)
Maintenant, j'arrête là, tout ça ne mène nulle part. Vous ne me semblez pas être dans vos meilleurs dispositions de toute façon et j'ai un métier aussi, figurez vous ;-)
#46 Re : Général » Bug PostGreSQL : FULL OUTER JOIN » 09/04/2014 13:59:41
ioguix a écrit :...pourquoi ne pas avoir répondu à sa demande de plan des autres moteurs publiquement ?
Ayant reçu un mail privé, j'ai répondu à ce mail. Est-ce mal ? Suis-je stupide ?
Oh, soit. Vous n'étiez pas obligé de savoir que pgsql-bugs est une liste de diffusion...
Ceci dit, notez que Tom Lane vous a répondu avec cette liste en copie et non en privé:
http://www.postgresql.org/message-id/19 … .pgh.pa.us
Avez-vous vu sa réponse à propos du plan de SQL Serveur que vous lui avez fourni en privé ?
Je n'ais pas eu de réponse en retour de mon mail envoyé en privé !
Si si, mais sur la liste en directe. Donc pour information:
http://www.postgresql.org/message-id/28 … .pgh.pa.us
Ouvrez vous un bug pour être constructif ou pour d'autres raisons ?
Et vous, avec ce post, pensez-vous réellement constructifs ? Moi je pense que vous maîtrisez l'art d'enculer les mouches...
D'autre part, il se trouve que je travaille et hier j'étais chez Alstom, un de mes clients, oub comme par hasard nous allons passer d'une base PostGreSQL qui donne des performances lamentables à une base SQL Server....
je suis revenu à 21h chez moi et j'avoue que je n'avais plus le temps de me consacrer àn PG...
Peut être êtes vous un fonctionnaire effectuant 32 h par semaine avec 8 semaines de congés payé.. pas moi, j'ai une boite à faire fonctionner et des cours à donner à des ingénieurs...
Disons que face à votre non contribution, je me posais bien des questions. Maintenant, je comprends que vous ne suivez simplement pas la liste de discussion, et donc la discussion à propos de votre bug.
Quant à votre expérience, je ne vois pas tellement quoi en faire sans le contexte. "Comme par hasard", il y a 1000 façon de détruire ce retour d'expérience. Je ne m'y emploierais pas car vu le changement de ton que vous avez initié, je ne souhaite pas argumenter avec vous.
À propos de mon temps de travail...pareille, trop simple à détruire, trop bas, je vous laisse dans votre imaginaire.
Ps: Pourquoi dieu est-il nécessaire de faire un screenshot pour récupérer un plan sous SQL Serveur ?!
Vous simplifiez de manière parfaitement stupide l'envoi que j'ai fait; J'espère que c'est par ignorance... Car si c'était pas volonté, cela prouverait votre niveau de mauvaise foi...
Je vous rassure, c'est par pure ignorance de SQL Server, sinon, je n'aurais pas posé la question. Et oui, je suis curieux, que voulez vous.
Donc pour faire simple :
les plans de requête détaillés sont fournit par SQL Server sous forme XML dont voici un exemple :...Trouvez vous cela plus facile que la représentation graphique ?
Bien entendu, c'est ce XML qui est interprété graphiquement. mais n'étant pas sur que Tom lane dispose de l'outil de lecture des plans, j'ai envoyé les deux par sécurité...
Ais-je bien fait ou suis-je à vos yeux un crétin ?
Vous auriez pu proposer les deux représentations par soucis du détail. Ceci dit, ça ne fait pas de vous un crétin, peut-être en faite vous un peu trop non ?
Ahahah
Avec tant d'humour, vos cours en école d'ingé doivent être tellement amusants !Effectivement, vous en avez tellement !!!
Mais ce qui est pire dans votre comportement, c'est que vous ne me donnez pas du tout envie de continuer à traiter ce sujet et donc votre mail aura l'effet inverse de celui escompté : j'abandonne la partie ! Ayant dû consacré 1h pour répondre à vos attaques infantiles, c'est 1h de perdu pour répondre à Tom lane...
Mh, votre choix. En attendant, le message est passé sur pgsql-bugs, donc si vous n'avez plus rien à y apporter hein...
#47 Re : Général » Bug PostGreSQL : FULL OUTER JOIN » 08/04/2014 10:31:00
Quand à Tom Lane, il m'a bien amusé en disant, "c'est pas bien grave, personne ne s'en sert..." !
Plutôt que de détourner le fond de la réponse de Tom Lane (PS: je n'ai pas l'intention d'en débattre avec vous), pourquoi ne pas avoir répondu à sa demande de plan des autres moteurs publiquement ?
Avez-vous vu sa réponse à propos du plan de SQL Serveur que vous lui avez fourni en privé ? Avez vous une réponse à lui apporter ? Ouvrez vous un bug pour être constructif ou pour d'autres raisons ?
Ps: Pourquoi dieu est-il nécessaire de faire un screenshot pour récupérer un plan sous SQL Serveur ?!
Pour historique :
http://www.postgresql.org/message-id/28 … .pgh.pa.us
http://www.postgresql.org/message-id/53 … dalibo.com
Peut être sous PG, les gens hésitent à faire des jointures de peur de casser le moteur...
Ahahah ![]()
Avec tant d'humour, vos cours en école d'ingé doivent être tellement amusants !
#48 Re : Général » un dernier trigger pour la route » 26/01/2012 12:29:56
J'imagine que ton trigger se déclenche avant la mise à jour (tout dépend de sa définition), donc si tu modifies les données de NEW, ce sont ces données qui seront in fine dans la table.
Ceci dit, on a tous (plus ou moins) été étudiant avant, avec le stress qui va avec et le manque de temps pour tout gérer. Mais ça n'empêche pas d'apprendre à lire une documentation en prenant son temps pour la comprendre pour éviter de perdre plus de temps ensuite à faire n'importe quoi...
Mes profs fouillaient internet pour comparer nos travaux avec de l'existant. Je te souhaite d'avoir des profs moins pointilleux, à la lecture de ce fil, à leur place je sortirais le colt.
PS: et on ne mord pas une main qui se tend vers toi et tente de t'aider en te pointant la bonne doc. Doc que tu n'avais probablement pas lue.
#49 Re : Publications » Nouvel article : Migration Oracle ou SQL Server vers PosteGreSQL - les » 12/10/2011 14:46:10
À propos des Hints, je vous propose d'aller en discuter avec les développeurs. Vous ne serez que le n-ième "DBA" Oracle qui sera venu les importuner à ce propos. Et pensez bien à les titiller avec les mêmes types de remarques que vous faites ici, histoire de pimenter un peu la discussion.
Moi, je vais m'installer confortablement devant ma mailing-list pgsql-hackers, prendre des popcorn et regarder si vous aurez des arguments différents de tous ces autres. À moins qu'ils vous balaient avec dédains en vous renvoyant à un simple lien [1] comme n'importe quel quidam...
En attendant, plutôt que de détailler et insister sur les (je cite) "grandes lacunes de PostgreSQL", vous pourriez plutôt titrer "Obstacles et différences à prévoir lors d'une migration vers PostgreSQL" et les façons de les contourner ou alors bien souvent...l'autre façon de faire dans le monde PostgreSQL.
Si je prends l'exemple des tablespaces, contrairement à Oracle, les développeurs de PostgreSQL ont décidés de ne pas ré-implémenter la roue. Il y a bien mieux à faire ailleurs. Ça vous demandera d'ôter vos œillères et aller voir coté système les solutions qui existent pour assurer le même type de souplesse...
Dommage, si vous passiez un quart de votre temps actuel accordé au pourissage pour écrire des choses constructives ou à participer de façon constructive à la communauté, on vous aurait peut-être cru quant à vos bons sentiments envers PostgreSQL.
#50 Re : Migration » migration oracle erreur expression de la fonction du FROM » 01/04/2011 14:46:54
normalement, avec une fonction SRF, la syntaxe suivante retourne tout le résultat dans un seul champs effectivement:
SELECT function (...)
Si vous voulez que chaque champs du type composite soit dans une colonne propre, utilisez la syntaxe suivante:
SELECT (function (...)).*;
Soit, avec l'exemple de Marc:
SELECT a.*, (b(test.a)).* from test;