Kubernetes利用Patroni部署高可用PostgreSQL(1)-- 准备

大雄good · · 2245 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

部署高可用的PostgreSQL一直都是一个比较麻烦的事情,因为官方或者社区并没有一个official的解决方案。由于项目需要,所以花了一些时间去调研并且实践了一些关于PostgreSQL的主流HA方案,包括:Crunchy, StolonPatroni, 还有就是pgpool+repmgr这种方案。看到网上关于Stolon的blog有一篇,但是那篇其实是翻译人家老外的,结果被到处转发(说明我们还是懒喜欢别人汉化的)。在国内外暂时还没找到Patroni在Kubernetes上部署的Blog。所以这里就简单分享一下,以便大家以后有遇到问题可以相互帮助。

方案选型

几种方案简单比较一下:

  1. 首先repmgr这种方案的算法有明显缺陷,非主流分布式算法,直接pass;
  2. StolonPatroni相对于Crunchy更加Cloud Native, 后者是基于pgPool实现。
  3. CrunchyPatroni相对于Stolon有更多的使用者,并且提供了Operator对于以后的管理和扩容

根据上面简单的比较,最终我选择了Patroni,其实我内心上是更想使用Stolon的,因为它是golang写的,可以顺便学习一下人家的代码。但是其实学golang看kubernetes的源码非常足够了,另外Patroni还可以用operator部署,后期扩展更方便。

架构规划

architecture.png

总体框架是如上图所示,是比较简单的,利用haproxy来做服务发现和代理。PostgreSQL节点之间通过Streaming Sync进行同步。Patroni作为daemon进程用来管理PostgreSQL集群并且定期更新TTL至Kubernetes(也可以使用ETCD作为DCS)。

在我本机上我规划一个Kubernetes集群(1 master1 minion), 有时候实在是卡,所以就把所有的资源尽量减少了。由于在家没连公司VIP,受限于大天朝墙的影响,直接找了一篇国内的部署方法。具体流程网上都很多教程了,就不介绍了,有问题可以交流。


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:大雄good

查看原文:Kubernetes利用Patroni部署高可用PostgreSQL(1)-- 准备

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:701969077

2245 次点击  
加入收藏 微博
1 回复  |  直到 2019-03-18 06:41:18
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传