{"id":8930,"date":"2022-03-11T07:23:51","date_gmt":"2022-03-11T06:23:51","guid":{"rendered":"https:\/\/blog.capdata.fr\/?p=8930"},"modified":"2022-03-11T07:23:51","modified_gmt":"2022-03-11T06:23:51","slug":"comparatif-des-gestionnaires-de-vip-dans-un-cluster-patroni-episode-2-vip-manager","status":"publish","type":"post","link":"https:\/\/blog.capdata.fr\/index.php\/comparatif-des-gestionnaires-de-vip-dans-un-cluster-patroni-episode-2-vip-manager\/","title":{"rendered":"Comparatif des gestionnaires de VIP dans un cluster Patroni : \u00e9pisode 2 (VIP-MANAGER)"},"content":{"rendered":"<a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-twitter nolightbox\" data-provider=\"twitter\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Twitter\" href=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F8930&#038;text=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"twitter\" title=\"Share on Twitter\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/twitter.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-linkedin nolightbox\" data-provider=\"linkedin\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Linkedin\" href=\"https:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F8930&#038;title=Comparatif%20des%20gestionnaires%20de%20VIP%20dans%20un%20cluster%20Patroni%20%3A%20%C3%A9pisode%202%20%28VIP-MANAGER%29\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"linkedin\" title=\"Share on Linkedin\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/linkedin.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-mail nolightbox\" data-provider=\"mail\" rel=\"nofollow\" title=\"Share by email\" href=\"mailto:?subject=Comparatif%20des%20gestionnaires%20de%20VIP%20dans%20un%20cluster%20Patroni%20%3A%20%C3%A9pisode%202%20%28VIP-MANAGER%29&#038;body=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20:%20https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F8930\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"mail\" title=\"Share by email\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/mail.png\" \/><\/a><p>Dans <a href=\"https:\/\/blog.capdata.fr\/index.php\/comparatif-des-gestionnaires-de-vip-dans-un-cluster-patroni-episode-1-keepalived\/\">l&#8217;article pr\u00e9c\u00e9dent<\/a>, nous avions \u00e9valu\u00e9 <em>keepalived <\/em>comme solution simple et g\u00e9n\u00e9raliste pour g\u00e9rer une VIP dans un cluster Patroni. <\/p>\n<p>Aujourd&#8217;hui nous allons tester une solution plus sp\u00e9cialis\u00e9e, <a href=\"https:\/\/github.com\/cybertec-postgresql\/vip-manager\/blob\/master\/README.md\">vip-manager<\/a> de <a href=\"https:\/\/www.cybertec-postgresql.com\/en\/\">Cybertec<\/a>. Cybertec est une entreprise bas\u00e9e en Autriche et contribue au d\u00e9veloppement de l&#8217;\u00e9cosyst\u00e8me PostgreSQL en proposant des outils notamment autour de la s\u00e9curisation avec du TDE,  du Data Masking ou encore de l&#8217;encryption de proc\u00e9dures PL\/PGSQL. <\/p>\n<p>Le fonctionnement de vip-manager est similaire \u00e0 keepalived: sur chaque noeud un service monitore le statut de leader maintenu par Patroni, et en fonction d&#8217;un changement de r\u00f4le, tombe la VIP sur le noeud qui devient Replica, ou la remonte sur celui qui devient Leader. La diff\u00e9rence, c&#8217;est qu&#8217;il est d\u00e9di\u00e9 \u00e0 Patroni \/ PostgreSQL alors que keepalived peut servir d&#8217;autres types de produits. <\/p>\n<h2>Sch\u00e9ma<\/h2>\n<p>La configuration sera la m\u00eame qu&#8217;avec keepalived, avec la m\u00eame VIP&#8230;<br \/>\n<img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/03\/vip-manager-1024x636.png\" alt=\"\" width=\"640\" height=\"398\" class=\"aligncenter size-large wp-image-8933\" srcset=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/03\/vip-manager-1024x636.png 1024w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/03\/vip-manager-300x186.png 300w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/03\/vip-manager-768x477.png 768w, https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/03\/vip-manager.png 1119w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<h2>Installation et configuration<\/h2>\n<p>L&#8217;installation se fait soit depuis les sources soit depuis un package RPM ou DEB disponible <a href=\"https:\/\/github.com\/cybertec-postgresql\/vip-manager\/releases\">sur le github de Cybertec<\/a>.<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@pgpat1:~# wget https:\/\/github.com\/cybertec-postgresql\/vip-manager\/releases\/download\/v1.0.1\/vip-manager_1.0.1-1_amd64.deb\r\nroot@pgpat1:~# dpkg -i vip-manager_1.0.1-1_amd64.deb \r\nSelecting previously unselected package vip-manager.\r\n(Reading database ... 31523 files and directories currently installed.)\r\nPreparing to unpack vip-manager_1.0.1-1_amd64.deb ...\r\nUnpacking vip-manager (1.0.1-1) ...\r\nSetting up vip-manager (1.0.1-1) ...\r\nCreated symlink \/etc\/systemd\/system\/multi-user.target.wants\/vip-manager.service \u2192 \/lib\/systemd\/system\/vip-manager.service.\r\n<\/pre>\n<p>Le fichier YAML de configuration par d\u00e9faut se trouve sous <em>\/etc\/default\/vip-manager.yml<\/em>:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@pgpat1:~# vi \/etc\/default\/vip-manager.yml \r\n(...)\r\ninterval: 1000\r\ntrigger-key: &quot;\/service\/pg-cluster\/leader&quot;\r\ntrigger-value: &quot;pgpat1&quot;\r\nip: 10.186.157.199 # the virtual ip address to manage\r\nnetmask: 24 # netmask for the virtual ip\r\ninterface: eth0 #interface to which the virtual ip will be added\r\nhosting-type: basic # possible values: basic, or hetzner.\r\ndcs-type: etcd # etcd or consul\r\ndcs-endpoints:\r\n  - http:\/\/127.0.0.1:2379\r\n  - https:\/\/10.186.157.60:2379\r\n  - https:\/\/10.186.157.216:2379\r\n  - https:\/\/10.186.157.3:2379\r\netcd-user: &quot;root&quot;\r\netcd-password: &quot;*******&quot;\r\nretry-num: 2\r\nretry-after: 250  #in milliseconds\r\nverbose: false\r\n<\/pre>\n<p>La liste des arguments est r\u00e9f\u00e9renc\u00e9e dans le <a href=\"https:\/\/github.com\/cybertec-postgresql\/vip-manager#Configuration\">github<\/a>, je ne m&#8217;attarde donc pas dessus, rien de particulier sinon ne pas se tromper dans l&#8217;URL qui sera test\u00e9e (<em>trigger-key<\/em>) et qui porte le format <em>namespace<\/em>\/<em>scope<\/em>\/leader, en r\u00e9f\u00e9rence aux param\u00e8tres de Patroni. Si namespace n&#8217;est pas indiqu\u00e9 dans le fichier <em>\/etc\/patroni\/patroni.yml<\/em>, sa valeur par d\u00e9faut sera <em>&#8216;service&#8217;<\/em>. Quant au scope, c&#8217;est le nom du cluster:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@pgpat1:~# grep scope \/etc\/patroni\/patroni.yml\r\nscope: pg-cluster\r\n<\/pre>\n<p>Faire la m\u00eame chose sur le noeud n\u00b02 (pgpat2 dans note cas) en adaptant la valeur de <em>trigger-value<\/em>, et red\u00e9marrer les services sur chaque noeud:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@pgpat1:~# systemctl restart vip-manager.service\r\n\r\nroot@pgpat1:~# systemctl status vip-manager.service\r\n\u25cf vip-manager.service - Manages Virtual IP for Patroni\r\n   Loaded: loaded (\/lib\/systemd\/system\/vip-manager.service; enabled; vendor preset: enabled)\r\n  Drop-In: \/run\/systemd\/system\/vip-manager.service.d\r\n           \u2514\u2500zzz-lxc-service.conf\r\n   Active: active (running) since Mon 2022-03-07 08:24:54 UTC; 7s ago\r\n Main PID: 4708 (vip-manager)\r\n    Tasks: 7 (limit: 4619)\r\n   CGroup: \/system.slice\/vip-manager.service\r\n           \u2514\u25004708 \/usr\/bin\/vip-manager --config=\/etc\/default\/vip-manager.yml\r\n\r\nMar 07 08:24:54 pgpat1 vip-manager[4708]:         trigger-key : \/service\/pg-cluster\/leader\r\nMar 07 08:24:54 pgpat1 vip-manager[4708]:         trigger-value : pgpat1\r\nMar 07 08:24:54 pgpat1 vip-manager[4708]:         verbose : false\r\nMar 07 08:24:54 pgpat1 vip-manager[4708]:         version : false\r\nMar 07 08:24:54 pgpat1 vip-manager[4708]: 2022\/03\/07 08:24:54 IP address 10.186.157.199\/24 state is false, desired false\r\nMar 07 08:24:54 pgpat1 vip-manager[4708]: 2022\/03\/07 08:24:54 IP address 10.186.157.199\/24 state is false, desired true\r\nMar 07 08:24:54 pgpat1 vip-manager[4708]: 2022\/03\/07 08:24:54 Configuring address 10.186.157.199\/24 on eth0\r\nMar 07 08:24:54 pgpat1 vip-manager[4708]: 2022\/03\/07 08:24:54 Sent gratuitous ARP reply\r\nMar 07 08:24:54 pgpat1 vip-manager[4708]: 2022\/03\/07 08:24:54 Sent gratuitous ARP request\r\nMar 07 08:24:54 pgpat1 vip-manager[4708]: 2022\/03\/07 08:24:54 IP address 10.186.157.199\/24 state is true, desired true\r\n<\/pre>\n<p>On peut alors v\u00e9rifier que la VIP est bien mont\u00e9e sur le Leader, et d\u00e9mont\u00e9e sur le Replica:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@ubuntu20:~# lxc list pgpat\r\n+--------+---------+-----------------------+-----------------------------------------------+-----------+-----------+\r\n|  NAME  |  STATE  |         IPV4          |                     IPV6                      |   TYPE    | SNAPSHOTS |\r\n+--------+---------+-----------------------+-----------------------------------------------+-----------+-----------+\r\n| pgpat1 | RUNNING | 10.186.157.60 (eth0)  | fd42:a4e7:fd78:5160:216:3eff:feaf:c4a5 (eth0) | CONTAINER | 0         |\r\n|        |         | 10.186.157.199 (eth0) |                                               |           |           |\r\n+--------+---------+-----------------------+-----------------------------------------------+-----------+-----------+\r\n| pgpat2 | RUNNING | 10.186.157.216 (eth0) | fd42:a4e7:fd78:5160:216:3eff:fe8c:9004 (eth0) | CONTAINER | 0         |\r\n+--------+---------+-----------------------+-----------------------------------------------+-----------+-----------+\r\n| pgpat3 | RUNNING | 10.186.157.3 (eth0)   | fd42:a4e7:fd78:5160:216:3eff:fe8c:fd27 (eth0) | CONTAINER | 0         |\r\n+--------+---------+-----------------------+-----------------------------------------------+-----------+-----------+\r\n<\/pre>\n<h2>Tests de bascule:<\/h2>\n<p>Comme pour keepalived, nous voulons tester le temps de bascule de la VIP. Nous allons cette fois lancer dans une boucle une connexion \u00e0 l&#8217;instance PostgreSQL chaque seconde, en nous alignant sur le temps de d\u00e9tection de changement d&#8217;\u00e9tat configur\u00e9 pour vip-manager (param\u00e8tre <em>interval: 1000<\/em> dans <em>\/etc\/default\/vip-manager.yml <\/em>), et faire un switchover suivi d&#8217;un switchback :<\/p>\n<p><strong>Switchover \/  switchback:<\/strong><\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@pgpat1:~# patronictl -c \/etc\/patroni\/patroni.yml switchover --master pgpat1 --candidate pgpat2 --force\r\nCurrent cluster topology\r\n+--------+----------------+---------+---------+----+-----------+\r\n| Member | Host           | Role    | State   | TL | Lag in MB |\r\n+ Cluster: pg-cluster (7069750172117562885) --+----+-----------+\r\n| pgpat1 | 10.186.157.60  | Leader  | running | 29 |           |\r\n| pgpat2 | 10.186.157.216 | Replica | running | 29 |         0 |\r\n+--------+----------------+---------+---------+----+-----------+\r\n2022-03-07 10:12:51.43321 Successfully switched over to &quot;pgpat2&quot;\r\n\r\nroot@pgpat1:~# patronictl -c \/etc\/patroni\/patroni.yml switchover --master pgpat2 --candidate pgpat1 --force\r\nCurrent cluster topology\r\n+--------+----------------+---------+---------+----+-----------+\r\n| Member | Host           | Role    | State   | TL | Lag in MB |\r\n+ Cluster: pg-cluster (7069750172117562885) --+----+-----------+\r\n| pgpat1 | 10.186.157.60  | Replica | running | 30 |         0 |\r\n| pgpat2 | 10.186.157.216 | Leader  | running | 30 |           |\r\n+--------+----------------+---------+---------+----+-----------+\r\n2022-03-07 10:13:30.66680 Successfully switched over to &quot;pgpat1&quot;\r\n<\/pre>\n<p><strong>V\u00e9rification de bascule de la VIP:<\/strong><\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@ubuntu20:~# watch lxc list pgpat\r\nEvery 2,0s: lxc list pgpat                                                                                                                                                                         ubuntu20: Mon Mar  7 11:18:51 2022\r\n+--------+---------+-----------------------+-----------------------------------------------+-----------+-----------+\r\n|  NAME  |  STATE  |         IPV4          |                     IPV6                      |   TYPE    | SNAPSHOTS |\r\n+--------+---------+-----------------------+-----------------------------------------------+-----------+-----------+\r\n| pgpat1 | RUNNING | 10.186.157.60 (eth0)  | fd42:a4e7:fd78:5160:216:3eff:feaf:c4a5 (eth0) | CONTAINER | 0         |\r\n|        |         | 10.186.157.199 (eth0) |                                               |           |           |\r\n+--------+---------+-----------------------+-----------------------------------------------+-----------+-----------+\r\n| pgpat2 | RUNNING | 10.186.157.216 (eth0) | fd42:a4e7:fd78:5160:216:3eff:fe8c:9004 (eth0) | CONTAINER | 0         |\r\n+--------+---------+-----------------------+-----------------------------------------------+-----------+-----------+\r\n| pgpat3 | RUNNING | 10.186.157.3 (eth0)   | fd42:a4e7:fd78:5160:216:3eff:fe8c:fd27 (eth0) | CONTAINER | 0         |\r\n+--------+---------+-----------------------+-----------------------------------------------+-----------+-----------+\r\n\r\n+--------+---------+-----------------------+-----------------------------------------------+-----------+-----------+\r\n|  NAME  |  STATE  |         IPV4          |                     IPV6                      |   TYPE    | SNAPSHOTS |\r\n+--------+---------+-----------------------+-----------------------------------------------+-----------+-----------+\r\n| pgpat1 | RUNNING | 10.186.157.60 (eth0)  | fd42:a4e7:fd78:5160:216:3eff:feaf:c4a5 (eth0) | CONTAINER | 0         |\r\n+--------+---------+-----------------------+-----------------------------------------------+-----------+-----------+\r\n| pgpat2 | RUNNING | 10.186.157.216 (eth0) | fd42:a4e7:fd78:5160:216:3eff:fe8c:9004 (eth0) | CONTAINER | 0         |\r\n|        |         | 10.186.157.199 (eth0) |                                               |           |           |\r\n+--------+---------+-----------------------+-----------------------------------------------+-----------+-----------+\r\n| pgpat3 | RUNNING | 10.186.157.3 (eth0)   | fd42:a4e7:fd78:5160:216:3eff:fe8c:fd27 (eth0) | CONTAINER | 0         |\r\n+--------+---------+-----------------------+-----------------------------------------------+-----------+-----------+\r\n\r\n+--------+---------+-----------------------+-----------------------------------------------+-----------+-----------+\r\n|  NAME  |  STATE  |         IPV4          |                     IPV6                      |   TYPE    | SNAPSHOTS |\r\n+--------+---------+-----------------------+-----------------------------------------------+-----------+-----------+\r\n| pgpat1 | RUNNING | 10.186.157.60 (eth0)  | fd42:a4e7:fd78:5160:216:3eff:feaf:c4a5 (eth0) | CONTAINER | 0         |\r\n|        |         | 10.186.157.199 (eth0) |                                               |           |           |\r\n+--------+---------+-----------------------+-----------------------------------------------+-----------+-----------+\r\n| pgpat2 | RUNNING | 10.186.157.216 (eth0) | fd42:a4e7:fd78:5160:216:3eff:fe8c:9004 (eth0) | CONTAINER | 0         |\r\n+--------+---------+-----------------------+-----------------------------------------------+-----------+-----------+\r\n| pgpat3 | RUNNING | 10.186.157.3 (eth0)   | fd42:a4e7:fd78:5160:216:3eff:fe8c:fd27 (eth0) | CONTAINER | 0         |\r\n+--------+---------+-----------------------+-----------------------------------------------+-----------+-----------+\r\n<\/pre>\n<p><strong>Effets sur la connexion:<\/strong><\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nroot@ubuntu20:~# while(true)\r\n&gt; do\r\n&gt; psql -U postgres -h 10.186.157.199 -p 5432 -c '\\conninfo'\r\n&gt; sleep 1\r\n&gt; done\r\nYou are connected to database &quot;postgres&quot; as user &quot;postgres&quot; on host &quot;10.186.157.199&quot; at port &quot;5432&quot;.\r\nYou are connected to database &quot;postgres&quot; as user &quot;postgres&quot; on host &quot;10.186.157.199&quot; at port &quot;5432&quot;.\r\nYou are connected to database &quot;postgres&quot; as user &quot;postgres&quot; on host &quot;10.186.157.199&quot; at port &quot;5432&quot;.\r\nYou are connected to database &quot;postgres&quot; as user &quot;postgres&quot; on host &quot;10.186.157.199&quot; at port &quot;5432&quot;.\r\nYou are connected to database &quot;postgres&quot; as user &quot;postgres&quot; on host &quot;10.186.157.199&quot; at port &quot;5432&quot;.\r\nYou are connected to database &quot;postgres&quot; as user &quot;postgres&quot; on host &quot;10.186.157.199&quot; at port &quot;5432&quot;.\r\nYou are connected to database &quot;postgres&quot; as user &quot;postgres&quot; on host &quot;10.186.157.199&quot; at port &quot;5432&quot;.\r\nYou are connected to database &quot;postgres&quot; as user &quot;postgres&quot; on host &quot;10.186.157.199&quot; at port &quot;5432&quot;.\r\npsql: error: could not connect to server: Connection refused\r\n\tIs the server running on host &quot;10.186.157.199&quot; and accepting\r\n\tTCP\/IP connections on port 5432?\r\npsql: error: could not connect to server: Connection refused\r\n\tIs the server running on host &quot;10.186.157.199&quot; and accepting\r\n\tTCP\/IP connections on port 5432?\r\nYou are connected to database &quot;postgres&quot; as user &quot;postgres&quot; on host &quot;10.186.157.199&quot; at port &quot;5432&quot;.\r\nYou are connected to database &quot;postgres&quot; as user &quot;postgres&quot; on host &quot;10.186.157.199&quot; at port &quot;5432&quot;.\r\nYou are connected to database &quot;postgres&quot; as user &quot;postgres&quot; on host &quot;10.186.157.199&quot; at port &quot;5432&quot;.\r\nYou are connected to database &quot;postgres&quot; as user &quot;postgres&quot; on host &quot;10.186.157.199&quot; at port &quot;5432&quot;.\r\nYou are connected to database &quot;postgres&quot; as user &quot;postgres&quot; on host &quot;10.186.157.199&quot; at port &quot;5432&quot;.\r\nYou are connected to database &quot;postgres&quot; as user &quot;postgres&quot; on host &quot;10.186.157.199&quot; at port &quot;5432&quot;.\r\n<\/pre>\n<p>On voit qu&#8217;on ne perd que 2 connexions lors de la bascule. C\u00f4t\u00e9 r\u00e9seau dans les 3\/4 des cas on ne voit m\u00eame pas le changement d&#8217;un hop \u00e0 l&#8217;autre tant le processus est infiniment plus rapide que keepalived. A noter que keepalived \u00e9tait aussi configur\u00e9 pour tester l&#8217;\u00e9tat du cluster toutes les 1 secondes (<em>advert_int 1<\/em>). <\/p>\n<h2>Conclusion<\/h2>\n<p>En conclusion, vip-manager, en \u00e9tant sp\u00e9cialement con\u00e7u pour Patroni, permet de remplir tr\u00e8s efficacement le r\u00f4le de gestionnaire de VIP. Lors des tests, il semble nettement plus efficace que keepalived en termes de temps de bascule. A suivre avec int\u00e9r\u00eat donc &#8230;<\/p>\n<p>A+ bonne semaine \u00e0 toutes et tous.<br \/>\n~David<\/p>\n<a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-twitter nolightbox\" data-provider=\"twitter\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Twitter\" href=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F8930&#038;text=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"twitter\" title=\"Share on Twitter\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/twitter.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-linkedin nolightbox\" data-provider=\"linkedin\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Linkedin\" href=\"https:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F8930&#038;title=Comparatif%20des%20gestionnaires%20de%20VIP%20dans%20un%20cluster%20Patroni%20%3A%20%C3%A9pisode%202%20%28VIP-MANAGER%29\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px;margin-right:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"linkedin\" title=\"Share on Linkedin\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/linkedin.png\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-24 synved-social-resolution-single synved-social-provider-mail nolightbox\" data-provider=\"mail\" rel=\"nofollow\" title=\"Share by email\" href=\"mailto:?subject=Comparatif%20des%20gestionnaires%20de%20VIP%20dans%20un%20cluster%20Patroni%20%3A%20%C3%A9pisode%202%20%28VIP-MANAGER%29&#038;body=Article%20sur%20le%20blog%20de%20la%20Capdata%20Tech%20Team%20%3A%20:%20https%3A%2F%2Fblog.capdata.fr%2Findex.php%2Fwp-json%2Fwp%2Fv2%2Fposts%2F8930\" style=\"font-size: 0px;width:24px;height:24px;margin:0;margin-bottom:5px\"><img loading=\"lazy\" decoding=\"async\" alt=\"mail\" title=\"Share by email\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"24\" height=\"24\" style=\"display: inline;width:24px;height:24px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/blog.capdata.fr\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/48x48\/mail.png\" \/><\/a>","protected":false},"excerpt":{"rendered":"<p>Dans l&#8217;article pr\u00e9c\u00e9dent, nous avions \u00e9valu\u00e9 keepalived comme solution simple et g\u00e9n\u00e9raliste pour g\u00e9rer une VIP dans un cluster Patroni. Aujourd&#8217;hui nous allons tester une solution plus sp\u00e9cialis\u00e9e, vip-manager de Cybertec. Cybertec est une entreprise bas\u00e9e en Autriche et contribue&hellip; <a href=\"https:\/\/blog.capdata.fr\/index.php\/comparatif-des-gestionnaires-de-vip-dans-un-cluster-patroni-episode-2-vip-manager\/\" class=\"more-link\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":8932,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[383,266],"tags":[392,389,388,391],"class_list":["post-8930","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-container","category-postgresql","tag-cybertec","tag-patroni","tag-vip","tag-vip-manager"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Comparatif des gestionnaires de VIP dans un cluster Patroni : \u00e9pisode 2 (VIP-MANAGER) - Capdata TECH BLOG<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.capdata.fr\/index.php\/comparatif-des-gestionnaires-de-vip-dans-un-cluster-patroni-episode-2-vip-manager\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Comparatif des gestionnaires de VIP dans un cluster Patroni : \u00e9pisode 2 (VIP-MANAGER) - Capdata TECH BLOG\" \/>\n<meta property=\"og:description\" content=\"Dans l&#8217;article pr\u00e9c\u00e9dent, nous avions \u00e9valu\u00e9 keepalived comme solution simple et g\u00e9n\u00e9raliste pour g\u00e9rer une VIP dans un cluster Patroni. Aujourd&#8217;hui nous allons tester une solution plus sp\u00e9cialis\u00e9e, vip-manager de Cybertec. Cybertec est une entreprise bas\u00e9e en Autriche et contribue&hellip; Continuer la lecture &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.capdata.fr\/index.php\/comparatif-des-gestionnaires-de-vip-dans-un-cluster-patroni-episode-2-vip-manager\/\" \/>\n<meta property=\"og:site_name\" content=\"Capdata TECH BLOG\" \/>\n<meta property=\"article:published_time\" content=\"2022-03-11T06:23:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/03\/atc.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"612\" \/>\n\t<meta property=\"og:image:height\" content=\"406\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"David Baffaleuf\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"David Baffaleuf\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/comparatif-des-gestionnaires-de-vip-dans-un-cluster-patroni-episode-2-vip-manager\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/comparatif-des-gestionnaires-de-vip-dans-un-cluster-patroni-episode-2-vip-manager\/\"},\"author\":{\"name\":\"David Baffaleuf\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf\"},\"headline\":\"Comparatif des gestionnaires de VIP dans un cluster Patroni : \u00e9pisode 2 (VIP-MANAGER)\",\"datePublished\":\"2022-03-11T06:23:51+00:00\",\"dateModified\":\"2022-03-11T06:23:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/comparatif-des-gestionnaires-de-vip-dans-un-cluster-patroni-episode-2-vip-manager\/\"},\"wordCount\":1622,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/blog.capdata.fr\/#organization\"},\"keywords\":[\"cybertec\",\"patroni\",\"vip\",\"vip-manager\"],\"articleSection\":[\"Container\",\"PostgreSQL\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.capdata.fr\/index.php\/comparatif-des-gestionnaires-de-vip-dans-un-cluster-patroni-episode-2-vip-manager\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/comparatif-des-gestionnaires-de-vip-dans-un-cluster-patroni-episode-2-vip-manager\/\",\"url\":\"https:\/\/blog.capdata.fr\/index.php\/comparatif-des-gestionnaires-de-vip-dans-un-cluster-patroni-episode-2-vip-manager\/\",\"name\":\"Comparatif des gestionnaires de VIP dans un cluster Patroni : \u00e9pisode 2 (VIP-MANAGER) - Capdata TECH BLOG\",\"isPartOf\":{\"@id\":\"https:\/\/blog.capdata.fr\/#website\"},\"datePublished\":\"2022-03-11T06:23:51+00:00\",\"dateModified\":\"2022-03-11T06:23:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/comparatif-des-gestionnaires-de-vip-dans-un-cluster-patroni-episode-2-vip-manager\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.capdata.fr\/index.php\/comparatif-des-gestionnaires-de-vip-dans-un-cluster-patroni-episode-2-vip-manager\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.capdata.fr\/index.php\/comparatif-des-gestionnaires-de-vip-dans-un-cluster-patroni-episode-2-vip-manager\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/blog.capdata.fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Comparatif des gestionnaires de VIP dans un cluster Patroni : \u00e9pisode 2 (VIP-MANAGER)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.capdata.fr\/#website\",\"url\":\"https:\/\/blog.capdata.fr\/\",\"name\":\"Capdata TECH BLOG\",\"description\":\"Le blog technique sur les bases de donn\u00e9es de CAP DATA Consulting\",\"publisher\":{\"@id\":\"https:\/\/blog.capdata.fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.capdata.fr\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/blog.capdata.fr\/#organization\",\"name\":\"Capdata TECH BLOG\",\"url\":\"https:\/\/blog.capdata.fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp\",\"contentUrl\":\"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp\",\"width\":800,\"height\":254,\"caption\":\"Capdata TECH BLOG\"},\"image\":{\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.linkedin.com\/company\/cap-data-consulting\/mycompany\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf\",\"name\":\"David Baffaleuf\",\"sameAs\":[\"http:\/\/www.capdata.fr\"],\"url\":\"https:\/\/blog.capdata.fr\/index.php\/author\/dbaffaleuf\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Comparatif des gestionnaires de VIP dans un cluster Patroni : \u00e9pisode 2 (VIP-MANAGER) - Capdata TECH BLOG","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.capdata.fr\/index.php\/comparatif-des-gestionnaires-de-vip-dans-un-cluster-patroni-episode-2-vip-manager\/","og_locale":"fr_FR","og_type":"article","og_title":"Comparatif des gestionnaires de VIP dans un cluster Patroni : \u00e9pisode 2 (VIP-MANAGER) - Capdata TECH BLOG","og_description":"Dans l&#8217;article pr\u00e9c\u00e9dent, nous avions \u00e9valu\u00e9 keepalived comme solution simple et g\u00e9n\u00e9raliste pour g\u00e9rer une VIP dans un cluster Patroni. Aujourd&#8217;hui nous allons tester une solution plus sp\u00e9cialis\u00e9e, vip-manager de Cybertec. Cybertec est une entreprise bas\u00e9e en Autriche et contribue&hellip; Continuer la lecture &rarr;","og_url":"https:\/\/blog.capdata.fr\/index.php\/comparatif-des-gestionnaires-de-vip-dans-un-cluster-patroni-episode-2-vip-manager\/","og_site_name":"Capdata TECH BLOG","article_published_time":"2022-03-11T06:23:51+00:00","og_image":[{"width":612,"height":406,"url":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2022\/03\/atc.jpg","type":"image\/jpeg"}],"author":"David Baffaleuf","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"David Baffaleuf","Dur\u00e9e de lecture estim\u00e9e":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.capdata.fr\/index.php\/comparatif-des-gestionnaires-de-vip-dans-un-cluster-patroni-episode-2-vip-manager\/#article","isPartOf":{"@id":"https:\/\/blog.capdata.fr\/index.php\/comparatif-des-gestionnaires-de-vip-dans-un-cluster-patroni-episode-2-vip-manager\/"},"author":{"name":"David Baffaleuf","@id":"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf"},"headline":"Comparatif des gestionnaires de VIP dans un cluster Patroni : \u00e9pisode 2 (VIP-MANAGER)","datePublished":"2022-03-11T06:23:51+00:00","dateModified":"2022-03-11T06:23:51+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.capdata.fr\/index.php\/comparatif-des-gestionnaires-de-vip-dans-un-cluster-patroni-episode-2-vip-manager\/"},"wordCount":1622,"commentCount":0,"publisher":{"@id":"https:\/\/blog.capdata.fr\/#organization"},"keywords":["cybertec","patroni","vip","vip-manager"],"articleSection":["Container","PostgreSQL"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.capdata.fr\/index.php\/comparatif-des-gestionnaires-de-vip-dans-un-cluster-patroni-episode-2-vip-manager\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.capdata.fr\/index.php\/comparatif-des-gestionnaires-de-vip-dans-un-cluster-patroni-episode-2-vip-manager\/","url":"https:\/\/blog.capdata.fr\/index.php\/comparatif-des-gestionnaires-de-vip-dans-un-cluster-patroni-episode-2-vip-manager\/","name":"Comparatif des gestionnaires de VIP dans un cluster Patroni : \u00e9pisode 2 (VIP-MANAGER) - Capdata TECH BLOG","isPartOf":{"@id":"https:\/\/blog.capdata.fr\/#website"},"datePublished":"2022-03-11T06:23:51+00:00","dateModified":"2022-03-11T06:23:51+00:00","breadcrumb":{"@id":"https:\/\/blog.capdata.fr\/index.php\/comparatif-des-gestionnaires-de-vip-dans-un-cluster-patroni-episode-2-vip-manager\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.capdata.fr\/index.php\/comparatif-des-gestionnaires-de-vip-dans-un-cluster-patroni-episode-2-vip-manager\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.capdata.fr\/index.php\/comparatif-des-gestionnaires-de-vip-dans-un-cluster-patroni-episode-2-vip-manager\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/blog.capdata.fr\/"},{"@type":"ListItem","position":2,"name":"Comparatif des gestionnaires de VIP dans un cluster Patroni : \u00e9pisode 2 (VIP-MANAGER)"}]},{"@type":"WebSite","@id":"https:\/\/blog.capdata.fr\/#website","url":"https:\/\/blog.capdata.fr\/","name":"Capdata TECH BLOG","description":"Le blog technique sur les bases de donn\u00e9es de CAP DATA Consulting","publisher":{"@id":"https:\/\/blog.capdata.fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.capdata.fr\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/blog.capdata.fr\/#organization","name":"Capdata TECH BLOG","url":"https:\/\/blog.capdata.fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/","url":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp","contentUrl":"https:\/\/blog.capdata.fr\/wp-content\/uploads\/2023\/01\/logo_capdata.webp","width":800,"height":254,"caption":"Capdata TECH BLOG"},"image":{"@id":"https:\/\/blog.capdata.fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/cap-data-consulting\/mycompany\/"]},{"@type":"Person","@id":"https:\/\/blog.capdata.fr\/#\/schema\/person\/136297da9f61d6e4878abe0f48bc5fbf","name":"David Baffaleuf","sameAs":["http:\/\/www.capdata.fr"],"url":"https:\/\/blog.capdata.fr\/index.php\/author\/dbaffaleuf\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/8930","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/comments?post=8930"}],"version-history":[{"count":6,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/8930\/revisions"}],"predecessor-version":[{"id":8941,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/posts\/8930\/revisions\/8941"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/media\/8932"}],"wp:attachment":[{"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/media?parent=8930"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/categories?post=8930"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.capdata.fr\/index.php\/wp-json\/wp\/v2\/tags?post=8930"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}