无法通过 HaProxy 连接到 RDS

Unable to Connect to RDS via HaProxy

我在 VPC 中设置了 MariaDB RDS。 RDS 不可公开访问。因此,为了访问 RDS,我决定在同一 VPC 中生成一个 EC2 并配置 HAProxy。

HAProxy 工作正常,正在侦听端口 3306。但是,当我尝试通过 HAProxy 连接到 RDS 时,我收到此错误消息:

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 2

这是我的 haproxy.cfg:

global
    log /dev/log    local0
    log /dev/log    local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

    # Default SSL material locations
    ca-base /etc/ssl/certs
    crt-base /etc/ssl/private

    # Default ciphers to use on SSL-enabled listening sockets.
    # For more information, see ciphers(1SSL). This list is from:
    #  https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
    ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
    ssl-default-bind-options no-sslv3

defaults
    log     global
    mode    tcp
    option  tcplog
    option  dontlognull
    timeout connect 5000
    timeout client  50000
    timeout server  50000
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http

listen rds
    bind 0.0.0.0:3306
    mode tcp
    option mysql-check user haproxy_check
    balance roundrobin
    server rds test.dkd20slksdfkl.ap-southeast-1.rds.amazonaws.com:3306 check

如果您想知道,我确实编辑了 /etc/default/haproxy 并放置了 ENABLED=1

我通过删除 check 选项成功连接到 RDS。我不确定为什么,但也许是因为没有其他 RDS 可以进行负载平衡,因此 check 选项会产生问题。