在CentOS上搭建PostgreSQL集群,通常指的是使用Patroni或者Repmgr这样的工具来管理PostgreSQL的高可用性。以下是使用Patroni搭建PostgreSQL集群的基本步骤:
准备工作:
安装必要的软件包: 在所有服务器上安装PostgreSQL和Patroni。可以使用yum或者源码编译安装。
sudo yum install postgresql-server postgresql-contrib patroni
配置PostgreSQL:
在每台服务器上编辑/var/lib/pgsql/data/postgresql.conf
文件,确保以下参数被正确设置:
listen_addresses = '*' # 或者指定IP地址
wal_level = replica
max_wal_senders = 4
wal_keep_segments = 8
hot_standby = on
编辑/var/lib/pgsql/data/pg_hba.conf
文件,添加信任规则以便节点间可以无密码通信:
host replication replicator 192.168.1.0/24 md5
替换192.168.1.0/24
为你的服务器IP段。
初始化Patroni:
在其中一台服务器上初始化Patroni配置文件/etc/patroni.yml
。以下是一个基本的配置示例:
scope: postgresql
name: postgresql
namespace: /db/
restapi:
listen: 0.0.0.0:8008
connect_address: 192.168.1.100 # 替换为你的IP地址
etcd:
host: 192.168.1.101 # 替换为你的etcd服务器IP地址
port: 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: 127.0.0.1
data_dir: /var/lib/pgsql/data
pg_hba:
- host replication replicator 192.168.1.0/24 md5
authentication:
replication:
username: replicator
password: yourpassword # 替换为你的密码
parameters:
max_connections: 100
unix_socket_directories: '/var/run/postgresql'
确保替换配置文件中的IP地址、etcd服务器地址、用户名和密码为你自己的设置。
启动Patroni: 在初始化了Patroni配置的服务器上启动Patroni服务:
sudo systemctl start patroni
sudo systemctl enable patroni
验证集群状态: 使用Patroni提供的API来检查集群状态:
curl http://192.168.1.100:8008/postgres/status
替换192.168.1.100
为你的Patroni服务的IP地址。
添加更多节点:
如果你需要添加更多的PostgreSQL节点到集群中,你可以在其他服务器上重复步骤3到步骤5,并确保它们的postgresql.conf
和pg_hba.conf
文件与主节点一致。
请注意,这只是一个基本的指南,实际的部署可能会更复杂,需要考虑网络配置、防火墙规则、存储解决方案(如SAN或分布式文件系统)等因素。在生产环境中部署之前,建议详细阅读Patroni的官方文档,并进行充分的测试。