AWS RDS 연결 중단됨 Haproxy
AWS RDS에서 마스터 1개와 복제 2개를 생성하고 haproxy를 사용하여 EC2를 1개 만듭니다.
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';
계속 증가하고 있다
===============
이 문서에서는 Amazon RDS 인스턴스의 사용자 지정 구성 문제를 해결합니다.
디폴트에서는, RDS 를 기동할 때에 시큐러티 그룹 설정을 변경하지 않은 경우는, IP 만이 데이타베이스에의 도달이 허가됩니다.이 경우 haproxy 노드도 데이터베이스에 접속할 수 있도록 허가해야 합니다.
RDS로 이동하여 인스턴스를 선택한 다음 Security Group을 편집하고 새 규칙을 추가하여 HAproxy의 Security Group(베스트 프랙티스) 또는 HAproxy IP(이것이 유연한 IP인 경우에도 충분)가 포트 3306의 데이터베이스에 액세스할 수 있도록 합니다.
이것이 충분히 명확하기를 바랍니다:)
편집: 문제를 해결한 것은 이해합니다만, 나중에 (또는 보안을 강화하고 싶은 경우에도) 읽는 분들을 위해 말씀드린 내용에 대한 정보를 추가합니다.같은 VPC의 인스턴스에서 Amazon이 제공하는 DNS 서버에 DNS 쿼리를 실행하면 RDS 호스트명이 프라이빗 IP로 해결됩니다.따라서 이 경우 보안 그룹에서 haproxy의 서브넷 또는 해당 개인 IP(퍼블릭 IP가 아님) 중 하나를 허용해야 합니다.
언급URL : https://stackoverflow.com/questions/34988344/aws-rds-aborted-connection-haproxy
'source' 카테고리의 다른 글
MySQL에서 중첩된 트랜잭션이 허용됩니까? (0) | 2022.09.25 |
---|---|
값을 한 필드에서 두 필드로 분할 (1) | 2022.09.25 |
MariaDb SQL 주입 (1) | 2022.09.25 |
2개의 NULL 포인터를 감산하는 동작이 정의되어 있습니까? (1) | 2022.09.25 |
OkHttp의 response.body.toString()이 문자열을 반환하도록 가져올 수 없습니다. (1) | 2022.09.25 |