AWS RDS 中止连接 Haproxy
AWS RDS Aborted Connection Haproxy
我在 AWS RDS 中创建了 1 个主节点和 2 个复制节点,并使用 haproxy 创建了 1 个 EC2
listen rds-cluster
bind 172.30.0.xxx:3306
mode tcp
option mysql-check user ha_check
balance roundrobin
server mysql-1 replica1.xxxx.ap-southeast-1.rds.amazonaws.com:3306 check weight 1 fall 2 fastinter 1000
server mysql-2 replica2.xxxx.ap-southeast-1.rds.amazonaws.com:3306 check weight 1 fall 2 fastinter 1000
如果我可以使用端点直接连接到副本服务器,
但是如果我使用 haproxy
$ mysql -h172.30.0.xxx -uha_read -ppassword -e "show variables like 'server_id'"
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
我收到那个错误
我已经增加了connect_timeout
如果我检查
SHOW GLOBAL STATUS LIKE 'Aborted_connects';
一直在增加
===============
这篇文章解决了我的问题
CUSTOM CONFIGURATION OF AMAZON RDS INSTANCES
默认情况下,如果您在启动 RDS 时没有更改安全组设置,则只有您的 IP 将被授权访问您的数据库。在您的情况下,您还需要授权您的 haproxy 节点访问您的数据库。
转到 RDS,select 您的实例,然后是安全组,编辑,添加一个新规则以启用您的 HAproxy 的安全组(最佳实践)或 HAproxy IP(仍然足够好,如果这是一个弹性 IP)来访问端口 3306 上的数据库。
希望这足够清楚:)
编辑:我知道你解决了你的问题,但对于稍后阅读的人(或者如果你想增强安全性,甚至是你)我添加了一些关于我所说内容的信息:
当从同一 VPC 中的实例向亚马逊在该 VPC 中提供的 DNS 服务器发出 DNS 查询时,RDS 主机名将解析为私有 IP。因此,在您的安全组中,在这种情况下,您必须允许 haproxy 的子网或其私有 IP(不是 public 一个)。
我在 AWS RDS 中创建了 1 个主节点和 2 个复制节点,并使用 haproxy 创建了 1 个 EC2
listen rds-cluster
bind 172.30.0.xxx:3306
mode tcp
option mysql-check user ha_check
balance roundrobin
server mysql-1 replica1.xxxx.ap-southeast-1.rds.amazonaws.com:3306 check weight 1 fall 2 fastinter 1000
server mysql-2 replica2.xxxx.ap-southeast-1.rds.amazonaws.com:3306 check weight 1 fall 2 fastinter 1000
如果我可以使用端点直接连接到副本服务器, 但是如果我使用 haproxy
$ mysql -h172.30.0.xxx -uha_read -ppassword -e "show variables like 'server_id'"
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
我收到那个错误
我已经增加了connect_timeout
如果我检查
SHOW GLOBAL STATUS LIKE 'Aborted_connects';
一直在增加
===============
这篇文章解决了我的问题 CUSTOM CONFIGURATION OF AMAZON RDS INSTANCES
默认情况下,如果您在启动 RDS 时没有更改安全组设置,则只有您的 IP 将被授权访问您的数据库。在您的情况下,您还需要授权您的 haproxy 节点访问您的数据库。
转到 RDS,select 您的实例,然后是安全组,编辑,添加一个新规则以启用您的 HAproxy 的安全组(最佳实践)或 HAproxy IP(仍然足够好,如果这是一个弹性 IP)来访问端口 3306 上的数据库。
希望这足够清楚:)
编辑:我知道你解决了你的问题,但对于稍后阅读的人(或者如果你想增强安全性,甚至是你)我添加了一些关于我所说内容的信息: 当从同一 VPC 中的实例向亚马逊在该 VPC 中提供的 DNS 服务器发出 DNS 查询时,RDS 主机名将解析为私有 IP。因此,在您的安全组中,在这种情况下,您必须允许 haproxy 的子网或其私有 IP(不是 public 一个)。