PostgreSQL在Ubuntu上的集群部署
导读:在Ubuntu上部署PostgreSQL集群,通常指的是使用Patroni和Pacemaker来管理高可用性。以下是详细的步骤: 1. 安装必要的软件包 首先,更新你的系统并安装必要的软件包: sudo apt update sudo ap...
在Ubuntu上部署PostgreSQL集群,通常指的是使用Patroni和Pacemaker来管理高可用性。以下是详细的步骤:
1. 安装必要的软件包
首先,更新你的系统并安装必要的软件包:
sudo apt update
sudo apt install -y postgresql-13-pgdg postgresql-13-pacemaker patroni
2. 配置PostgreSQL
编辑每个节点的/etc/postgresql/13/main/postgresql.conf
文件,确保以下配置:
listen_addresses = '*' # 允许所有IP地址连接
wal_level = replica # 设置为replica以支持流复制
max_wal_senders = 10 # 最大WAL发送者数量
wal_keep_segments = 64 # 保留的WAL段数量
hot_standby = on # 启用热备模式
编辑/etc/postgresql/13/main/pg_hba.conf
文件,添加以下行以允许从其他节点连接:
host replication replicator 192.168.1.0/24 md5
host all all 192.168.1.0/24 md5
3. 初始化集群
在第一个节点上初始化PostgreSQL集群:
sudo systemctl stop postgresql
sudo pg_createcluster 13 main --start --no-password
sudo systemctl start postgresql
4. 配置Patroni
在每个节点上创建Patroni配置文件/etc/patroni.yml
,以下是一个示例配置:
scope: postgres
name: node1 # 每个节点的名称必须唯一
namespace: /db
data_dir: /var/lib/postgresql/13/main
pg_hba:
- host replication replicator 192.168.1.0/24 md5
- host all all 192.168.1.0/24 md5
authentication:
replication:
username: replicator
password: your_replicator_password
superuser:
username: postgres
password: your_superuser_password
restapi:
listen: 0.0.0.0:8008
connect_address: 192.168.1.1 # 替换为当前节点的IP地址
etcd:
host: 192.168.1.2 # 替换为etcd服务器的IP地址
port: 2379
scheme: http
在每个节点上运行Patroni:
sudo patroni /etc/patroni.yml
5. 配置Pacemaker
安装Pacemaker并配置集群资源:
sudo apt install -y pacemaker pcs
sudo pcs cluster auth node1 node2 node3 # 替换为你的节点名称
sudo pcs cluster setup --name pg_cluster node1 node2 node3
sudo pcs cluster start --all
创建PostgreSQL资源:
sudo pcs resource create pgsql ocf:heartbeat:pgsql \
op monitor interval=30s \
params pgctl="/usr/lib/postgresql/13/bin/pg_ctl" \
op start timeout=60s \
op stop timeout=60s \
op promote timeout=60s \
op demote timeout=60s \
op monitor timeout=30s \
meta is-managed=true \
clone-max=2 \
clone-node-max=1 \
failover-threshold=3 \
notify=true
6. 验证集群状态
检查集群状态:
sudo pcs status
你应该看到PostgreSQL资源已经启动并运行。
7. 测试故障转移
你可以手动停止一个节点上的PostgreSQL服务来测试故障转移:
sudo systemctl stop postgresql
观察其他节点是否自动接管并启动PostgreSQL服务。
通过以上步骤,你可以在Ubuntu上成功部署一个高可用的PostgreSQL集群。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: PostgreSQL在Ubuntu上的集群部署
本文地址: https://pptw.com/jishu/720569.html