在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的官方文档,并进行充分的测试。