在CentOS上部署PostgreSQL集群可以通过多种方式实现,其中一种常见的方法是使用Patroni和Pacemaker来管理高可用性和故障转移。以下是一个基本的步骤指南:
在所有节点上安装以下软件包:
sudo yum install -y centos-release-scl
sudo yum install -y rh-postgresql96 rh-postgresql96-server
sudo yum install -y pacemaker pcs
sudo yum install -y patroni
在所有节点上启动并启用Pacemaker和Corosync服务:
sudo systemctl start pacemaker
sudo systemctl enable pacemaker
sudo systemctl start corosync
sudo systemctl enable corosync
初始化Pacemaker集群:
sudo pcs cluster auth <node1> <node2> <node3>
sudo pcs cluster setup --name pg_cluster <node1> <node2> <node3>
sudo pcs cluster start --all
sudo pcs cluster enable --all
编辑/etc/corosync/corosync.conf
文件,确保配置如下:
totem {
version: 2
cluster_name: pg_cluster
transport: udpu
}
nodelist {
node {
ring0_addr: <node1_ip>
nodeid: 1
}
node {
ring0_addr: <node2_ip>
nodeid: 2
}
node {
ring0_addr: <node3_ip>
nodeid: 3
}
}
quorum {
provider: corosync_votequorum
}
logging {
to_logfile: yes
logfile: /var/log/corosync/corosync.log
to_syslog: yes
}
在每个节点上创建Patroni配置文件/etc/patroni.yml
,示例配置如下:
scope: postgres
name: <node_name>
namespace: /db
data_dir: /var/lib/pgsql/9.6/data
restapi:
listen: 0.0.0.0
connect_address: <node_ip>
ssl:
cert_file: /etc/pki/tls/certs/server.crt
key_file: /etc/pki/tls/private/server.key
verify_mode: verify_peer
ca_file: /etc/pki/tls/certs/ca.crt
pg_hba:
- host replication replicator <node_ip>/32 md5
- host all all 0.0.0.0/0 md5
authentication:
replication:
username: replicator
password: <replicator_password>
superuser:
username: postgres
password: <postgres_password>
postgresql:
listen: 0.0.0.0
connect_address: 127.0.0.1
data_dir: /var/lib/pgsql/9.6/data
version: 9.6
pg_hba:
- host replication replicator <node_ip>/32 md5
- host all all 0.0.0.0/0 md5
authentication:
replication:
username: replicator
password: <replicator_password>
superuser:
username: postgres
password: <postgres_password>
parameters:
wal_level: replica
max_wal_senders: 4
wal_keep_segments: 8
hot_standby: on
在每个节点上启动Patroni服务:
sudo systemctl start patroni
sudo systemctl enable patroni
检查Patroni和Pacemaker的状态:
sudo systemctl status patroni
sudo pcs status
通过以上步骤,你应该能够在CentOS上成功部署一个PostgreSQL集群,并实现高可用性和故障转移。