在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集群,并實現高可用性和故障轉移。