ubuntu

Ubuntu上PostgreSQL集群如何搭建

小樊
47
2025-09-13 00:59:21
栏目: 云计算

在Ubuntu上搭建PostgreSQL集群,通常指的是设置一个高可用的PostgreSQL集群,例如使用Patroni和Keepalived来实现。以下是一个基本的步骤指南:

前提条件

  1. Ubuntu服务器:至少三台服务器,用于实现高可用性。
  2. PostgreSQL:每台服务器上安装相同版本的PostgreSQL。
  3. 网络配置:确保服务器之间可以互相通信。

步骤

1. 安装PostgreSQL

在每台服务器上安装PostgreSQL:

sudo apt update
sudo apt install postgresql postgresql-contrib

2. 配置PostgreSQL

编辑/etc/postgresql/<version>/main/postgresql.conf文件,确保以下参数设置正确:

listen_addresses = '*'  # 允许所有IP连接
wal_level = replica    # 设置为replica以支持流复制
max_wal_senders = 10   # 最大WAL发送者数量
wal_keep_segments = 64 # 保留的WAL段数量

编辑/etc/postgresql/<version>/main/pg_hba.conf文件,添加允许复制的条目:

host    replication     replicator     <replica_ip>/32    md5

重启PostgreSQL服务:

sudo systemctl restart postgresql

3. 初始化复制用户

在主节点上创建一个用于复制的用户:

CREATE USER replicator WITH REPLICATION PASSWORD 'your_password' LOGIN;

4. 配置Patroni

在每台服务器上安装Patroni:

sudo apt install python3-pip
pip3 install patroni

创建Patroni配置文件/etc/patroni.yml,示例配置如下:

scope: postgres
name: pg1
namespace: /db
restapi:
  listen: 0.0.0.0:8008
  connect_address: <master_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_wal_senders: 10
        wal_keep_segments: 64
      replication:
        slot_name: pg1_slot
        listen: 0.0.0.0:5432
        connect_address: <master_ip>
        authentication:
          username: replicator
          password: your_password
        ssl: false
nodes:
  - name: pg1
    host: <node1_ip>
    port: 5432
    data_dir: /var/lib/postgresql/12/main
    pg_hba:
      - host replication replicator <node1_ip>/32 md5
    parameters:
      hot_standby: on
  - name: pg2
    host: <node2_ip>
    port: 5432
    data_dir: /var/lib/postgresql/12/main
    pg_hba:
      - host replication replicator <node2_ip>/32 md5
    parameters:
      hot_standby: on
  - name: pg3
    host: <node3_ip>
    port: 5432
    data_dir: /var/lib/postgresql/12/main
    pg_hba:
      - host replication replicator <node3_ip>/32 md5
    parameters:
      hot_standby: on

5. 启动Patroni

在每台服务器上启动Patroni:

sudo patroni /etc/patroni.yml

6. 验证集群状态

访问任意一台服务器的Patroni API来验证集群状态:

curl http://<server_ip>:8008/master

注意事项

通过以上步骤,你可以在Ubuntu上搭建一个基本的PostgreSQL高可用集群。根据具体需求,可能还需要进行更多的配置和优化。

0
看了该问题的人还看了