无法通过 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
选项会产生问题。
我在 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
选项会产生问题。