迷惑者在这里:
我在同一个安全组中有两个RDS实例(RDS1和RDS2) (我保证--我至少检查了十次)。
我有三台客户机被添加到RDS实例共享的安全组中端口3306的入站规则中。
我正在测试到RDS实例的套接字连接,如下所示:
nc -zv my-rds-instance.us-west-2.rds.amazonaws.com 3306
以下是问题所在:
客户端A(工作站):连接到RDS1,但不连接到RDS2
客户端B(us-west-2c中的EC2):连接到RDS1和RDS2
客户端C(us-west-2c中的EC2):连接到RDS1,但不连接到RDS2
换句话说,我需要客户端A和客户端C连接到RDS2。
失败的连接超时,所以我怀疑这是防火墙问题。如果我grep netstat -an,我会看到一条SYN_SENT消息。
RDS1在us-west-2c,RDS2在us-west-2b。它们位于相同的VPC、相同的子网组、相同的子网中,且在端口3306上均可公开访问。RDS1为MySQL 5.6.27,RDS2为5.5.53。
客户端A的MySQL为5.7.17。客户端B的MySQL为5.5.53。客户端C的MySQL为5.5.52。
对于如何进一步解决这个问题,我有点束手无策。任何建议都将不胜感激。
发布于 2017-02-25 00:58:48
正如您在注释中所指出的,无法连接的客户端正在将RDS盒的DNS名称解析为其公网IP。这意味着当他们尝试连接时,连接会连接到大的坏互联网,这反过来意味着RDS盒可以看到来自相当任意的IP地址的连接,并(正确地)拒绝它。
在短期内,您可以通过使用RDS盒的私有IP地址来“修复”这个问题,但我不相信AWS会对这些地址的稳定性做出任何长期保证--尽管它们肯定不会经常变化。当然,真正的解决方法是修复您的DNS,即所有客户端都在获取RDS机器的内部IP地址;首先要查看的是检查每个客户端正在使用哪些名称服务器。
https://stackoverflow.com/questions/42429819
复制相似问题