温馨提示×

PostgreSQL在Ubuntu上如何进行集群部署

小樊
33
2025-12-16 18:18:39
栏目: 云计算

在Ubuntu上部署PostgreSQL集群,通常指的是使用Patroni或Repmgr等工具来管理PostgreSQL的高可用性集群。以下是使用Patroni进行部署的基本步骤:

前提条件

  1. Ubuntu系统:确保你有一个运行Ubuntu的服务器。
  2. PostgreSQL:在所有节点上安装PostgreSQL。
  3. 网络配置:确保所有节点之间可以互相通信。
  4. 防火墙配置:确保必要的端口(如5432)是开放的。

安装Patroni

  1. 添加Patroni仓库

    sudo apt-get update
    sudo apt-get install software-properties-common
    sudo add-apt-repository ppa:pitti/postgresql
    sudo apt-get update
    
  2. 安装Patroni

    sudo apt-get install patroni
    

配置Patroni

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

    scope: postgresql
    namespace: /db/
    name: pg1
    restapi:
      listen: 0.0.0.0:8008
      connect_address: 192.168.1.101  # 替换为你的节点IP
    etcd:
      host: 192.168.1.102  # 替换为你的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: 192.168.1.101  # 替换为你的节点IP
      data_dir: /var/lib/postgresql/12/main
      pg_hba:
      - host    replication     replicator     192.168.1.0/24    md5
      - host    all             all             0.0.0.0/0               md5
      authentication:
        replication:
          username: replicator
          password: your_replicator_password
        superuser:
          username: postgres
          password: your_superuser_password
    

    请根据你的实际情况修改配置文件中的IP地址、端口、数据目录等信息。

  2. 初始化etcd: 如果你还没有etcd集群,可以使用以下命令初始化一个:

    etcd --name etcd1 --data-dir /var/lib/etcd --initial-cluster etcd1=http://192.168.1.102:2380 --initial-advertise-peer-urls http://192.168.1.102:2380 --listen-peer-urls http://192.168.1.102:2380 --listen-client-urls http://192.168.1.102:2379 --advertise-client-urls http://192.168.1.102:2379
    

启动Patroni

在每个节点上启动Patroni服务:

sudo systemctl enable patroni
sudo systemctl start patroni

验证集群状态

你可以使用以下命令来检查集群的状态:

sudo patronictl status

故障转移测试

为了确保集群的高可用性,你可以尝试手动触发故障转移:

sudo patronictl promote pg1

然后检查其他节点是否自动成为新的主节点。

注意事项

  1. 备份:在生产环境中部署之前,确保你已经对数据库进行了完整的备份。
  2. 监控:设置监控和警报系统,以便及时发现和解决集群中的问题。
  3. 文档:参考Patroni的官方文档,了解更多高级配置和最佳实践。

通过以上步骤,你应该能够在Ubuntu上成功部署一个PostgreSQL高可用性集群。

0