Mysql AWS RDS中止连接Haproxy

Mysql AWS RDS中止连接Haproxy,mysql,mariadb,haproxy,aws-rds,Mysql,Mariadb,Haproxy,Aws Rds,我使用haproxy在AWS RDS和EC2中创建了1个主机和2个复制 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 fa

我使用haproxy在AWS RDS和EC2中创建了1个主机和2个复制

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
我犯了那个错误

我已经增加了连接超时

如果我查一下

SHOW GLOBAL STATUS LIKE 'Aborted_connects';
它一直在增加

===============

这篇文章解决了我的问题

默认情况下,如果启动RDS时未更改安全组设置,则只有您的IP有权访问数据库。在您的情况下,还需要授权haproxy节点访问数据库

转到RDS,选择您的实例,然后选择安全组,编辑,添加新规则,以启用HAproxy的安全组(最佳做法)或HAproxy IP(如果这是弹性IP,仍然足够好)访问端口3306上的数据库

希望这足够清楚:)

编辑:我知道你解决了你的问题,但是对于以后阅读的人(或者如果你想提高安全性,甚至是你),我补充了一些关于我所说的内容的信息:
当从同一VPC中的实例向该VPC中亚马逊提供的DNS服务器进行DNS查询时,RDS主机名将解析为专用IP。因此,在您的安全组中,在这种情况下,您必须允许您haproxy的子网或其私有IP(非公共IP)。

首先问一些愚蠢的问题:)您是否启用了从haproxy到RDS的通信,例如从安全组的角度?首先,我只是按照本教程进行操作,您有任何示例要做吗?谢谢所有进出的流量谢谢,我已经将其更改为接受所有流量,问题在于参数组谢谢Tom,谢谢(但我不能投票,需要更多的因果报应)。我改为允许所有的交通,因为我有一个问题。但我知道我将重新配置我的安全组设置。