在Ubuntu上進行PostgreSQL的集群部署,通常指的是使用Patroni或Repmgr等工具來管理PostgreSQL的高可用性。以下是使用Patroni進行PostgreSQL集群部署的基本步驟:
sudo apt-get update
sudo apt-get install -y python3-pip git
pip3 install patroni[etcd]
在每個節點上安裝PostgreSQL:
sudo apt-get install -y postgresql postgresql-contrib
Patroni使用etcd作為分布式配置存儲。首先安裝etcd:
sudo apt-get install -y etcd
啟動并啟用etcd服務:
sudo systemctl start etcd
sudo systemctl enable etcd
在每個節點上創建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服務:
sudo patroni /etc/patroni.yml
你可以使用以下命令來驗證集群的狀態:
sudo patronictl status
你可以手動停止主節點上的PostgreSQL服務來測試故障轉移:
sudo systemctl stop postgresql
Patroni應該會自動選舉一個新的主節點,并繼續提供服務。
通過以上步驟,你可以在Ubuntu上部署一個基本的PostgreSQL高可用性集群。根據實際需求,你可能需要進一步調整配置和優化性能。