12

最近我正在考虑在生产环境中使用 Amazon RDS Multi-AZ 部署服务,并且我已经阅读了相关文档。

但是,我有一个关于故障转移的问题。在 Amazon RDS 的 FAQ 中,failover 是这样描述的:

问:多可用区故障转移期间会发生什么,需要多长时间?

故障转移由 Amazon RDS 自动处理,因此您可以在无需管理干预的情况下尽快恢复数据库操作。故障转移时,Amazon RDS 只需翻转您的数据库实例的规范名称记录 (CNAME) 以指向备用数据库实例,而备用数据库又被提升为新的主数据库实例。我们鼓励您遵循最佳实践并在应用层实现数据库连接重试。故障转移时间是完成崩溃恢复所需时间的函数。从头到尾,故障转移通常在三分钟内完成。

从上面的描述,我想肯定有一个监控服务可以检测到主实例的故障并进行翻转。

我的问题是,这个监控服务托管在哪个AZ?有 3 种可能性: 1. 与主 AZ 相同 2. 与备用 AZ 相同 3. 另一个 AZ

显然 1&2 不会是这种情况,因为它无法处理整个 AZ 不可用的情况。那么,如果是3的话,监控服务的AZ宕机了怎么办?是否有其他服务可以监控此监控服务?这似乎是一个无尽的多米诺骨牌。

那么,亚马逊如何确保 RDS 在多可用区部署中的可用性?

4

4 回答 4

1

那么,亚马逊如何确保 RDS 在多可用区部署中的可用性?

鉴于 RDS 是一种 PaaS 服务,我认为这种情况下的“如何”是通过设计从用户中抽象出来的。多可用区部署有很多隐藏的内容,但以下情况是正确的:

  • 您无权访问辅助实例,除非发生故障转移
  • 保证辅助实例位于与主实例不同的 AZ

在他的博客文章中,John Gemignani 提到了observer在多可用区架构中管理哪个 RDS 实例处于活动状态的概念。但就您而言,什么observer?它从哪里观察?

根据我对 AWS 的经验,这是我的猜测:

RDS 多可用区部署中的observer高可用性服务部署在 RDS 多可用区可用的每个区域的每个可用区中,并利用现有 AWS 平台服务来监控所有基础设施的运行状况和状态可能会影响 RDS 实例。构成 AWS 平台的某些服务observer可能是 AWS 平台本身的一部分,并且对用户隐藏。

我愿意打赌,构成 CloudWatch Events 的相同底层服务在 RDS 多可用区的某些容量中使用observer。在 Jeff Barr 宣布 CloudWatch Events 的博客文章中,他这样描述该服务:

您可以将 CloudWatch Events 视为 AWS 环境的中枢神经系统。它连接到受支持服务的每个角落,并在发生操作变化时意识到它们。然后,在您的规则驱动下,它会激活功能并发送消息(如果您愿意,可以激活肌肉)以响应环境、进行更改、捕获状态信息或采取纠正措施。

以同样的方式思考observer- 它是 AWS 平台的一个组件,提供了我们作为平台用户不需要考虑的功能。这是 AWS 在责任共担模型中的职责的一部分。

于 2018-06-12T20:27:55.753 回答
0

我们无法确定故障转移实例所在的位置,但我们的主实例位于 US-West-2c,辅助实例位于 US-West-2b。

使用 PostgreSQL,我们的数据由于 Amazon 卷的物理问题而损坏(据我们所知)。当时我们没有设置多可用区,因此为了恢复,我们必须尽可能接近事件的时间点执行时间点恢复。亚马逊支持向我们保证,如果我们继续使用多可用区,它们会自动滚动到另一个可用区。这就引出了他们如何确定这一点的问题,以及数据损坏是否会传播到其他可用区?

因为那个 shisaster,我们还添加了一个只读副本,这对我来说似乎更有意义。我们还将 RO 副本用于读取和其他功能。我从我的 Amazon 代表那里了解到,可以将 Multi-AZ 设置视为一种 RAID 情况。

于 2015-04-21T18:30:26.743 回答
0

有根据的猜测 - 监控服务在所有 AZ 上运行,并引用运行实例的共享列表(跨 AZ 同步复制)。一旦一个 AZ 上的监控服务注意到另一个 AZ 已关闭,它会将所有正在运行的实例的 CNAMES 翻转到当前已启动的 AZ。

于 2012-07-05T10:56:38.367 回答
0

从文档中,如果满足以下条件,则会发生故障转移:

  • 主可用区中的可用性丢失
  • 与主节点的网络连接丢失
  • 主计算单元故障
  • 主存储故障

这推断监控不在同一个 AZ中。最有可能的是,只读副本正在使用 mysql 函数 ( https://dev.mysql.com/doc/refman/5.7/en/replication-administration-status.html ) 来监控主服务器的状态,并在主变得无法访问。

当然,这就带来了一个问题,如果副本 AZ 发生故障会发生什么?亚马逊很可能会检查副本的故障检测,以确定它是失败还是主要是失败。

于 2015-11-23T20:23:21.947 回答