centos

CentOS上PostgreSQL如何进行集群部署

小樊
52
2025-07-10 23:00:08
栏目: 云计算

在CentOS上进行PostgreSQL的集群部署,通常指的是设置PostgreSQL的高可用性解决方案,如使用Patroni或Repmgr来管理PostgreSQL集群。以下是使用Patroni进行PostgreSQL集群部署的基本步骤:

前提条件

  1. CentOS 7或更高版本:确保你的系统是最新的,并且已经安装了必要的依赖包。
  2. PostgreSQL:在所有节点上安装相同版本的PostgreSQL。
  3. 防火墙配置:确保所有节点之间的通信端口(默认是5432)是开放的。
  4. SSH无密码登录:配置所有节点之间的SSH无密码登录,以便Patroni可以自动执行命令。

安装Patroni

在所有节点上安装Patroni:

sudo yum install -y python3-pip
sudo pip3 install patroni

配置Patroni

在每个节点上创建一个Patroni配置文件,例如/etc/patroni.yml。以下是一个基本的配置示例:

scope: postgres
name: node1  # 每个节点的name必须唯一
namespace: /db
restapi:
  listen: 0.0.0.0
  connect_address: <node_ip>  # 替换为节点的IP地址
  listen_port: 8008
etcd:
  host: <etcd_ip>:2379  # 替换为etcd集群的IP地址和端口
data_dir: /var/lib/postgresql/data
bootstrap:
  dcs:
    ttl: 30
    loop_wait: 10
    retry_timeout: 10
    maximum_lag_on_failover: 1048576
    postgresql:
      use_pg_rewind: true
      use_slots: true
      parameters:
        wal_level: replica
        max_connections: 100
        hot_standby: on
        synchronous_commit: off
        synchronous_standby_names: '*'
        wal_keep_segments: 8
        max_wal_senders: 4
        wal_sender_timeout: 60
        max_replication_slots: 4
        track_commit_timestamp: on
        hot_standby_feedback: on
start: true
stop: true

启动Patroni

在每个节点上启动Patroni服务:

sudo systemctl enable patroni
sudo systemctl start patroni

验证集群状态

你可以使用以下命令来检查集群的状态:

sudo patronictl status

或者访问Patroni的REST API来获取集群状态:

curl http://<node_ip>:8008/v2/cluster

故障转移测试

为了确保集群的高可用性,你可以手动触发一次故障转移测试。例如,停止主节点上的PostgreSQL服务:

sudo systemctl stop postgresql

Patroni会自动检测到主节点的故障,并触发一次故障转移,将一个备用节点提升为新的主节点。

注意事项

  1. etcd集群:Patroni依赖于etcd来存储集群的状态信息。确保etcd集群已经正确配置和运行。
  2. 防火墙配置:确保所有节点之间的通信端口是开放的,特别是etcd的端口(默认是2379)。
  3. 监控和日志:配置适当的监控和日志记录,以便及时发现和解决问题。

通过以上步骤,你可以在CentOS上部署一个基本的PostgreSQL集群。根据实际需求,你可能需要进一步调整配置和优化性能。

0
看了该问题的人还看了