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

1    2660    14

Tags:

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


简介

使用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

  • 支持一个和多个备节点

  • 支持级联复制

    本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
  • 支持同步复制,异步复制

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

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

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

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

  • 支持自定义外部callback脚本

  • 支持REST API

  • 支持通过watchdog防止脑裂

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

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

  • 架构规划

    部署规划如下:

    主机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对外服务端口

    环境准备

标签:

Avatar photo

小麦苗

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

您可能还喜欢...

1 条回复

  1. Avatar photo xiaopengfei说道:

    笔耕不辍,我辈学习楷模。

发表回复

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

  • DB宝
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部