简介
常见的高可用架构:
- pg keepalived:https://www.xmmup.com/pggaokeyongzhizhucongliufuzhikeepalived-degaokeyong.html
- pg pgpool:pgpool-II和pgpoolAdmin的使用
- pg repmgr:PostgreSQL高可用之repmgr(1主2从 1witness) Pgpool-II实现主从切换 读写分离 负载均衡
- pg Patroni etcd:PG高可用集群之Patroni etcd HAProxy keepalived Prometheus Grafana监控 部署
通过keepalived 来实现 PostgreSQL 数据库的主从自动切换,以达到高可用。当主节点宕机时,从节点可自动切换为主节点,继续对外提供服务。
在这一方案中Keepalived程序主要用来探测PostgreSQL主库是否存活,如果Keepalived主节点或主库故障,Keepalived备节点将接管VIP 并日激活流复制备库.从而实现高可用。
环境架构
IP地址 | 操作系统 | 主机名 | 角色 | 端口 | 说明 |
---|---|---|---|---|---|
172.72.6.6 | CentOS 7.6 | lhrpg66 | 主库 | 5433 | 安装postgesql 13.3 keepalived v1.3.5 |
172.72.6.7 | CentOS 7.6 | lhrpg67 | 从库 | 5433 | 安装postgesql 13.3 keepalived v1.3.5 |
172.72.6.8 | VIP | 在pg66和pg67之间进行漂移 |
配置主从流复制
参考:PG12高可用之1主2从流复制环境搭建及切换测试
主机环境准备
代码语言:javascript复制-- 创建PG高可用环境专用网络
docker network create --subnet=172.72.6.0/24 pg-network
-- 申请主机
docker rm -f lhrpg66
docker run -d --name lhrpg66 -h lhrpg66
-p 64306:5433 --net=pg-network --ip 172.72.6.6
-v /sys/fs/cgroup:/sys/fs/cgroup
--privileged=true lhrbest/lhrpgall:2.0
/usr/sbin/init
docker rm -f lhrpg67
docker run -d --name lhrpg67 -h lhrpg67
-p 64307:5433 --net=pg-network --ip 172.72.6.7
-v /sys/fs/cgroup:/sys/fs/cgroup
--privileged=true lhrbest/lhrpgall:2.0
/usr/sbin/init
[root@docker35 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a320c1882201 lhrbest/lhrpgall:2.0 "/usr/sbin/init" 23 seconds ago Up 21 seconds 0.0.0.0:64307->5433/tcp, :::64307->5433/tcp lhrpg67
e9c67922b0e8 lhrbest/lhrpgall:2.0 "/usr/sbin/init" 26 seconds ago Up 24 seconds 0.0.0.0:64306->5433/tcp, :::64306->5433/tcp lhrpg66
注意:该容器已安装PostgreSQL 13.3,故只需要配置主从即可,安装用户为pg13。 需要关闭其它版本的pg: systemctl stop pg11 systemctl stop pg12 systemctl stop pg94 systemctl stop pg96 systemctl stop postgresql-13.service systemctl disable pg11 systemctl disable pg12 systemctl disable pg94 systemctl disable pg96 systemctl disable postgresql-13.service
主库放开防火墙
代码语言:javascript复制cat << EOF > /pg13/pgdata/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
local all all trust
host all all 127.0.0.1/32 trust
host all all 0.0.0.0/0 md5
host replication all 0.0.0.0/0 md5
EOF