文档版本信息版本: v1.0更新日期: 2026-05-22适用系统: CentOS 7/8, RHEL 7/8, Rocky Linux 8/9数据库版本: PostgreSQL 16.x集群软件: Pacemaker + Corosync + PCS仲裁模式: QDevice (Quorum Device)一、架构概述1.1 整体架构图┌─────────────────┐│ QDevice ││ (仲裁设备) ││ 10.212.9.100 │└────────┬────────┘│┌──────────────┼──────────────┐│ │ │┌────────▼────────┐ │ ┌────────▼────────┐│ Node1 (Primary) │◄───┼───►│ Node2 (Standby) ││ 10.212.9.60 │ │ │ 10.212.9.62 ││ │ │ │ ││ PostgreSQL 16 │ │ │ PostgreSQL 16 ││ Pacemaker │ │ │ Pacemaker ││ Corosync │ │ │ Corosync │└─────────────────┘ │ └─────────────────┘│┌────────▼────────┐│ Virtual IP ││ 10.212.9.200 │└─────────────────┘1.2 节点角色说明节点 IP 地址 角色 说明Node1 10.212.9.60 Primary 主数据库节点,承载写操作Node2 10.212.9.62 Standby 备数据库节点,实时同步QDevice 10.212.9.100 仲裁设备 防止脑裂,提供第三票VIP 10.212.9.200 虚拟IP 客户端连接入口1.3 高可用特性自动故障切换: 主节点故障时,备节点自动接管数据零丢失: 采用同步流复制(synchronous replication)防脑裂机制: QDevice 仲裁确保集群决策一致性快速恢复: 故障节点恢复后自动重新加入集群并同步数据二、离线环境准备(关键章节)2.1 离线部署挑战在无互联网连接的生产环境中,需要提前在有网机器上下载所有依赖包,然后传输到目标服务器。本章节详细说明如何准备离线安装包。2.2 需要准备的材料清单2.2.1 操作系统镜像CentOS 7: CentOS-7-x86_64-DVD-2009.isoCentOS 8/Rocky 8: Rocky-8-x86_64-dvd1.isoRHEL 8: rhel-8.x-x86_64-dvd.iso注意: 使用与生产环境完全一致的系统版本,避免内核兼容性问题。2.2.2 PostgreSQL 16 RPM 包清单从 PostgreSQL YUM Repository 下载以下 RPM 包及其所有依赖:核心包:postgresql16-16.x.x-1PGDG.rhel8.x86_64.rpmpostgresql16-server-16.x.x-1PGDG.rhel8.x86_64.rpmpostgresql16-contrib-16.x.x-1PGDG.rhel8.x86_64.rpmpostgresql16-libs-16.x.x-1PGDG.rhel8.x86_64.rpm依赖包(根据系统版本可能不同):libicu-.rpmlibxml2-.rpmlibxslt-.rpmopenssl-libs-.rpmreadline-.rpmzlib-.rpm下载方法(在有网机器上执行):方法1: 使用 yumdownloader(推荐)sudo yum install -y yum-utilsmkdir -p /tmp/pg16_offlinecd /tmp/pg16_offline下载 PostgreSQL 16 及所有依赖sudo yumdownloader --resolve postgresql16-server postgresql16-contrib打包tar czf postgresql16_offline.tar.gz *.rpm方法2: 使用 reposync(完整仓库同步)sudo yum install -y createreposudo yum-config-manager --add-repo https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpmsudo yum install -y pgdg-redhat-repo同步整个 PGDG 仓库reposync --repoid=pgdg16 --download_path=/tmp/pg_repo --newest-only创建本地仓库元数据createrepo /tmp/pg_repo/pgdg162.2.3 Pacemaker + Corosync RPM 包清单对于 CentOS 8/RHEL 8/Rocky 8:HighAvailability 仓库中的核心包pacemaker-2.x.x-.rpmpacemaker-cli-2.x.x-.rpmpacemaker-libs-2.x.x-.rpmpacemaker-cluster-libs-2.x.x-.rpmcorosync-3.x.x-.rpmcorosync-libknet1-3.x.x-.rpmcorosynclib-3.x.x-.rpmpcs-0.10.x-.rpmresource-agents-4.x.x-.rpmQDevice 相关包:corosync-qdevice-3.x.x-.rpmcorosync-qnetd-3.x.x-*.rpm # 安装在仲裁设备上下载命令:启用 HighAvailability 仓库sudo subscription-manager repos --enable rhel-8-for-x86_64-highavailability-rpms或对于 CentOS/Rocky:sudo dnf config-manager --set-enabled ha下载所有 HA 相关包sudo yumdownloader --resolvepacemakerpacemaker-clicorosynccorosync-qdevicepcsresource-agentstar czf pacemaker_offline.tar.gz *.rpm对于 CentOS 7:启用 HA 仓库sudo yum-config-manager --enable rhel-ha-for-rhel-7-server-rpms或安装 centos-release-hasudo yum install -y centos-release-ha下载包sudo yumdownloader --resolvepacemakerpacemaker-clicorosynccorosync-qdevicepcsresource-agents2.2.4 其他必要工具包网络工具iproute-.rpmnet-tools-.rpmSSH 和认证openssh-clients-.rpmopenssh-server-.rpm时间同步chrony-*.rpm或 ntp-*.rpm (CentOS 7)防火墙firewalld-*.rpm监控工具(可选但推荐)psmisc-.rpm # 提供 killall 命令procps-ng-.rpm # 提供 ps, top 等2.3 离线包传输步骤步骤 1: 在有网机器上准备创建离线包目录结构mkdir -p /opt/offline_packages/{postgres,pacemaker,tools}下载 PostgreSQL 16cd /opt/offline_packages/postgressudo yumdownloader --resolve postgresql16-server postgresql16-contrib下载 Pacemakercd /opt/offline_packages/pacemakersudo yumdownloader --resolve pacemaker pacemaker-cli corosync corosync-qdevice pcs resource-agents下载工具包cd /opt/offline_packages/toolssudo yumdownloader --resolve iproute net-tools chrony firewalld psmisc procps-ng打包所有 RPMcd /opt/offline_packagestar czf offline_packages_full.tar.gz postgres/ pacemaker/ tools/生成校验文件md5sum offline_packages_full.tar.gz offline_packages_full.tar.gz.md5步骤 2: 传输到目标服务器方法1: 使用 scpscp offline_packages_full.tar.gz user@10.212.9.60:/tmp/scp offline_packages_full.tar.gz user@10.212.9.62:/tmp/scp offline_packages_full.tar.gz user@10
Pacemaker + PostgreSQL 16 + 仲裁模式高可用集群部署指南
文档版本信息版本: v1.0更新日期: 2026-05-22适用系统: CentOS 7/8, RHEL 7/8, Rocky Linux 8/9数据库版本: PostgreSQL 16.x集群软件: Pacemaker + Corosync + PCS仲裁模式: QDevice (Quorum Device)一、架构概述1.1 整体架构图┌─────────────────┐│ QDevice ││ (仲裁设备) ││ 10.212.9.100 │└────────┬────────┘│┌──────────────┼──────────────┐│ │ │┌────────▼────────┐ │ ┌────────▼────────┐│ Node1 (Primary) │◄───┼───►│ Node2 (Standby) ││ 10.212.9.60 │ │ │ 10.212.9.62 ││ │ │ │ ││ PostgreSQL 16 │ │ │ PostgreSQL 16 ││ Pacemaker │ │ │ Pacemaker ││ Corosync │ │ │ Corosync │└─────────────────┘ │ └─────────────────┘│┌────────▼────────┐│ Virtual IP ││ 10.212.9.200 │└─────────────────┘1.2 节点角色说明节点 IP 地址 角色 说明Node1 10.212.9.60 Primary 主数据库节点,承载写操作Node2 10.212.9.62 Standby 备数据库节点,实时同步QDevice 10.212.9.100 仲裁设备 防止脑裂,提供第三票VIP 10.212.9.200 虚拟IP 客户端连接入口1.3 高可用特性自动故障切换: 主节点故障时,备节点自动接管数据零丢失: 采用同步流复制(synchronous replication)防脑裂机制: QDevice 仲裁确保集群决策一致性快速恢复: 故障节点恢复后自动重新加入集群并同步数据二、离线环境准备(关键章节)2.1 离线部署挑战在无互联网连接的生产环境中,需要提前在有网机器上下载所有依赖包,然后传输到目标服务器。本章节详细说明如何准备离线安装包。2.2 需要准备的材料清单2.2.1 操作系统镜像CentOS 7: CentOS-7-x86_64-DVD-2009.isoCentOS 8/Rocky 8: Rocky-8-x86_64-dvd1.isoRHEL 8: rhel-8.x-x86_64-dvd.iso注意: 使用与生产环境完全一致的系统版本,避免内核兼容性问题。2.2.2 PostgreSQL 16 RPM 包清单从 PostgreSQL YUM Repository 下载以下 RPM 包及其所有依赖:核心包:postgresql16-16.x.x-1PGDG.rhel8.x86_64.rpmpostgresql16-server-16.x.x-1PGDG.rhel8.x86_64.rpmpostgresql16-contrib-16.x.x-1PGDG.rhel8.x86_64.rpmpostgresql16-libs-16.x.x-1PGDG.rhel8.x86_64.rpm依赖包(根据系统版本可能不同):libicu-.rpmlibxml2-.rpmlibxslt-.rpmopenssl-libs-.rpmreadline-.rpmzlib-.rpm下载方法(在有网机器上执行):方法1: 使用 yumdownloader(推荐)sudo yum install -y yum-utilsmkdir -p /tmp/pg16_offlinecd /tmp/pg16_offline下载 PostgreSQL 16 及所有依赖sudo yumdownloader --resolve postgresql16-server postgresql16-contrib打包tar czf postgresql16_offline.tar.gz *.rpm方法2: 使用 reposync(完整仓库同步)sudo yum install -y createreposudo yum-config-manager --add-repo https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpmsudo yum install -y pgdg-redhat-repo同步整个 PGDG 仓库reposync --repoid=pgdg16 --download_path=/tmp/pg_repo --newest-only创建本地仓库元数据createrepo /tmp/pg_repo/pgdg162.2.3 Pacemaker + Corosync RPM 包清单对于 CentOS 8/RHEL 8/Rocky 8:HighAvailability 仓库中的核心包pacemaker-2.x.x-.rpmpacemaker-cli-2.x.x-.rpmpacemaker-libs-2.x.x-.rpmpacemaker-cluster-libs-2.x.x-.rpmcorosync-3.x.x-.rpmcorosync-libknet1-3.x.x-.rpmcorosynclib-3.x.x-.rpmpcs-0.10.x-.rpmresource-agents-4.x.x-.rpmQDevice 相关包:corosync-qdevice-3.x.x-.rpmcorosync-qnetd-3.x.x-*.rpm # 安装在仲裁设备上下载命令:启用 HighAvailability 仓库sudo subscription-manager repos --enable rhel-8-for-x86_64-highavailability-rpms或对于 CentOS/Rocky:sudo dnf config-manager --set-enabled ha下载所有 HA 相关包sudo yumdownloader --resolvepacemakerpacemaker-clicorosynccorosync-qdevicepcsresource-agentstar czf pacemaker_offline.tar.gz *.rpm对于 CentOS 7:启用 HA 仓库sudo yum-config-manager --enable rhel-ha-for-rhel-7-server-rpms或安装 centos-release-hasudo yum install -y centos-release-ha下载包sudo yumdownloader --resolvepacemakerpacemaker-clicorosynccorosync-qdevicepcsresource-agents2.2.4 其他必要工具包网络工具iproute-.rpmnet-tools-.rpmSSH 和认证openssh-clients-.rpmopenssh-server-.rpm时间同步chrony-*.rpm或 ntp-*.rpm (CentOS 7)防火墙firewalld-*.rpm监控工具(可选但推荐)psmisc-.rpm # 提供 killall 命令procps-ng-.rpm # 提供 ps, top 等2.3 离线包传输步骤步骤 1: 在有网机器上准备创建离线包目录结构mkdir -p /opt/offline_packages/{postgres,pacemaker,tools}下载 PostgreSQL 16cd /opt/offline_packages/postgressudo yumdownloader --resolve postgresql16-server postgresql16-contrib下载 Pacemakercd /opt/offline_packages/pacemakersudo yumdownloader --resolve pacemaker pacemaker-cli corosync corosync-qdevice pcs resource-agents下载工具包cd /opt/offline_packages/toolssudo yumdownloader --resolve iproute net-tools chrony firewalld psmisc procps-ng打包所有 RPMcd /opt/offline_packagestar czf offline_packages_full.tar.gz postgres/ pacemaker/ tools/生成校验文件md5sum offline_packages_full.tar.gz offline_packages_full.tar.gz.md5步骤 2: 传输到目标服务器方法1: 使用 scpscp offline_packages_full.tar.gz user@10.212.9.60:/tmp/scp offline_packages_full.tar.gz user@10.212.9.62:/tmp/scp offline_packages_full.tar.gz user@10