【DB宝91】PG高可用之主从流复制+keepalived 的高可用

2022-02-23 20:01:20 浏览数 (1)

简介

常见的高可用架构:

  • 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

0 人点赞