已经写到了第五期, 最近深感学习一件东西,可以和秋风扫落叶的一样的学习和理解,也可以和冰血暴一样的学习了理解,决定用那种方式学习,主要依靠

1  这门技术是临时使用还是基础性的常识

2  这么技术是处于整体知识的什么层次,是基础层还是上层

3  如果这么技术在使用中出现问题,则会造成多大的风险,当时在去弥补是否能快速降低损失.

所以 patroni 占用了不短的一个时间, 对比proxysql也是一样,那个系列也会持续.

首先先说为什么要有watchdog  , 见上图, 如果我们的系统在运行是出现问题,节点PG1 失效了,无论是网络的问题,还是主机本身的问题,此时都是要进行重新选举,此时问题就产生在 3 开始选举leader

上期说配置文件的时候

  • loop_wait: the number of seconds the loop will sleep. Default value: 10

  • ttl: the TTL to acquire the leader lock (in seconds). Think of it as the length of time before initiation of the automatic failover process. Default value: 30

  • retry_timeout: timeout for DCS and PostgreSQL operation retries (in seconds). DCS or network issues shorter than this will not cause Patroni to demote the leader. Default value: 10

还的祭出这三条, 1 loop_wait, 2 ttl  3 retry_timeout

已默认值来说一个节点的切换 10+ 30 + 10 是最大的时间, 但实际上会有另一个问题,在选举中,此时所有节点包含失效的节点,都会出现一个问题,此时没有节点是leader, 在此时数据写入的需求是怎么处理的问题.

未了避免脑裂,Patroni 需要确认postgresql 不能在leader 键值在DCS过期后继续接受事务的commit, 在patroni 无法进行 leader lock后,则patroni 将开始试图停止postgresql的方式来保证此期间的不会有脑裂的问题.

watchdog 的主要产生的原因是,如果patroni 无法在此刻关闭postgresql 怎么办? 因为patroni 也不是"孙悟空",也是人肉一枚, 如果由于各种原因导致patroni本身无法工作,watch dog 将尝试从新启动系统,如果工作后,无论怎样patroni还是无法正常工作,则watchdog模式如果设置成required 则这个所在的问题节点是不能成为leader的.当整体选举leader成功后, patroni 将会让watchdog进入休眠的状态.

但在设计watchdog 时会有一个问题,因为设计时差的问题,导致watch dog 本身无法获得patroni 发送的信息,最终在这个工作周期,无法激活 watch dog.  这个时间的设定较 safety margin. 官方给出的建议并不明确,只提到了 watchdog timeout 调整到ttl的一半的时间, 确保watchdog能受到信息,从对loop_wait 和  retry_timeout入手.

默认使用patroni 的数据库机器需要执行

modprobe softdog

chown postgres /dev/watchdog

这里大部分使用的是 LINUX 本身的watch dog

关于watch dog有三个设置

watchdog:

mode:  Allowed values: off, automatic, required

mode的值有三个  1  off 不运行watch dog  2  automatic 根据设置的情况,默认使用watch dog ,但如果配置出现问题,watch dog 出现问题,则不使用watch dog ,required  必须使用watch dog 否则无法选择leader

device: /dev/watchdog   watch dog 设备本身

safety_margin: 5  看门狗触发和主控键过期之间的安全余量秒数。

PostgreSQL 来自欧罗巴Patroni watchdog 汪汪汪 5相关推荐

  1. mysql迁移至postgresql_PostgreSQL来自欧罗巴Patroni系列技术主题一

    文章转载自公众号:AustinDatabases 本次阅读时长: . . 系列一:为什么选择Patroni?2019.Pgconf.Asia中有这么一篇演讲,关于PostgreSQL的高可用的问题,其 ...

  2. 创建一个 Dog 类继承 Thread ,每 2 秒叫一次(汪汪汪!!),创建一个 Cat 实现 Runnable 接口,每 3 秒求抚摸一次(主人快摸摸我!!),主函数(主线程)从 1 输出到 10

    题目:创建一个 Dog 类继承 Thread ,每 2 秒叫一次(汪汪汪!!),创建一个 Cat 实现 Runnable 接口,每 3 秒求抚摸一次(主人快摸摸我!!),主函数(主线程)从 1 输出到 ...

  3. 2019年无限法则服务器,无限法则1月16日更新内容一览 新地图欧罗巴海岛介绍

    无限法则1月16日更新内容一览 新地图欧罗巴海岛介绍 2019-01-16 11:21:43来源:游戏下载编辑:野狐禅评论(0) <无限法则>1月16日即将进行近期最大的一次更新,第二赛季 ...

  4. 古希腊神话故事6 :欧罗巴

    施瓦布 腓尼基王国的首府泰乐和西顿是块富饶的地方.国王阿革诺耳的女儿欧罗巴, 一直深居在父亲的宫殿里.一天,在半夜时,她做了一个奇怪的梦.她梦见世界 的两大部分亚细亚和对面的大陆变成两个女人的模样,在 ...

  5. 山东之谜 山东人的祖先原来是欧罗巴人种

    中网新空气之军事天地 本文版权归作者 maomi 和中网新空气共同拥有, 转贴请注明作者及出处 如将本文用于媒体出版, 请与作者本人联系 文章标题: 山东之谜!山东人的祖先原来是欧罗巴人种?!难以置信 ...

  6. 欧罗巴巅峰之战,尤文VS皇马谁终执牛耳?

     16/17赛季欧冠决赛即将打响, 是尤文图斯夺魁, 还是皇马卫冕成功? 这场欧罗巴巅峰之战, 你打算在哪儿看? 宅家里?太无聊! 泡酒吧?没新意! 难道你不想亲身体验现场狂High气氛? 欧冠决 ...

  7. postgresql 高可用 etcd + patroni 之二 patroni

    os: centos 7.4 postgresql: 9.6.9 etcd: 3.2.18 patroni: 1.4.4 patroni + etcd 是在一个postgrsql 开源大会上 亚信的一 ...

  8. postgresql 高可用 etcd + patroni 之六 callback bind vip

    os: centos 7.4 postgresql: 9.6.9 etcd: 3.2.18 patroni: 1.4.4 本篇blog介绍下 etcd + patroni 发生切换时使用 callba ...

  9. colab跑通YOLOV3SPP(代码来自霹雳巴拉WZ)

    记录以下,方便日后学习 1)下载码源 !git clone https://github.com/WZMIAOMIAO/deep-learning-for-image-processing.git 2 ...

最新文章

  1. REACT day 1
  2. python 用途-Python在每个行业的用处
  3. 不信不能雷倒你!超牛高考作文
  4. scala:Scala class的构造方法与继承
  5. 前景检测算法(八)--SACON算法
  6. 7.分布式服务架构:原理、设计与实战 --- 服务的容器化过程
  7. VS2017 安装打包插件
  8. 基于RDP瘦客户机协议的简要说明
  9. jar文件不能在nokia s60 sdk模拟器中运行
  10. 计算机硬盘型号怎么看,硬盘编号怎么看
  11. editormd html 转义,Markdown(editormd)语法解析成HTML
  12. 西安省某小学能耗监测及电力监控系统的研究与应用
  13. 强化学习:确定性策略梯度(DDPG)
  14. 4.Scanner类、Random类、ArrayList 类
  15. Eclipse报错:The project: WMY which is referenced by the classpath, does not exist.
  16. 基于SSM或SpringBoot的JavaWeb项目——写作分析系统
  17. python调用shell命令
  18. Splash抓取jd
  19. linux开启dhcpclient服务,dhcp client 配置
  20. 智科某课小论文:当今世界计算机硬件与软件发展现状

热门文章

  1. mysql8 中的rank_Mysql8.0+中的rank()、row_num()、dense_rank()等窗口函数
  2. [原创]戒盈祈愿(200509总结)
  3. cout的格式控制——关于cout.width()和cout.fill()
  4. 【Web前端】千年之恋注册页面——源代码展示
  5. brpc internal
  6. bim的二次开发需要什么语言_BIM软件的二次开发是什么?都需要做哪些准备?
  7. 再见亦是兄弟:别少旭
  8. 手游代理加盟最准解释来了
  9. Python爬虫,爬取百度贴吧图片和视频文件,xpath+lxml,访问被拒的原因分析
  10. 大数据工程师工作笔记之集群节点准备