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

1    1911    12

Tags:

👉 本文共约11515个字,系统预计阅读时间或需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

    本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
  • 支持通过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对外服务端口

环境准备

标签:

头像

小麦苗

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

您可能还喜欢...

1 条回复

  1. 头像 xiaopengfei说道:

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

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

18 + 16 =

 

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

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

  • 回到顶部
返回顶部