PG高可用集群之Patroni + etcd + HAProxy + keepalived + Prometheus + Grafana监控 部署

0    1037    9

👉 本文共约11531个字,系统预计阅读时间或需44分钟。


简介

使用postgresql + etcd + patroni + haproxy + keepalived可以实现PG的高可用集群,其中,以postgresql做数据库,Patroni监控本地的PostgreSQL状态,并将本地PostgreSQL信息/状态写入etcd来存储集群状态,所以,patroni与etcd结合可以实现数据库集群故障切换(自动或手动切换),而haproxy可以实现数据库读写分离+读负载均衡(通过不同端口实现),keepalived实现VIP跳转,对haproxy提供了高可用,防止haproxy宕机。

Etcd用于Patroni节点之间共享信息。Patroni监控本地的PostgreSQL状态。如果主库(Primary)故障,Patroni把一个从库(Standby)拉起来,作为新的主(Primary)数据库, 如果一个故障PostgreSQL被抢救过来了,能够重新自动或手动加入集群。

Patroni基于Python开发的模板,结合DCS(Distributed Configuration Store,例如 ZooKeeper, etcd, Consul )可以定制PostgreSQL高可用方案。Patroni接管PostgreSQL数据库的启停,同时监控本地的PostgreSQL数据库,并将本地的PostgreSQL数据库信息写入DCS。Patroni的主备端是通过是否能获得 leader key 来控制的,获取到了leader key的Patroni为主节点,其它的为备节点。

其中Patroni不仅简单易用而且功能非常强大。

  • 支持自动failover和按需switchover

  • 支持一个和多个备节点

  • 支持级联复制

  • 支持同步复制,异步复制

  • 支持同步复制下备库故障时自动降级为异步复制(功效类似于MySQL的半同步,但是更加智能)

  • 支持控制指定节点是否参与选主,是否参与负载均衡以及是否可以成为同步备机

  • 支持通过pg_rewind自动修复旧主

  • 支持多种方式初始化集群和重建备机,包括pg_basebackup和支持wal_epgBackRestbarman等备份工具的自定义脚本

  • 支持自定义外部callback脚本

  • 支持REST API

  • 支持通过watchdog防止脑裂

  • 支持k8s,docker等容器化环境部署

  • 支持多种常见DCS(Distributed Configuration Store)存储元数据,包括etcd,ZooKeeper,Consul,Kubernetes

架构规划

部署规划如下:

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
主机IP组件备注
lhrpgpatroni71172.72.6.71PostgreSQL 13.3 + Patroni 2.1.2主节点,yum安装PG,pip3安装Patroni
lhrpgpatroni72172.72.6.72PostgreSQL 13.3 + Patroni 2.1.2备节点1,yum安装PG,pip3安装Patroni
lhrpgpatroni73172.72.6.73PostgreSQL 13.3 + Patroni 2.1.2备节点2,yum安装PG,pip3安装Patroni
lhretcd74172.72.6.74etcd 3.3.11leader,yum安装etcd
lhretcd75172.72.6.75etcd 3.3.11follower,yum安装etcd
lhretcd76172.72.6.76etcd 3.3.11follower,yum安装etcd
lhrhaproxyka77172.72.6.77HAProxy 1.5.18 + keepalived 1.3.5yum安装HAProxy + keepalived主节点
lhrhaproxyka78172.72.6.78HAProxy 1.5.18 + keepalived 1.3.5yum安装HAProxy + keepalived备节点
lhrmonitor172.72.6.79Prometheus + Grafana + etcd brower已内置普罗米修斯监控软件,需要配置监控PG和HAProxy,etcd浏览
172.72.6.70VIP虚拟IP,在172.72.6.77和172.72.6.78之间进行漂移,附着于eth0网卡

架构图如下:

PG高可用集群之Patroni + etcd + HAProxy + keepalived + Prometheus + Grafana监控 部署

拓扑图如下:

PG高可用集群之Patroni + etcd + HAProxy + keepalived + Prometheus + Grafana监控 部署

本文包括如下几个部分:

1、搭建1主2从的PG流复制环境
2、搭建3节点的etcd集群,并配置etcd-browser WEB可视化界面
3、patroni安装及配置实现switchover和failover故障切换
4、配置HAProxy和Keepalived实现负载均衡+读写分离
5、配置普罗米修斯(prometheus+grafana)监控PG+HAproxy+etcd集群
6、高可用测试

如果配置防火墙,需要开放的端口:

程序端口用途
PostgreSQL5432数据库监听端口
Patroni8008restapi监听端口
etcd2379/2380客户端访问端口和服务监听端口
haproxy1080/5000/5001Web访问端口和数据库对外服务端口
grafana3000Web登录端口
prometheus9090Web登录端口
node_exporter9100对外服务端口
postgres_exporter9187对外服务端口
haproxy_exporter9101对外服务端口

环境准备

    头像

    小麦苗

    学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

    您可能还喜欢...

    发表评论

    您的电子邮箱地址不会被公开。

    4 × 5 =

     

    嘿,我是小麦,需要帮助随时找我哦
    • 18509239930
    • 个人微信

    • 麦老师QQ聊天
    • 个人邮箱
    • 点击加入QQ群
    • 个人微店

    • 回到顶部
    返回顶部