多可用区RDS测试故障转移和连接监控

时间:2017-03-08 16:05:06

标签: amazon-web-services monitoring amazon-rds failover

我的问题分为两部分:

  1. 为测试目的启动RDS故障转移的最佳方法是什么?
  2. 如何在故障转移期间监控连接,以便观察AWS将用户重新连接到备用实例所需的时间?
  3. 关于第(1)部分:如果我理解正确,所有实例修改都在备用数据库上进行,然后AWS通过在主服务器更新时将CNAME翻转到备用数据库进行故障转移,因此如果我要进行任何操作一种实例修改并选择"立即申请,"它应该导致故障转移,对吗?

    关于第(2)部分:我正在寻找一种监视Oracle RDS实例故障转移的方法,无论是通过lambda函数,bash脚本还是其他方法。据我所知,即使我通过安全组允许所有ICMP流量,也不可能对RDS使用ping。我可以使用telnet或SQL客户端毫无困难地连接。我想要的是做某些事情喜欢在故障转移期间定期ping数据库以查看与连接字符串关联的IP何时切换以及需要多长时间。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

  1. 正确,RDS将在故障转移实例上进行修改,然后故障转移到它。根据{{​​3}}:
  2.   

    多可用区部署的可用性优势也扩展到   计划维护和备份。在系统升级的情况下   操作系统修补或数据库实例扩展,首先应用这些操作   在备用数据库上,在自动故障转移之前。结果,你的   可用性影响再次只是自动化所需的时间   故障转移完成。

    要模拟故障转移,只需在重新启动时documentation,而不是重启两者。来自链接文档:

      

    当您想要模拟故障时,使用故障转移重新启动是有益的   用于测试或恢复对原始AZ的操作的数据库实例   发生故障转移后。

    1. 编写一个脚本,该脚本定期与SQL客户端连接,并在您的首选项表上执行快速选择。您可以使用它来测量故障转移期间的真实停机时间;我们有一个非常类似的工具,在我们将测试RDS的修改应用到生产RDS之前,我们会使用这个工具。我们的工具只是写入带有时间戳的控制台,以及它是否每隔几秒就失败/成功。该工具将在重新启动之前写入成功,在切换完成后再次成功失败并再次成功。
    2. 其他资源:

答案 1 :(得分:0)

更新:

我最终使用了一个简单的bash脚本:

date; while true; date; do nc -vz DBNAME.REGION.rds.amazonaws.com PORT; sleep 1; done

注意:以上内容适用于netcat-openbsd。如果使用netcat-traditional,您需要修改此内容。

每秒轮询数据库以查看它是否仍然可以连接。通常,当我运行此命令然后通过故障转移启动重新启动时,连接将在故障转移期间简单地悬挂,然后在故障转移完成并且恢复连接时显示超时错误,可能是因为故障转移通常需要比重新启动更长的时间。如果重新启动的时间比故障转移花费的时间长,则可能会有一段时间在重新启动完成时拒绝连接。无论如何,使用这种方法,我能够获得2:08的一致故障转移时间。

但是,与我原先认为的不同,大多数实例修改根本不涉及故障转移。我已经测试了调整实例的大小以及更改选项组和参数组,并且没有遇到任何停机时间。

更改数据库引擎确实会导致故障转移。