溫馨提示×

Ubuntu上PostgreSQL如何進行集群部署

小樊
43
2025-10-16 17:26:35
欄目: 云計算

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

前提條件

  1. 操作系統:Ubuntu 18.04 LTS或更高版本。
  2. PostgreSQL:安裝PostgreSQL 9.6或更高版本。
  3. 網絡:確保所有節點之間可以互相通信。
  4. 防火墻:配置防火墻以允許必要的端口(默認5432)。

安裝依賴

sudo apt-get update
sudo apt-get install -y python3-pip git
pip3 install patroni[etcd]

安裝PostgreSQL

在每個節點上安裝PostgreSQL:

sudo apt-get install -y postgresql postgresql-contrib

配置etcd

Patroni使用etcd作為分布式配置存儲。首先安裝etcd:

sudo apt-get install -y etcd

啟動并啟用etcd服務:

sudo systemctl start etcd
sudo systemctl enable etcd

配置Patroni

在每個節點上創建Patroni配置文件(例如/etc/patroni.yml),以下是一個基本的配置示例:

scope: postgres
name: node1  # 每個節點的唯一名稱
namespace: /db
restapi:
  listen: 0.0.0.0:8008
  connect_address: 192.168.1.101  # 替換為節點的實際IP地址
etcd:
  host: 192.168.1.101  # 替換為etcd節點的實際IP地址
  port: 2379
  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
      synchronous_commit: off
      archive_mode: on
      archive_command: 'test ! -f /var/lib/postgresql/9.6/main/archive/%f && cp %p /var/lib/postgresql/9.6/main/archive/%f'
      restore_command: 'cp /var/lib/postgresql/9.6/main/archive/%f %p'
      wal_keep_segments: 8
      max_wal_senders: 4
      wal_sender_timeout: 60
      hot_standby_feedback: on
    data_dir: /var/lib/postgresql/9.6/main
    pg_hba:
    - host replication replicator 192.168.1.0/24 md5
    - host all all 0.0.0.0/0 md5

啟動Patroni

在每個節點上啟動Patroni服務:

sudo patroni /etc/patroni.yml

驗證集群狀態

你可以使用以下命令來驗證集群的狀態:

sudo patronictl status

測試故障轉移

你可以手動停止主節點上的PostgreSQL服務來測試故障轉移:

sudo systemctl stop postgresql

Patroni應該會自動選舉一個新的主節點,并繼續提供服務。

注意事項

  1. 硬件資源:確保每個節點有足夠的硬件資源(CPU、內存、磁盤空間)。
  2. 網絡配置:確保所有節點之間的網絡連接穩定。
  3. 監控和日志:配置適當的監控和日志記錄,以便及時發現和解決問題。

通過以上步驟,你可以在Ubuntu上部署一個基本的PostgreSQL高可用性集群。根據實際需求,你可能需要進一步調整配置和優化性能。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女