ubuntu

PostgreSQL在Ubuntu上的集群部署

小樊
49
2025-09-29 19:43:19
栏目: 云计算

在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集群。

0
看了该问题的人还看了