在CentOS上设计PostgreSQL的高可用性架构,可以采用多种策略和技术。以下是一个基本的设计方案,使用了Patroni和Keepalived来实现高可用性:
1. 环境准备
- 两台或多台CentOS服务器:用于部署PostgreSQL主从复制。
- 网络配置:确保服务器之间可以互相通信。
2. 安装PostgreSQL
在所有服务器上安装PostgreSQL:
sudo yum install -y postgresql-server
初始化数据库并启动服务:
sudo postgresql-setup initdb
sudo systemctl start postgresql
sudo systemctl enable postgresql
3. 配置主从复制
主节点配置
编辑主节点的postgresql.conf文件:
sudo vi /var/lib/pgsql/data/postgresql.conf
修改以下参数:
listen_addresses = '*' # 监听所有IP
wal_level = replica # 设置为replica级别
max_wal_senders = 10 # 允许的最大WAL发送者数量
wal_keep_segments = 64 # 保留的WAL文件数量
hot_standby = on # 启用热备
编辑pg_hba.conf文件:
sudo vi /var/lib/pgsql/data/pg_hba.conf
添加以下行以允许从节点连接:
host replication replicator 192.168.1.0/24 md5
重启PostgreSQL服务:
sudo systemctl restart postgresql
从节点配置
在从节点上执行以下步骤:
-
停止PostgreSQL服务:
sudo systemctl stop postgresql -
备份主节点数据:
sudo pg_basebackup -h-U replicator -D /var/lib/pgsql/data --wal-method=stream --no-password -
修改从节点的
postgresql.conf文件:sudo vi /var/lib/pgsql/data/postgresql.conf修改以下参数:
listen_addresses = '*' # 监听所有IP wal_level = replica # 设置为replica级别 max_wal_senders = 10 # 允许的最大WAL发送者数量 hot_standby = on # 启用热备 -
修改从节点的
recovery.conf文件:sudo vi /var/lib/pgsql/data/recovery.conf添加以下内容:
standby_mode = 'on' primary_conninfo = 'host=dbname=postgres user=replicator password= ' restore_command = 'cp /var/lib/pg_xlog/archive/%f %p' trigger_file = '/tmp/postgresql.trigger.5432' -
启动从节点PostgreSQL服务:
sudo systemctl start postgresql
4. 安装和配置Patroni
Patroni是一个用于管理PostgreSQL高可用性的工具。
安装Patroni
在所有服务器上安装Patroni:
sudo yum install -y python-pip
sudo pip install patroni
配置Patroni
创建Patroni配置文件/etc/patroni.yml:
scope: postgres
namespace: /db
name: postgres_master
restapi:
listen: 0.0.0.0:8008
connect_address:
etcd:
host:
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
shared_buffers: 25% of total RAM
work_mem: 4MB
maintenance_work_mem: 128MB
effective_cache_size: 75% of total RAM
postgresql:
listen: 0.0.0.0:5432
connect_address:
data_dir: /var/lib/pgsql/data
pg_hba:
- host replication replicator 0.0.0.0/0 md5
authentication:
replication:
username: replicator
password:
parameters:
wal_level: replica
max_connections: 100
shared_buffers: 25% of total RAM
work_mem: 4MB
maintenance_work_mem: 128MB
effective_cache_size: 75% of total RAM
postgresql:
listen: 0.0.0.0:5433
connect_address:
data_dir: /var/lib/pgsql/data
pg_hba:
- host replication replicator 0.0.0.0/0 md5
authentication:
replication:
username: replicator
password:
parameters:
wal_level: replica
max_connections: 100
shared_buffers: 25% of total RAM
work_mem: 4MB
maintenance_work_mem: 128MB
effective_cache_size: 75% of total RAM
启动Patroni
在主节点上启动Patroni:
sudo patroni /etc/patroni.yml
Patroni会自动检测并管理PostgreSQL集群。
5. 安装和配置Keepalived
Keepalived用于实现虚拟IP(VIP)的高可用性。
安装Keepalived
在所有服务器上安装Keepalived:
sudo yum install -y keepalived
配置Keepalived
创建Keepalived配置文件/etc/keepalived/keepalived.conf:
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass
}
virtual_ipaddress {
}
}
virtual_server 5432 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 5432 {
weight 1
TCP_CHECK {
connect_timeout 10
connect_port 5432
}
}
real_server 5432 {
weight 1
TCP_CHECK {
connect_timeout 10
connect_port 5432
}
}
}
启动Keepalived
在所有服务器上启动Keepalived:
sudo systemctl start keepalived
6. 验证高可用性
- 访问VIP地址
,应该能够连接到PostgreSQL数据库。 - 模拟主节点故障,观察从节点是否能够自动接管成为新的主节点。
通过以上步骤,你可以在CentOS上实现一个基本的PostgreSQL高可用性架构。根据实际需求,可以进一步优化和扩展。
以上就是关于“centos postgresql高可用性架构设计”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm