故障转移后到数据库的连接问题

时间:2018-10-03 07:51:44

标签: mysql tomcat amazon-rds tomcat8 amazon-elastic-beanstalk

我们在AWS BeansTalk中有一个Tomcat服务器集群,该集群连接到具有多可用区可用性的AWS RDS(MySQL)。

几天前,RDS实例已将一个补丁应用于操作系统,该补丁基于多可用区可用性触发了故障转移到另一个RDS实例。

结果是一个生产系统在数小时内(晚上)停机,直到我们在每个实例中重新启动Tomcat。我们在数据库中有成千上万的{{​​1}}错误。

根据AWS支持,启动故障转移实例时,端点是相同的,但是其IP已更改,并且我的Tomcats已缓存了旧IP。因此,在重新启动Tomcat之后,清除了缓存,使用了新IP,并解决了连接问题。他们向我推荐了这个question

这很有道理,但是我无法在生产中具有相同应用程序的受控测试中重现该问题。

我更改了/ etc / hosts中域的IP,并且我当前的BeansTalk Production Tomcat在30秒后检测到IP更改,因此它也应该也检测到RDS端点IP更改。

我的BeansTalk环境中的Java ttl属性设置为:

Connection refused

因此,默认情况下,它需要30秒的缓存时间,与我的实验相符。

[EDIT] 如评论中的建议,我尝试通过DNS模拟故障转移。在这种情况下,我已将CNAME记录从一个域更改为另一个域。我进行了相同的测试,Tomcat在30秒后再次检测到了更改。

您是否知道为什么在这种情况下Tomcat / JVM未检测到RDS端点IP更改?

0 个答案:

没有答案