【问题标题】:Multi-AZ RDS test failover and connection monitoring多可用区 RDS 测试故障转移和连接监控
【发布时间】:2017-07-29 07:24:49
【问题描述】:

我的问题有两个部分:

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

关于第 (1) 部分:如果我理解正确,所有实例修改都是在备用数据库上进行的,然后 AWS 通过在更新主数据库时将 CNAME 翻转到备用数据库进行故障转移,所以如果我要进行任何修改种实例修改并选择“立即应用”,它应该会导致故障转移,对吗?

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

【问题讨论】:

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


    【解决方案1】:
    1. 正确,RDS 将对故障转移实例进行修改,然后故障转移到它。根据他们的documentation

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

    要模拟故障转移,只需在重新启动时reboot with failover,而不是同时重新启动。来自链接的文档:

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

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

    其他资源:

    【讨论】:

      【解决方案2】:

      更新:

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

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

      注意:以上为netcat-openbsd。如果使用netcat-traditional,则需要修改它。

      这会每秒轮询数据库以查看是否仍然可以连接。通常,当我运行此程序然后通过故障转移启动重新启动时,连接只会在故障转移期间悬空,然后在故障转移完成并恢复连接时显示超时错误,大概是因为故障转移通常比重新启动花费更长的时间。但是,如果重新启动的时间恰好比故障转移的时间长,则在重新启动完成时可能会在一段时间内拒绝连接。无论如何,使用这种方法,我能够获得一致的故障转移时间 2:08。

      然而,似乎与我最初的想法不同,大多数实例修改根本不涉及故障转移。我已经测试了调整实例大小以及更改选项组和参数组,并且没有遇到任何停机时间。

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

      【讨论】:

        猜你喜欢
        • 2014-09-17
        • 2011-10-27
        • 1970-01-01
        • 2020-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-05
        • 1970-01-01
        相关资源
        最近更新 更多