{"id":2938,"date":"2026-01-07T10:57:52","date_gmt":"2026-01-07T10:57:52","guid":{"rendered":"https:\/\/bynatree.com\/?p=2938"},"modified":"2026-01-07T10:57:52","modified_gmt":"2026-01-07T10:57:52","slug":"high-availability-postgresql-16-11-cluster-with-repmgr-5-5-on-centos-stream-10-coughlan","status":"publish","type":"post","link":"https:\/\/divaind.com\/ie1\/2026\/01\/07\/high-availability-postgresql-16-11-cluster-with-repmgr-5-5-on-centos-stream-10-coughlan\/","title":{"rendered":"High Availability PostgreSQL 16.11 Cluster with repmgr 5.5 on CentOS Stream 10 (Coughlan)"},"content":{"rendered":"<h2><span style=\"font-weight: 400;\">Introduction<\/span><\/h2>\n<blockquote><p><span style=\"font-weight: 400;\">High availability (HA) is a critical requirement for modern database infrastructures, ensuring minimal downtime and seamless failover in case of node failures. PostgreSQL, while robust as a standalone database, requires additional tooling to manage replication, failover, and cluster orchestration in multi\u2011node environments.<\/span><\/p><\/blockquote>\n<p><span style=\"font-weight: 400;\">repmgr (Replication Manager) is a widely adopted open\u2011source tool that simplifies the administration of PostgreSQL replication and failover. Version 5.5 of repmgr introduces enhanced support for PostgreSQL 16.x, making it a reliable choice for production\u2011grade HA setups.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This guide focuses on deploying PostgreSQL 16.11 with repmgr 5.5 on CentOS Stream 10 (Coughlan), the rolling\u2011release distribution aligned with Red Hat Enterprise Linux 10. The target architecture is a three\u2011node cluster consisting of one primary and two standby nodes, configured for synchronous replication and automatic failover<\/span><\/p>\n<p><b>Cluster Topology:<\/b><span style=\"font-weight: 400;\"> Three nodes<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Node 1 (Primary):<\/b><span style=\"font-weight: 400;\"> Handles read\/write traffic and replicates changes downstream.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Node 2 (Standby):<\/b><span style=\"font-weight: 400;\"> Hot standby, ready to be promoted in case of primary failure.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Node 3 (Witness):<\/b><span style=\"font-weight: 400;\"> Provides quorum and ensures consistent failover decisions.<\/span><\/li>\n<\/ul>\n<h2><span style=\"font-weight: 400;\">On a host:<\/span><\/h2>\n<pre class=\"theme:solarized-light font:sourcecodepro lang:default decode:true\">192.168.134.129\u00a0 node1 \u00a0 pg-primary\n\n192.168.134.130\u00a0 node2 \u00a0 pg-standby\n\n192.168.134.131\u00a0 witness pg-witness<\/pre>\n<h2><span style=\"font-weight: 400;\">Checking OS Version:<\/span><\/h2>\n<p><b>Command:<br \/>\n<\/b><\/p>\n<pre class=\"lang:default decode:true \">cat \/etc\/os-release<\/pre>\n<p><b>Output:<\/b><\/p>\n<table>\n<tbody>\n<tr>\n<td>\n<pre class=\"lang:default decode:true\">NAME=\"CentOS Stream\"\n\nVERSION=\"10 (Coughlan)\"\n\n\u2026\u2026\u2026\u2026\u2026\u2026\u2026\n\n\u2026\u2026\u2026\u2026\u2026\u2026<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><span style=\"font-weight: 400;\">Installing Prerequisites for the repmgr:<\/span><\/h3>\n<pre class=\"theme:solarized-light lang:default decode:true\">wget https:\/\/github.com\/EnterpriseDB\/repmgr\/releases\/download\/v5.5.0\/repmgr-5.5.0.tar.gz\nsudo yum install -y gcc make readline-devel zlib-devel \u00a0 \u00a0 postgresql postgresql-server postgresql-contrib\nsudo yum install -y perl-App-cpanminus\nsudo cpanm IPC::Run\nsudo dnf install -y epel-release\nsudo dnf config-manager --set-enabled crb\nsudo dnf install -y perl-IPC-Run\nsudo yum install -y postgresql16-devel\nsudo yum install -y libcurl-devel json-c-devel\nsudo yum install -y flex\nsudo yum install -y lz4-devel libxslt-devel libxml2-devel pam-devel<\/pre>\n<h3><span style=\"font-weight: 400;\">Untar repmgr package:<\/span><\/h3>\n<table>\n<tbody>\n<tr>\n<td>\n<pre class=\"theme:solarized-light lang:default decode:true\">tar -xvf repmgr-5.5.0.tar.gz\ncd repmgr-5.5.0\nwhich pg_config<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span style=\"font-weight: 400;\">Output:<\/span><\/p>\n<pre class=\"theme:solarized-light lang:default decode:true\">\/usr\/pgsql-16\/bin\/pg_config<\/pre>\n<h3><span style=\"font-weight: 400;\">Installing\u00a0 repmgr in pg_config path:<\/span><\/h3>\n<table>\n<tbody>\n<tr>\n<td>\n<pre class=\"theme:solarized-light lang:default decode:true\">export PG_CONFIG=\/usr\/pgsql-16\/bin\/pg_config\n.\/configure\nmake\nsudo make install<\/pre>\n<p><b>Added in bash_profile<\/b><\/p>\n<pre class=\"theme:solarized-light lang:default decode:true\">export PATH=\/usr\/pgsql-16\/bin:$PATH\necho 'export PATH=\/usr\/pgsql-16\/bin:$PATH' &gt;&gt; ~\/.bash_profile\nsource ~\/.bash_profile<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<table>\n<tbody>\n<tr>\n<td>\n<pre class=\"theme:solarized-light lang:default decode:true\">[postgres@test3 data]$ repmgr --version\nrepmgr 5.5.0\n\n[postgres@test3 data]$ repmgrd --version\nrepmgrd 5.5.0<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><span style=\"font-weight: 400;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2949\" src=\"https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-013828.png\" alt=\"\" width=\"500\" height=\"89\" srcset=\"https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-013828.png 500w, https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-013828-300x53.png 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/p>\n<p>Prerequisites:<\/span><\/h2>\n<h3><span style=\"font-weight: 400;\">Enable ssh in all the three machine:<\/span><\/h3>\n<table>\n<tbody>\n<tr>\n<td>\n<pre class=\"theme:solarized-light lang:default decode:true\">ssh-keygen -t ed25519\n\nssh-copy-id postgres@192.168.134.129\nssh-copy-id postgres@192.168.134.130\n\nssh postgres@192.168.134.130 \"hostname\"\nssh postgres@192.168.134.131 \"hostname\"<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<h3><span style=\"font-weight: 400;\">Added entry for allowing port 5432 in tcp\u00a0<\/span><\/h3>\n<pre class=\"theme:solarized-light lang:default decode:true\">sudo firewall-cmd --add-port=5432\/tcp --permanent\nsudo firewall-cmd --reload<\/pre>\n<p><span style=\"font-weight: 400;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2941\" src=\"https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-012936.png\" alt=\"\" width=\"778\" height=\"90\" srcset=\"https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-012936.png 778w, https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-012936-300x35.png 300w, https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-012936-768x89.png 768w\" sizes=\"auto, (max-width: 778px) 100vw, 778px\" \/><\/span><\/p>\n<p><span style=\"font-weight: 400;\">Verify:<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2942\" src=\"https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-012946.png\" alt=\"\" width=\"710\" height=\"341\" srcset=\"https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-012946.png 710w, https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-012946-300x144.png 300w\" sizes=\"auto, (max-width: 710px) 100vw, 710px\" \/><br \/>\nAdding host in all the three node in \/etc\/hosts :<\/span><\/p>\n<pre class=\"theme:solarized-light lang:default decode:true\">Vi \/etc\/hosts<\/pre>\n<h2><span style=\"font-weight: 400;\">Repmgr Setup:<\/span><\/h2>\n<h3><span style=\"font-weight: 400;\">Creating user in the primary and witness node:<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/h3>\n<table>\n<tbody>\n<tr>\n<td>\n<pre class=\"theme:solarized-light lang:default decode:true\">CREATE USER repmgr WITH REPLICATION SUPERUSER LOGIN;\u00a0\nALTER USER repmgr SET search_path TO repmgr, public;\u00a0\u00a0\nCREATE DATABASE repmgr OWNER repmgr;<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4><span style=\"font-weight: 400;\">In postgresql.conf add following configuration changes in primary (node1) and (node2) standby :<\/span><\/h4>\n<table>\n<tbody>\n<tr>\n<td>\n<pre class=\"theme:solarized-light lang:default decode:true\">listen_addresses = '*'\u00a0\nport = 5432\u00a0\nmax_wal_senders = 10\u00a0\nmax_replication_slots = 10\u00a0\nwal_level = replica\u00a0\nhot_standby = on\u00a0\narchive_mode = on\u00a0\narchive_command = '\/bin\/true'\u00a0 # or your preferred archiving command\u00a0\nwal_log_hints = on\u00a0\nshared_preload_libraries = 'repmgr'<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<h4><span style=\"font-weight: 400;\">Added entry for the repmgr in pg_hba.conf<\/span><\/h4>\n<pre class=\"theme:solarized-light lang:default decode:true\"># Add lines for repmgr\u00a0\nhost\u00a0 \u00a0 repmgr\u00a0 \u00a0 \u00a0 repmgr\u00a0 \u00a0 \u00a0 192.168.134.0\/24\u00a0 \u00a0 trust\nhost\u00a0 \u00a0 replication repmgr\u00a0 \u00a0 \u00a0 192.168.134.0\/24\u00a0 \u00a0 trust<\/pre>\n<h3><span style=\"font-weight: 400;\">In a primary node create \/etc\/repmgr.conf\u00a0<\/span><\/h3>\n<pre class=\"theme:solarized-light lang:default decode:true\">sudo vi \/etc\/repmgr.conf<\/pre>\n<h4><span style=\"font-weight: 400;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2950\" src=\"https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-231302.png\" alt=\"\" width=\"915\" height=\"247\" srcset=\"https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-231302.png 915w, https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-231302-300x81.png 300w, https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-231302-768x207.png 768w\" sizes=\"auto, (max-width: 915px) 100vw, 915px\" \/><\/p>\n<p>Node 01 (primary)\u00a0<\/span><\/h4>\n<table>\n<tbody>\n<tr>\n<td>\n<pre class=\"theme:solarized-light lang:default decode:true\">node_id=1\u00a0\nnode_name='node1'\u00a0\nconninfo='host=192.168.134.129 user=repmgr dbname=repmgr connect_timeout=2'\u00a0\ndata_directory='\/var\/lib\/pgsql\/16\/data'\u00a0\npg_bindir='\/usr\/pgsql-16\/bin'\u00a0\nconfig_directory='\/var\/lib\/pgsql\/16\/data\/postgresql.conf'\u00a0\nreplication_user='repmgr'\u00a0\nfailover=automatic\npromote_command='repmgr standby promote -f \/etc\/repmgr.conf --log-to-file'\u00a0\nfollow_command='repmgr standby follow -f \/etc\/repmgr.conf --log-to-file --upstream-node-id=%n'\u00a0\nlog_file='\/var\/log\/repmgr\/repmgr.log'<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<h4><span style=\"font-weight: 400;\">Node 02 (secondary)\u00a0<\/span><\/h4>\n<p><span style=\"font-weight: 400;\">sudo vi \/etc\/repmgr.conf\u00a0<\/span><\/p>\n<table>\n<tbody>\n<tr>\n<td>\n<pre class=\"theme:solarized-light lang:default decode:true\">node_id=2\u00a0\nnode_name='node2'\u00a0\nconninfo='host=192.168.134.130 user=repmgr dbname=repmgr connect_timeout=2'\u00a0\ndata_directory='\/var\/lib\/pgsql\/16\/data'\u00a0\npg_bindir='\/usr\/pgsql-16\/bin'\u00a0\nconfig_directory='\/var\/lib\/pgsql\/16\/data\/postgresql.conf'\u00a0\nreplication_user='repmgr'\u00a0\nfailover=automatic\npromote_command='repmgr standby promote -f \/etc\/repmgr.conf --log-to-file'\u00a0\nfollow_command='repmgr standby follow -f \/etc\/repmgr.conf --log-to-file --upstream-node-id=%n'\u00a0\nlog_file='\/var\/log\/repmgr\/repmgr.log'<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4><span style=\"font-weight: 400;\">Node 03 (Witness)\u00a0<\/span><\/h4>\n<p><span style=\"font-weight: 400;\">Sudo vi \/etc\/repmgr.conf\u00a0<\/span><\/p>\n<table style=\"height: 196px;\" width=\"579\">\n<tbody>\n<tr>\n<td>\n<pre class=\"theme:solarized-light lang:default decode:true\">node_id=3\u00a0\nnode_name='witness'\u00a0\nconninfo='host=192.168.134.131 user=repmgr dbname=repmgr connect_timeout=2'\u00a0\ndata_directory='\/var\/lib\/pgsql\/16\/data'\u00a0\npg_bindir='\/usr\/pgsql-16\/bin'\u00a0\nreplication_user='repmgr'\u00a0\nlog_file='\/var\/log\/repmgr\/repmgr.log'<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4><span style=\"font-weight: 400;\">Create Log Directory\u00a0<\/span><\/h4>\n<p><span style=\"font-weight: 400;\">In all nodes create log directory\u00a0<\/span><\/p>\n<table>\n<tbody>\n<tr>\n<td>\n<pre class=\"theme:solarized-light lang:default decode:true\">sudo mkdir -p \/var\/log\/repmgr\u00a0\nsudo chown postgres:postgres \/var\/log\/repmgr<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><span style=\"font-weight: 400;\">Register nodes in a cluster:<\/span><\/h2>\n<h3><span style=\"font-weight: 400;\">Register Primary Node in a repmgr cluster:<\/span><\/h3>\n<pre class=\"theme:solarized-light lang:default decode:true\">repmgr -f \/etc\/repmgr.conf primary register<\/pre>\n<h3><span style=\"font-weight: 400;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2945\" src=\"https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-013003.png\" alt=\"\" width=\"691\" height=\"112\" srcset=\"https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-013003.png 691w, https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-013003-300x49.png 300w\" sizes=\"auto, (max-width: 691px) 100vw, 691px\" \/><\/span><\/h3>\n<h3><span style=\"font-weight: 400;\">Building standby from the primary:<\/span><\/h3>\n<pre class=\"theme:solarized-light lang:default decode:true \">repmgr -h 192.168.134.129 -U repmgr -d repmgr -f \/etc\/repmgr.conf standby clone -F<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2944\" src=\"https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-013113-1.png\" alt=\"\" width=\"1596\" height=\"367\" srcset=\"https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-013113-1.png 1596w, https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-013113-1-300x69.png 300w, https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-013113-1-1024x235.png 1024w, https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-013113-1-768x177.png 768w, https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-013113-1-1536x353.png 1536w\" sizes=\"auto, (max-width: 1596px) 100vw, 1596px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Register standby node:<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2946\" src=\"https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-013128.png\" alt=\"\" width=\"1041\" height=\"129\" srcset=\"https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-013128.png 1041w, https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-013128-300x37.png 300w, https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-013128-1024x127.png 1024w, https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-013128-768x95.png 768w\" sizes=\"auto, (max-width: 1041px) 100vw, 1041px\" \/><br \/>\n<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Register Witness\u00a0 node in a repmgr cluster make sure datadirectory name is different from primary:<\/span><\/h3>\n<pre class=\"theme:solarized-light lang:default decode:true \">repmgr -f \/etc\/repmgr.conf witness register -h 192.168.134.129 -p 5432 -U repmgr<\/pre>\n<h3><span style=\"font-weight: 400;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2948\" src=\"https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-013218.png\" alt=\"\" width=\"1080\" height=\"144\" srcset=\"https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-013218.png 1080w, https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-013218-300x40.png 300w, https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-013218-1024x137.png 1024w, https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-013218-768x102.png 768w\" sizes=\"auto, (max-width: 1080px) 100vw, 1080px\" \/>Register repmgrd service in all the three node:<\/span><\/h3>\n<pre class=\"theme:solarized-light lang:default decode:true\">sudo vi \/etc\/systemd\/system\/repmgrd.service<\/pre>\n<table>\n<tbody>\n<tr>\n<td>\n<pre class=\"theme:solarized-light lang:default decode:true\">[Unit]\u00a0\nDescription=A replication manager, and failover management tool for PostgreSQL\u00a0\nAfter=syslog.target\u00a0\nAfter=network.target\u00a0\nAfter=postgresql.service\u00a0\n\n[Service]\u00a0\nType=forking\u00a0\nUser=postgres\u00a0\nExecStart=\/usr\/pgsql-16\/bin\/repmgrd -f \/etc\/repmgr.conf --pid-file=\/var\/run\/repmgrd.pid --daemonize\u00a0\nExecReload=\/bin\/kill -HUP $MAINPID\u00a0\nPIDFile=\/var\/run\/repmgrd.pid\u00a0\n\n[Install]\u00a0\nWantedBy=multi-user.target<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4><span style=\"font-weight: 400;\">Reload repmgrd and its services:<\/span><\/h4>\n<pre class=\"theme:solarized-light lang:default decode:true\">sudo systemctl daemon-reload\u00a0\nsudo systemctl enable repmgrd\u00a0\nsudo systemctl start repmgrd<\/pre>\n<h2><span style=\"font-weight: 400;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2940\" src=\"https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-012858.png\" alt=\"\" width=\"1326\" height=\"432\" srcset=\"https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-012858.png 1326w, https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-012858-300x98.png 300w, https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-012858-1024x334.png 1024w, https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-012858-768x250.png 768w\" sizes=\"auto, (max-width: 1326px) 100vw, 1326px\" \/>Verify repmgr running and checking status:<\/span><\/h2>\n<pre class=\"theme:solarized-light lang:default decode:true \">repmgr -f \/etc\/repmgr.conf\u00a0 cluster show\nrepmgr -f \/etc\/repmgr.conf\u00a0 service status\nrepmgr -f \/etc\/repmgr.conf\u00a0 cluster crosscheck<\/pre>\n<h2><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2939\" src=\"https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-012749.png\" alt=\"\" width=\"1510\" height=\"447\" srcset=\"https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-012749.png 1510w, https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-012749-300x89.png 300w, https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-012749-1024x303.png 1024w, https:\/\/divaind.com\/ie1\/wp-content\/uploads\/2026\/01\/Screenshot-2025-12-17-012749-768x227.png 768w\" sizes=\"auto, (max-width: 1510px) 100vw, 1510px\" \/><\/p>\n<p>Conclusion:<\/h2>\n<blockquote><p>Deploying a PostgreSQL 16.11 high-availability cluster using repmgr 5.5 on CentOS Stream 10 showcases the ability of open-source tools to provide enterprise-level reliability. The setup involves a primary node, a hot standby, and a witness server to enable synchronous replication and automatic failover. The detailed setup process emphasizes the significance of planning and reproducible configuration. The cluster supports seamless failover and minimal downtime, making it suitable for critical workloads. With improved support for PostgreSQL 16.x, repmgr offers an effective solution for managing replication and failover, creating a reliable and scalable HA platform for modern data infrastructures.<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Introduction High availability (HA) is a critical requirement for modern database infrastructures, ensuring minimal downtime and seamless failover in case of node failures. PostgreSQL, while robust as a standalone database, requires additional tooling to manage replication, failover, and cluster orchestration in multi\u2011node environments. repmgr (Replication Manager) is a widely adopted open\u2011source tool that simplifies the&hellip;<\/p>\n","protected":false},"author":1,"featured_media":2951,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[28],"tags":[58,94,124,138,143,153,159,191,232,266,305,307],"class_list":["post-2938","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-postgresql","tag-sysadmin","tag-centosstream","tag-databasecluster","tag-dba","tag-devops","tag-failover","tag-highavailability","tag-linuxadmin","tag-opensource","tag-postgresql","tag-replication","tag-repmgr","category-28","description-off"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/divaind.com\/ie1\/wp-json\/wp\/v2\/posts\/2938","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/divaind.com\/ie1\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/divaind.com\/ie1\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/divaind.com\/ie1\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/divaind.com\/ie1\/wp-json\/wp\/v2\/comments?post=2938"}],"version-history":[{"count":0,"href":"https:\/\/divaind.com\/ie1\/wp-json\/wp\/v2\/posts\/2938\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/divaind.com\/ie1\/wp-json\/wp\/v2\/media\/2951"}],"wp:attachment":[{"href":"https:\/\/divaind.com\/ie1\/wp-json\/wp\/v2\/media?parent=2938"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/divaind.com\/ie1\/wp-json\/wp\/v2\/categories?post=2938"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/divaind.com\/ie1\/wp-json\/wp\/v2\/tags?post=2938"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}