在Debian上进行PostgreSQL的集群部署,通常是指使用Patroni或Stolon这样的工具来管理PostgreSQL的高可用性和故障转移。以下是使用Patroni进行PostgreSQL集群部署的基本步骤:
首先,更新你的系统包列表并安装必要的依赖:
sudo apt update
sudo apt install -y python3-pip python3-psycopg2 git
使用pip安装Patroni:
sudo pip3 install patroni
创建一个Patroni配置文件,例如/etc/patroni.yml,并添加以下内容:
scope: postgresql
name: postgresql-cluster
namespace: /db
restapi:
listen: 0.0.0.0:8008
connect_address: 127.0.0.1
etcd:
host: 127.0.0.1:2379
ttl: 30
retry_timeout: 10
authentication:
username: etcduser
password: etcdpassword
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
synchronous_commit: off
synchronous_standby_names: '*'
wal_keep_segments: 8
max_wal_senders: 4
wal_sender_timeout: 60
max_replication_slots: 4
track_commit_timestamp: on
storage:
type: file
path: /var/lib/postgresql/data
pgdata: /var/lib/postgresql/data
replication:
enabled: true
listen: 0.0.0.0:5432
connect_address: 127.0.0.1
connect_timeout: 10
retry_timeout: 10
use_ssl: false
ssl_cert_file: /etc/postgresql/12/main/server.crt
ssl_key_file: /etc/postgresql/12/main/server.key
ssl_ca_file: /etc/postgresql/12/main/root.crt
ssl_crl_file: /etc/postgresql/12/main/root.crl
ssl_passphrase: your_ssl_passphrase
在每个节点上运行Patroni以初始化集群:
sudo patroni /etc/patroni.yml --initdb
在每个节点上启动Patroni服务:
sudo systemctl enable patroni
sudo systemctl start patroni
你可以使用以下命令检查集群的状态:
sudo patronictl status
你可以通过停止主节点来测试故障转移:
sudo systemctl stop postgresql
Patroni应该会自动进行故障转移,并将一个副本提升为主节点。
通过以上步骤,你可以在Debian上成功部署一个PostgreSQL集群,并实现高可用性和故障转移。