2017-03-08 57 views
2

我的问题有两个部分:多AZ RDS测试故障切换和连接监控

  1. 什么是启动用于测试目的的RDS故障转移的最佳方式是什么?
  2. 如何在故障转移期间监视连接,以便观察AWS将用户重新连接到备用实例所用的时间?

对于部分(1):如果正确地明白,所有实例的修改都在备用进行,然后AWS通过在翻转CNAME到待机作为主要被更新,所以如果我是故障切换做任何一种实例修改并选择“立即应用”,它应该导致故障转移,更正?

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

回答

0
  1. 正确,RDS将在故障转移实例上进行修改,然后进行故障转移。按照他们的documentation

多AZ的可用性部署的好处还延伸到 计划的维护和备份。在进行系统升级(如 OS修补或数据库实例缩放)的情况下,在自动故障切换之前,这些操作在备用系统上首先应用 。因此,您的 可用性影响再次只是自动执行 故障切换完成所需的时间。

要模拟故障转移,只需在重新启动时重置reboot with failover,而不是重新启动两者。从链接的文档:当你要模拟一个数据库实例的失败 进行测试,或者发生故障转移后恢复运营到原AZ

重新启动与故障恢复是有益的。

  • 写脚本,定期间隔,连接着一个SQL客户端,并进行快速选择自己的喜好的表。您可以使用它来衡量故障转移期间的真正停机时间;我们有一个非常相似的工具,当我们将RDS应用于RDS测试之前,我们在测试RDS中获得修改的估计时使用该工具。我们的工具只需使用时间戳写入控制台,并且每隔几秒钟就会失败/成功。在切换完成之前,该工具将在重新启动,失败期间以及再次成功之前写入成功。
  • 其他资源:

    0

    更新这个:

    最后我用一个简单的bash脚本:

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

    注意:以上是针对netcat-openbsd。如果使用netcat-traditional,则需要对其进行修改。

    这每秒轮询数据库以查看是否仍可以连接。通常,当我运行这个程序,然后用故障转移启动重新启动时,连接将在故障转移过程中简单地停顿,然后在故障转移完成并且连接恢复时显示超时错误,这可能是因为故障转移通常比重新启动时间要长。如果重新启动发生时间比故障转移时间长,则可能会有一段时间,在重新启动完成后拒绝连接。无论如何,使用这种方法,我能够获得一致的故障转移时间2:08。但是,它看起来与我原先认为的不同,大多数实例修改根本不涉及故障转移。我测试了实例的大小调整以及更改选项组和参数组,并且没有遇到任何停机时间。

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