扩展PostgreSQL图钉:负载均衡和健康检查

5,806

通过马可·阿尔梅达,网站可靠性工程师图钉。。


介绍

运行PostgreSQL在一个主要主节点是简单和方便。有一个真理的来源,一个实例来处理所有的读和写,所有客户端连接到一个目标,和只有一个配置文件来维护。然而,这样的设置通常不会永远持续下去。随着流量的增加,如此数量的并发的读和写,读/写比率可能会过高,快速和可靠的复苏计划需要存在,的例子不胜枚举…

没有一个方法可以解决所有可能的扩展的挑战,但也有不少选择缩放PostgreSQL根据不同的需求。读/写比足够高时,有相当简单的扩展策略:设置二级PostgreSQL节点(副本),流数据从主节点(主)和分裂SQL流量通过发送所有写道(插入、删除,更新,UPSERT)单一主节点和所有读取(选择)副本。可以有许多复制品,所以这个策略量表更好更高的读/写比率。副本也有价值来实现灾难恢复计划可以促进一个掌握在发生故障。。

上下文

在2014年,图钉PostgreSQL 9。1两个服务器:一个基本的主-从设置利用PostgreSQL的内置流媒体复制。我们的基础设施是由几十个物理机器SoftLayer运行RHEL 5和我们使用HAproxykeepalive负载平衡。未来,已经计划,将会由EC2在AWS实例,运行Debian7后面弹性负载平衡器。。

随着流量的增加,我们知道我们需要进一步扩展PostgreSQL。图钉的SQL交通是(现在仍然是)操作,不到3%的是主节点上执行查询。这是个好消息,因为它意味着我们可以向外扩展的SELECT语句发送到集群只读副本和离开主独自处理DML命令。。

为了正确地实现这个我们需要:

  • 任意数量的只读副本在负载均衡器;;
  • 负载均衡器本身可能不是一个单点故障;;
  • 每个服务器上执行健康检查的一种方式,执行负载平衡器,所以失败的节点会被自动旋转的;;
  • 支持SoftLayer和AWS环境的过渡时期。。

复制,高可用性,和负载平衡

我们知道我们想要什么样子的基础设施从高层的角度来看,工具实现几乎所有的提供者(无花果。1)。。

图钉Postgres Acrhictecture

一个关键的细节,然而,远未解决的问题:健康检查。。

一个基本平在端口5432上是不够的。性能和复制延迟(和仍然是!)对我们非常重要的因素,如果一个给定的复制品是落后超过N(根据数据库和不同集群我们连接)秒,我们不喜欢使用它,直到它恢复,否则会导致失效。。

定制的健康检查

没有发现一个开源工具实现PostgreSQL的强大足够的健康检查,我们决定写自己的。这些都是要求:

  1. 同样工作在两个环境中,RHEL 5 / HAproxy Softlayer和Debian 7 /埃尔勃斯在AWS上
  2. 检查基本TCP连接,在任意端口,与一个可配置的超时
  3. 检查服务器的可用性通过运行一个测试查询时间限制——如果服务器负载下,也许是对TCP但不能够处理一个简单的查询(选择1)。我们需要区分这两个场景中,并可能采取不同的行动
  4. 检查复制延迟(时间自上一次事务是重播)
  5. 支持自定义健康检查SQL查询的形式——可扩展的和不会过时
  6. 低内存占用,避免“偷”内存从PostgreSQL
  7. 最小的外部依赖项列表

web服务,将一个简单的HTTP端点,在任何环境下工作,容易能够测试TCP连接。简单查询和测试复制延迟只是运行的一种特殊情况任意SQL查询健康检查,所以我们只专注于这一个和实现其他的语法糖的一种形式。。

编程语言一个重要的决策提供一个平台独立的解决方案与低内存占用和最小的依赖关系是编程语言的选择。我们认为一些从Python(已经相当大Python在图钉代码库),来(我们正在第一步),甚至生锈(太不成熟)。。

我们最终写作C。很容易满足所有的要求只有一个外部依赖实现web服务器,显然没有挑战任何Linux发行版上运行,维护,也可以说是实现最小的内存占用上述选择。。

最终结果

我们将该项目命名为“pgDoctor和使它公开Github库。它使用microhttpd实现一个非常简单的web服务,它监听端口8071,日志local7 syslog工具(可配置),并提供了相当丰富的配置参数。行为非常简单:一个HTTP GET请求到:8071年返回200年如果所有检查通过,否则500。所有的错误记录。。

pgDoctor已经运行在我们所有的PostgreSQL副本完美大约3年了,在经历了两个主要的升级(9。1 - > 9。4 - > 9。6)。到目前为止,有18个流副本,所有正在运行的pgDoctor除了PostgreSQL,分布在4集群。每个集群支持不同的用例,需要稍微不同的健康检查。。

PostgreSQL副本有时旋转了。最常见的原因是暂时的高复制延迟或一些瞬态问题与底层EC2实例。正如所料,他们被添加到集群没有任何干预一旦恢复正常,健康检查成功。。

图2显示了一个图(的规模)我们的生产环境:

  • 三个可用性区域;;
  • 一个主节点和两个热备份实例在不同的可用性区域;;
  • 三个集群的只读副本,流的主人,每个都有自己的负载均衡器;;
  • 几个客户,在所有可用性区域,阅读从一个或多个集群和写作的主人。。

图钉Postgres架构2

这听起来有趣吗?还有很多要做。。加入图钉帮助我们建立,的规模,和运行可靠性高服务!!

相关工作

http://www。severalnines。com/mysql-load-balancing-haproxy-tutorial #问题 https://www。digitalocean。com/community/tutorials/how-to-use-haproxy-to-set-up-mysql-load-balancing--3 http://www。severalnines。com/mysql-load-balancing-haproxy-tutorial #问题


最初发表在图钉工程

工程技术领导市场- - - - - - T。。。。
旧金山

你曾经试图雇佣一名水管工呢?房子干净呢?如果你有,有可能花费的时间比你的方式。在速食的时代,这太疯狂了,你还浪费研究的整个下午,调用和当地服务专业人士当你需要一个审查。雇佣他们的市场是巨大的b - 700美元仅在美国,但这个过程是效率低下,主要是离线。。

端到端图钉正在改变这个经验,建立一个市场相匹配的数以百万计的人几乎任何项目与当地的优点。在这些连接,我们的客户不仅每天做更多的事情,我们的优点是能够发展他们的企业和谋生做他们擅长。。

对市场的信任和安全团队

建立一个可信赖的市场是最大的挑战之一将本地服务网络。这是一个图钉的持续成功和增长的关键。市场的信任和安全小组负责构建的系统保证这种信任,通过改善我们的市场的基本质量。。

团队的工作是深入的技术和跨越广泛的领域从基础设施到机器学习模型产品特性。最近的例子包括:培训和运行机器学习模型在生产阻止虐待的请求,建立关联账户检测系统由一个图表> 100 mm节点了解哪些用户可能彼此之间的关系,改善我们的职业证书的产品通过提供高质量的,验证职业证书,增加客户的信任当招聘图钉。。

的作用

技术领导者在图钉负责驾驶团队的技术方向,和最终负责团队的影响。他们带领工程团队建设的系统和产品执行愿景。技术领导者必须深入的技术和领导从前面,我们期望TLs动手写代码,设计系统时,并帮助团队高质量的技术决策导致的影响。。

在市场上的信任和安全团队,你将在产品与跨职能的合作伙伴密切合作,数据科学/分析,开发和运营团队的战略和路线图。我们团队是高度协作,我们紧密合作在功能和与其他产品团队。。

责任

  • 提供深入的技术领导团队和与更广泛的eng领导团队合作,建立技术方向,设置优先级,和指导关键技术决策。。
  • 作为技术主管,做出实质性的技术贡献通过编写代码和设计系统。TLs预计不会导致每个项目或系统的设计,但预计将做一些深技术贡献我们的系统。。
  • 与跨职能跨产品,数据科学/分析,和运营团队制定一个令人信服的策略和路线图。。
  • 驱动执行团队,开发流程,并帮助团队找到前进的方法。。
  • 与其他工程和产品团队(如合作。亲,客户和市场动态)优先级和执行在图钉上对齐。。
  • 与其他工程领导人密切合作,不断改善图钉的工程文化在高节奏的生长环境。。

必备的条件

  • 2年以上经验的工程技术主管领导作用,在规模和5年以上经验构建软件。。
  • 流利的编程,能力和多种语言之间切换。在我们的堆栈,我们主要使用Golang,PHP,和Scala。。
  • 强有力的领导,沟通和协作能力。。

优异的资格

  • 信任和安全工作经验或支付风险在消费者技术公司和/或一个市场业务。。
  • 构建和扩展可靠的经验,高性能分布式系统或构建高质量的面向用户的技术产品。。

更多关于我们

图钉是一个连接的本地服务市场的顾客需要与地方、把事情做好熟练的专业人员可以提供帮助。从水管工和画家dj和私人教练,图钉帮助数以百万计的客户找到合适的专业为他们的项目,000类别。成立于2009年,总部设在旧金山,图钉是由从红杉资本超过2.5亿美元的投资,CapitalG,老虎全球管理,标枪投资合作伙伴和柏丽吉福德。。

图钉拥抱多样性。我们是骄傲的是一个机会均等的工作场所和不区分性的基础上,种族,的颜色,的年龄,性取向,性别身份,宗教,国家的起源,国籍,婚姻状况、经验丰富的状态,或残疾状况。根据旧金山公平的机会条例,我们将考虑就业与逮捕和定罪记录合格的申请者。。

评论
开放的工作atThumbtack
安卓工程师
旧金山
完成你的个人项目
工程主管
旧金山
完成你的个人项目
iOS工程师
旧金山

图钉是一个连接的本地服务市场客户提供任何他们需要的专业人员完成。。每天我们都团结在图钉的影响对人们的生活——帮助新娘计划他们的完美的婚礼,家庭改善家园,和小型企业的成长壮大。图钉今天有1,100 +类型的服务,数以百万计的客户请求,和成千上万的专业人士。加入我们日益增长的团队为了构建目的地任何你需要做的。。

双方的图钉市场(独立的专业人士和客户)将大大受益于增强的移动体验。想象你会做什么如果你能从你的iPhone运行您的业务?如果你可以雇佣一个职业白天或晚上的任何时候只有几个水龙头吗?天空的极限。。

前面——­结束团队图钉将巨资投入到网页设计和响应快,优雅的移动体验。我们看到这个投资回报难以置信。然而,我们认为我们可以做得更好,完全本土经验。我们开始通过释放图钉为客户应用程序:https://itunes。苹果。com/us/app/thumbtack/id852703300。但仍然有很多,我们想让你成为它的一部分。。

我们正在寻找的人的历史建筑神奇的iOS应用程序。你会处理好工程和设计团队那些渴望帮助您构建真正非凡的东西。

关于你的

  • 你是一个优秀的iOS /目标——­C工程师是舒适的建筑美丽的iOS的经历
  • 你有经验释放在App Store应用程序(我们正在寻找的人这样做过!)
  • 你兴奋的潜在移动技术将中小企业的生命
  • 你有同情心的用户和大的眼睛,用户­的材料设计
  • 你是一个伟大的沟通者。我们发现好的作家的人往往是伟大的思想家和伟大的程序员

更多关于我们

图钉的目的是把事情从房子装修活动策划音乐课和更多。每一年,超过200,全国000个专业服务越来越近1 500万个图钉项目,100独特的类别。成立于2009年,总部设在旧金山,图钉从红杉资本筹集了超过2.75亿美元,老虎全球管理,标枪投资合作伙伴,柏丽吉福德,和谷歌的资本。

图钉拥抱多样性。我们是骄傲的是一个机会均等的工作场所和不区分性的基础上,种族,的颜色,的年龄,性取向,性别身份,宗教,国家的起源,国籍,婚姻状况、经验丰富的状态,或残疾状况。根据旧金山公平的机会条例,我们将考虑就业与逮捕和定罪记录合格的申请者。。

# LI-POST

网站可靠性工程师
旧金山

图钉是一个连接的本地服务市场客户提供任何他们需要的专业人员完成。。每天我们都团结在图钉的影响对人们的生活——帮助新娘计划他们的完美的婚礼,家庭改善家园,和小型企业的成长壮大。图钉今天有1,100 +类型的服务,数以百万计的客户请求,和成千上万的专业人士。加入我们日益增长的团队为了构建目的地任何你需要做的。。

我们的网站可靠性工程师是一个混合的软件和系统工程师。我们的代码的操作问题和巧克力饼干。。

我们当前的任务是设计图钉的下一个版本的核心基础设施。我们负责可靠性,可伸缩性、和自动化,同时密切关注延迟,的性能,和能力。。

来帮助我们建立一个可伸缩的基础设施来帮助数以百万计的用户获得正确的职业生活的所有项目。。

我们需要你的帮助:

  • 自动化服务器配置过程(我们有500和增长),人类不应该参与。。
  • 影响力和创造新的设计和架构为越来越多的分布式系统(多地区,评估kubernetes)
  • 计划和执行配置管理(傀儡)和监控(DataDog)我们的平台。。
  • 设计的系统和流程工程师使用他们的软件部署到生产环境。。
  • 设计,写,和维护软件来提高可用性,可伸缩性、延迟,图钉和效率的服务,将第三­方工具(麋鹿,pgbouncer,ZFS,HAproxy)提供和编写软件时自己当没有其他适合该法案。。
  • 参与服务容量规划和需求预测,预测性能瓶颈和准备新的硬件。。
  • 软件性能分析和系统优化运行。。
  • 计划和执行污垢。。
  • 参与旋转随叫随到的职责。。

你擅长:

  • 流利的一个或多个:C,Scala中,Python,走了。。
  • 熟悉算法,数据结构,和复杂性分析。。
  • 工作经验与Unix / Linux系统从内核到壳牌和超越,与系统库的工作经验,文件系统,和客户端-服务器协议。。
  • 网络协议的经验和理论(TCP / IP,UDP,ICMP,MAC地址,IP数据包,DNS,OSI层,和负载平衡,等。)。。
  • 系统解决问题的方法。。

您还可能擅长:

  • 专业设计、分析、大规模分布式系统和故障排除。。
  • 操作系统(流程的深入了解,线程,IPC、并发性,锁,互斥锁,信号量,等。)。。
  • 强烈的所有权和开车。。
  • 经验的傀儡,或其他配置管理工具。。
  • 亚马逊网络服务的经验。。
  • PostgreSQL的经验优化和性能。。

更多关于我们

图钉的目的是把事情从房子装修活动策划音乐课和更多。每一年,超过200,全国000个专业服务越来越近1 500万个图钉项目,100独特的类别。成立于2009年,总部设在旧金山,图钉从红杉资本筹集了超过2.75亿美元,老虎全球管理,标枪投资合作伙伴,柏丽吉福德,和谷歌的资本。

图钉拥抱多样性。我们是骄傲的是一个机会均等的工作场所和不区分性的基础上,种族,的颜色,的年龄,性取向,性别身份,宗教,国家的起源,国籍,婚姻状况、经验丰富的状态,或残疾状况。根据旧金山公平的机会条例,我们将考虑就业与逮捕和定罪记录合格的申请者。。

# LI-POST

你可能也喜欢
电子商务规模:在Shopify技术堆栈
如何SendGrid比例每月400亿封电子邮件吗
流如何建立一个现代和JavaScript RSS阅读器吗
堆如何构建一个分析平台,自动追踪每个用户事件吗