在Debian上部署PostgreSQL集群可以通过多种方式实现,其中一种常见的方法是使用Patroni和Pacemaker来管理高可用性和故障转移。以下是一个基本的步骤指南:
在所有节点上执行以下命令来安装Patroni和Pacemaker:
sudo apt-get update
sudo apt-get install -y pacemaker patroni postgresql-13-pgpool
在每个节点上编辑PostgreSQL配置文件/etc/postgresql/13/main/postgresql.conf和/etc/postgresql/13/main/pg_hba.conf,确保它们允许集群通信。
postgresql.conf:
listen_addresses = '*'
wal_level = replica
max_wal_senders = 10
wal_keep_segments = 64
hot_standby = on
pg_hba.conf:
host replication replicator 192.168.1.0/24 md5
host all all 192.168.1.0/24 md5
在主节点上初始化Patroni。假设主节点的IP地址是192.168.1.100:
sudo patroni --data-dir=/var/lib/postgresql/13/main --name=master --connection-string='host=192.168.1.100 dbname=postgres user=replicator password=your_password' --initdb
在备用节点上初始化Patroni,假设备用节点的IP地址是192.168.1.101:
sudo patroni --data-dir=/var/lib/postgresql/13/main --name=standby --connection-string='host=192.168.1.100 dbname=postgres user=replicator password=your_password' --initdb
在所有节点上启动Pacemaker和Corosync服务:
sudo systemctl start corosync
sudo systemctl enable corosync
sudo systemctl start pacemaker
sudo systemctl enable pacemaker
使用以下命令检查集群状态:
sudo crm status
你应该看到一个活动的资源和节点。
你可以使用crm configure命令来配置资源,例如:
sudo crm configure primitive pgsql ocf:heartbeat:pgsql \
params pgctl="/usr/lib/postgresql/13/bin/pg_ctl" \
op monitor interval="30s"
你可以通过停止主节点上的PostgreSQL服务来测试故障转移:
sudo systemctl stop postgresql
Pacemaker应该会自动将主角色转移到备用节点上。
通过以上步骤,你应该能够在Debian上成功部署一个PostgreSQL集群。根据具体需求,你可能需要进一步调整和优化配置。