2012-06-27 23 views
11

最近我正在考虑在生产环境中使用Amazon RDS多可用区域部署服务,并且我已阅读相关文档。Amazon RDS的多可用区域部署如何实现?

但是,我有一个关于故障转移的问题。在Amazon RDS的常见问题解答中,故障转移描述如下:

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

故障转移由Amazon RDS自动处理,因此您可以尽快恢复 数据库操作,而无需管理员干预。在故障转移时,Amazon RDS只需简单地将您的数据库实例的规范 名称记录(CNAME)翻转为指向备用数据库 ,该备用数据库又会升级为新的主数据库。我们鼓励您 遵循最佳实践并在应用层执行数据库连接重试 。故障转移时间是其执行故障恢复完成时间的函数。从开始到结束,故障转移通常在3分钟内完成。

从上面的描述中,我想必须有一个监测服务,它可以检测主实例的故障并进行翻转。

我的问题是,哪个AZ做这个监控服务主机?有3种可能性: 1.同样AZ作为主 2.同AZ作为待机 3.另一个AZ

显然1 & 2将不会是这种情况,因为它不能处理这种情况的是整个AZ不可用。那么,如果3是这种情况,那么监控服务的AZ是否会下降呢?是否有另一项服务来监控这个监控服务?这似乎是一个无尽的多米诺骨牌。

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

回答

0

猜测 - 监视服务上的所有AZS运行,并是指运行实例的共享列表(其为横跨AZS同步复制)。只要一个AZ的监控服务发现另一个AZ已关闭,它就会将所有正在运行的实例的CNAMES翻转到当前正在运行的AZ。

+0

如果两个AZ之间的通信被破坏,那么会发生什么? – ciphor

+0

@ciphor comms链接不仅可能,但肯定是多余的,与其他所有内容一样。你的问题是一个系统的可靠性和可用性。这一切都涉及到应用冗余和降低风险的问题。虽然,它永远不会是完美的。 – Viccari

+0

另外我有一个查询如何,如果我的主要RDS dbinstance在N.Virginia地区,那么我怎么能找到辅助DBinstance驻留在哪里? – user3086014

0

我们没能确定在故障转移实例所在,但我们主要是在美国西-2C和二次是在美国西-2B。

使用PostgreSQL,我们的数据变得损坏,因为与亚马逊量的物理缺陷(尽可能接近我们可以告诉)。我们当时没有设置多可用区,所以要恢复,我们必须尽可能及时地进行即时恢复。亚马逊支持向我们保证,如果我们继续使用多可用区,他们将自动转到其他AZ。这引出了他们如何确定的问题,并将数据腐败传播到其他AZ?

正因为如此shisaster,我们还增加了一个只读副本,这似乎让很多我更有意义。我们还使用RO副本进行读取和其他功能。我从亚马逊代表了解到,我们可以将多可用区设置看作更像RAID的情况。

0

从文档,故障转移如果下列条件时,就会发生:在初级状况区

  • 损失的可用性
  • 通过网络连接到上主初级
  • 计算单元故障的损失
  • 主存储故障

这意味着监测不在相同的AZ。读取副本最有可能使用mysql函数(https://dev.mysql.com/doc/refman/5.7/en/replication-administration-status.html)来监视主服务器的状态,并在主服务器无法访问时采取措施。

当然,这带来了问题,如果复制品AZ失败会发生什么?亚马逊最有可能检查副本的故障检测,以确定它是否失败或主要故障。