温馨提示×

如何在Ubuntu上部署PostgreSQL集群

小樊
40
2025-12-06 20:42:48
栏目: 云计算

在Ubuntu上部署PostgreSQL集群可以通过多种方式实现,其中一种常见的方法是使用Patroni和Pacemaker来管理高可用性和故障转移。以下是一个基本的步骤指南:

前提条件

  1. 两台或更多服务器:用于部署PostgreSQL集群。
  2. 网络配置:确保所有服务器之间可以互相通信。
  3. SSH访问:确保可以从主节点SSH到其他节点。

步骤指南

1. 安装必要的软件包

在所有节点上执行以下命令来安装必要的软件包:

sudo apt update
sudo apt install -y postgresql-13 postgresql-13-pgdg pacemaker patroni

2. 配置PostgreSQL

在每个节点上编辑/etc/postgresql/13/main/postgresql.conf文件,确保以下参数设置正确:

listen_addresses = '*'  # 或者指定具体的IP地址
wal_level = replica
max_wal_senders = 10
wal_keep_segments = 64
hot_standby = on

编辑/etc/postgresql/13/main/pg_hba.conf文件,添加允许从其他节点连接的条目:

host    replication     replicator     <其他节点的IP>/32    md5
host    all             all             0.0.0.0/0               md5

3. 初始化数据库集群

在主节点上初始化数据库集群:

sudo systemctl stop postgresql
sudo pg_createcluster 13 main --start --no-password
sudo systemctl start postgresql

4. 配置Patroni

在每个节点上创建Patroni配置文件/etc/patroni.yml,以下是一个示例配置:

scope: postgresql
name: master
namespace: /db
restapi:
  listen: 0.0.0.0:8008
  connect_address: <主节点的IP>
etcd:
  host: <etcd节点的IP>
  port: 2379
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
        max_wal_senders: 10
        wal_keep_segments: 64
        synchronous_commit: off
        synchronous_standby_names: '*'
        primary_conninfo:
          dbname: postgres
          user: replicator
          password: <复制用户的密码>
          host: <当前节点的IP>
        standby_conninfo:
          dbname: postgres
          user: replicator
          password: <复制用户的密码>
          host: <主节点的IP>

在备用节点上,将scope改为standby,并将name改为备用节点的名称。

5. 启动Patroni

在主节点上启动Patroni:

sudo patroni /etc/patroni.yml

在备用节点上启动Patroni:

sudo patroni /etc/patroni.yml

6. 验证集群状态

你可以通过访问主节点的Patroni REST API来验证集群状态:

curl http://<主节点的IP>:8008/master

如果一切正常,你应该会看到主节点的信息。

注意事项

  • 确保所有节点的时间同步。
  • 确保防火墙允许必要的端口(如5432、8008、2379等)。
  • 根据实际需求调整配置文件中的参数。

通过以上步骤,你应该能够在Ubuntu上成功部署一个PostgreSQL集群,并实现高可用性和故障转移。

0