patroni+etcd+antdb高可用

这篇具有很好参考价值的文章主要介绍了patroni+etcd+antdb高可用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

patroni+etcd+antdb高可用架构图

  • Patroni组件功能

自动创建并管理主备流复制集群,并且通过api接口往dcs(Distributed Configuration Store,通常指etcd、zookeeper、consul等基于Raft协议的键值存储)读取以及更新键值来维护集群的状态。键值包括集群状态、master/slave的节点信息等。

  • Etcd组件功能

Dcs的一种,存储键值信息,基于Raft协议同步信息。

  • Raft协议介绍

Raft是一个共识算法(consensus algorithm)。所谓共识,就是多个节点对某个事情达成一致的看法,即使是在部分节点故障、网络延时、网络分割的情况下。这些年最为火热的加密货币(比特币、区块链)就需要共识算法,而在分布式系统中,共识算法用于提高系统的容错性,比如分布式存储中的复制集(replication)。

Patroni针对网络异常脑裂引起集群异常的优化

当antdb集群出现网络异常时(比如延迟、分割等),

此时etcd集群处于僵死等待恢复状态(Raft协议保证,必须大于1/2节点才能存活),

此时patroni不会改变其管理下的antdb集群状态,

每个antdb节点会维持当前集群的状态信息(而不是从dcs模块实时读取集群信息),

此时patroni将自己置为暂停状态,并允许antdb提供只读服务。

Patroni针对单节点异常引起集群异常的优化

当数据库hangup或者出现out-of-memory异常等原因,

导致antdb单节点的实例处于僵死状态时,

此时patroni支持watchdog 看门狗软件,

定时探测与数据库实例的心跳监测,

当在指定时间内未返回心跳信息后,

watchdog 看门狗重置该节点整个数据库实例的状态,

并从etcd同步集群的状态信息,

保证整个集群处于一致的运行状态。

Patroni流程说明

Patroni流程图

patroni+etcd+antdb高可用

按照Patroni官方给的流程图,可以将整个流程划分为:

1.节点启动流程

2.节点拉起流程

3.处理健康集群流程

4.处理不健康集群流程

4.1节点启动

1.1:从DCS中加载集群信息

  • 判断条件2.1:如果在DCS中已经注册了节点,那么执行判断条件2.2,如果没有注册,则执行步骤1.2

1.2:在DCS中持久化节点信息

  • 判读条件2.2:判读当前节点Postgresql的状态,如果是开始中、停止中、重新启动中以及重新初始化中,那么进入判断条件2.3,否则就进入判断条件2.4
  • 判断条件2.3:判断该节点是否拥有领导者锁,如果拥有领导者锁,则执行步骤1.3,否则执行步骤1.4

1.3:更新领导者锁

1.4:持久化节点状态到DCS中

  • 判断条件2.4:集群是否还原状态,并且失败了,如果是执行步骤1.5,否则执行判断条件2.5

1.5: 如果当前节点是leader节点,则移除leader key。

  • 判断条件2.5:判断数据目录是否为空,如果是执行步骤1.6,否则执行判断条件2.6

1.6:执行②节点拉起流程

  • 判断条件2.6:集群信息在DCS中初始化,如果是则执行判断条件2.7,否则执行判断条件2.8
  • 判断条件2.7:数据目录是否属于集群,如果是执行判断条件2.9,否则执行步骤1.7
  • 判断条件2.8:集群是否有领导者,如果是执行判断条件2.9,否则执行步骤1.8

1.7:节点启动失败并退出

  • 判断条件2.9:节点是否健康状态(Postgresql运行中),如果是执行判断条件2.10,否则执行步骤1.9

1.8:初始化一个新集群

1.9:设置成只读节点及还原标志

  • 判断条件2.10:集群是否有一个领导者,如果是执行③处理健康集群流程,否则执行④处理不健康集群流程

4.2节点拉起

  • 判断条件2.1:集群是否有一个领导者,如果是执行步骤1.1,否则执行判断条件2.2

1.1:选择一个节点,并且获得备份,执行步骤1.2

1.2:执行pg_basebackup还原备份

  • 判断条件2.2:集群是否有一个初始键,如果是执行步骤1.3,否则执行步骤1.4

1.3:等待一个leader key

1.4:竞争初始键

  • 判断条件2.3:判断是否赢得了竞争初始键,如果是执行步骤1.5,否则执行步骤1.6

1.5:初始化数据库、运行Postgresql并且创建对应角色,执行判断条件2.4

1.6:需要等待leader key

  • 判断条件2.4:操作成功,执行步骤1.7,否则执行步骤1.8

1.7:将leader key存储到DCS中,执行步骤1.9

1.8:从DCS中移除初始化键,并且删除数据目录,执行步骤1.9

1.9:持久化节点状态到DCS中

4.3处理健康集群

  • 判断条件2.1:判断当前节点是否拥有领导者锁,如果是执行步骤1.1,否则执行步骤1.2

步骤1.1:尝试更新领导者锁,执行判断条件2.2

步骤1.2:跟随领导者

  • 判断条件2.2:如果执行成功,则执行判断条件2.3,否则执行步骤1.3
  • 判断条件2.3:当前节点是否作为主节点在运行,如果是执行步骤1.5,否则步骤1.4

1.3:执行节点降级操作

1.4:提升当前节点为主节点

1.5:持久化节点状态到DCS中

4.4处理不健康集群

  • 判断条件2.1:判断当前节点是否为健康状态,如果是执行步骤1.1,否则执行步骤1.2

1.1:创建leader key

1.2:尝试跟随其他节点

  • 判断条件2.2:是否可以获得锁,如果可以执行判断条件2.3,否则执行步骤1.2
  • 判断条件2.3:当前节点是否作为Postgresql主节点在运行,如果是执行步骤1.3,否则执行步骤1.4

1.3:持久化节点状态到DCS中

1.4:提升当前节点为主节点

Watchdog说明

watchdog 是一款内核自带的系统监控工具。普通情况下,它看似无关紧要,但却能在危机关头力挽狂澜。因为它能够在系统资源即将耗尽或即将崩溃时主动重启系统,避免由于硬件罢工而导致的被动重启或宕机造成的数据损失和业务损失。

 文章来源地址https://www.toymoban.com/news/detail-490076.html

到了这里,关于patroni+etcd+antdb高可用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • etcd在高磁盘IO的情况下会导致K8S集群不可用的解决思路

    etcd是Kubernetes中用于存储集群状态信息的关键组件。高磁盘IO可能导致etcd性能下降,从而影响整个Kubernetes集群的稳定性。解决这个问题可以从多个方面入手: 优化etcd配置 :检查etcd的配置参数,确保其与您的硬件配置和集群规模相适应。可以调整etcd的并发限制、缓存大小等

    2024年02月15日
    浏览(37)
  • Patroni集群中添加一个PG备库

    当要向Patroni集群中添加一个PG备库时,需要执行以下详细步骤: 编辑Patroni配置文件:打开Patroni配置文件,通常是 patroni.yml 或 postgresql.yml ,并找到 bootstrap 部分。 设置引导方法:在 bootstrap 部分中,确保 method 字段的值设置为\\\"initdb\\\",表示使用initdb工具进行初始化。 配置etc

    2024年02月06日
    浏览(37)
  • 【AntDB数据库】AntDB数据库服务端参数

    单机版数据库启动参数说明 命令格式: 选项说明: -c --core-files 在可行的平台上尝试允许服务器崩溃产生核心文件,方法是提升在核心文件上的任何软性资源限制。这通过允许从一个失败的服务器进程中获得一个栈跟踪而有助于调试或诊断问题。 -D datadir --pgdata=datadir 指定

    2024年02月09日
    浏览(41)
  • 【AntDB数据库】AntDB数据库操作系统配置(一)

    系统要求 redhat/centos 系列建议选择7.5及以上版本,不建议使用7.2版本 主机的防火墙、NUMA、SELINUX 需要关闭 最好配置本地YUM源,或者将操作系统ISO文件放在主机上,以便配置本地YUM源 antdb 用户需要 sudo 权限 数据盘建议使用一个挂载点,如  /data 或  /antdbdata 如果需要使用数据

    2024年02月09日
    浏览(47)
  • 亚信安慧AntDB:AntDB-M元数据锁之锁的获取(三)

    5 锁的获取 5.1 锁的强弱 当线程已经持有的锁比新申请的锁更强时,认为已经持有了锁,无需再对申请锁类型加锁。锁的强弱指持有的锁与其他锁的不兼容集合大小,集合相同锁相同,集合更大锁更强,否则无强弱关系。通过锁的兼容位图进行简单的位运算即可快速判断锁的

    2024年01月24日
    浏览(49)
  • 亚信安慧AntDB:深入了解AntDB-M元数据锁的实现之相关概念

    AntDB-M在架构上分为两层,服务层和存储引擎层。元数据的并发管理集中在服务层,数据的存储访问在存储引擎层。为了保证DDL操作与DML操作之间的一致性,引入了元数据锁(MDL)。AntDB-M提供了丰富的元数据锁功能,然而高并发锁操作很容易出现锁竞争、等待、死锁的问题,

    2024年01月22日
    浏览(45)
  • AntDB 企业增强特性介绍——异构数据库兼容评估

    在异构数据库迁移实施过程中,如何实现应用从 Oracle 等商业数据库透明平滑地迁移到 AntDB 中?其中最重要的一个环节就是实现对现有运行的生产数据库进行全面的数据采集、评估、分析、迁移和结果的校验。让一个烦琐的数据库替换过程可以全部自动完成。特别是对于金融

    2024年02月08日
    浏览(61)
  • AntDB数据库荣获 “2023年信创物联网优秀服务商”

    日前,在2023世界数字经济大会暨第十三届智博会 · 2023京甬信创物联网产融对接会上, AntDB数据库再获殊荣,获评“2023年信创物联网优秀服务商” 。 图1:2023年信创物联网优秀服务商颁奖现场 信创物联网是信息技术应用创新与物联网的结合 ,其以物联网技术为基础,能够

    2024年02月06日
    浏览(44)
  • AntDB 企业增强特性介绍——分布式集群下强一致备份恢复技术

    AntDB 使用 barman 实现数据的备份和恢复,但是集群节点部署在多台主机上,每个节点单独备份和恢复。多台服务器时钟不同步的情况下同时备份后, 无法真正实现基于时间点的数据完全和不完全恢复。AntDB 提供基于时间点的全局一致性备份恢复。 AntDB 可以根据用户定制的备份

    2024年02月08日
    浏览(47)
  • 【生态适配】亚信安慧AntDB数据库与契约锁完成兼容互认

    日前,亚信安慧AntDB数据库与上海亘岩网络科技有限公司(简称:契约锁)研发的契约锁电子签章产品完成兼容互认。经过双方团队的严格测试,亚信安慧AntDB数据库与契约锁(V4)完全兼容,整体运行稳定高效。 图1:产品兼容互认证明 随着我国数字经济建设的不断推进,企业

    2024年01月20日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包