在CentOS上搭建PostgreSQL集群,通常指的是使用Patroni和Corosync来创建一个高可用的PostgreSQL集群。以下是搭建步骤的概述:
准备工作:
安装必要的软件包: 在所有节点上安装PostgreSQL、Patroni、Corosync和Pacemaker。可以使用以下命令安装:
sudo yum install postgresql-server patroni corosync pacemaker
配置Corosync:
在每台服务器上编辑/etc/corosync/corosync.conf
文件,配置集群成员信息和网络设置。例如:
totem {
version: 2
cluster_name: pg_cluster
transport: udpu
}
nodelist {
node {
ring0_addr: server1_ip
nodeid: 1
}
node {
ring0_addr: server2_ip
nodeid: 2
}
node {
ring0_addr: server3_ip
nodeid: 3
}
}
quorum {
provider: corosync_votequorum
}
logging {
to_logfile: yes
logfile: /var/log/corosync/corosync.log
to_syslog: yes
}
替换server1_ip
、server2_ip
和server3_ip
为实际的IP地址。
启动并启用Corosync服务:
sudo systemctl start corosync
sudo systemctl enable corosync
配置Pacemaker:
在所有节点上创建Pacemaker配置文件/etc/pacemaker/cib.xml
,定义集群资源和约束。
启动并启用Pacemaker服务:
sudo systemctl start pacemaker
sudo systemctl enable pacemaker
配置Patroni:
在每台服务器上创建Patroni配置文件/etc/patroni.yml
,指定PostgreSQL数据目录、监听地址、认证信息等。例如:
scope: postgresql
name: postgresql@server1
namespace: /db/
restapi:
listen: 0.0.0.0:8008
connect_address: server1_ip
etcd:
host: 127.0.0.1:2379
scheme: http
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
postgresql:
listen: 0.0.0.0:5432
connect_address: server1_ip
data_dir: /var/lib/pgsql/data
pg_hba:
- host replication replicator 0.0.0.0/0 md5
- host all all 0.0.0.0/0 md5
authentication:
replication:
username: replicator
password: your_password
resources:
- name: postgresql
type: postgresql
check: conninfo
operators:
- role: Master
- role: Standby
- role: Monitor
- role: Promotable
- role: Slave
- role: Unreachable
替换server1_ip
为实际的IP地址,并设置合适的用户名和密码。
启动Patroni:
sudo systemctl start patroni
sudo systemctl enable patroni
验证集群状态:
使用crm_mon
命令查看集群状态,确保所有资源都已正确配置并运行。
crm_mon -f
请注意,这只是一个基本的指南,实际部署时可能需要根据具体需求进行调整。在生产环境中部署之前,建议详细阅读Patroni和Corosync的官方文档,并进行充分的测试。