NLB를 이용하여 RDS의 부하 분산을 실시한다.
4961 단어 RDSElasticLoadBalancingAWS
소개
마스터가 되는 RDS의 부하가 올라오면, 우선은 리드 레플리카를 작성해 분산한다고 생각합니다.
대부분의 경우는 리드 액세스에 의한 부하가 높아지므로, 그 리드 복제본에서도 다루기가 어려워지는 것 같으면 다른 하나 늘릴 필요가 있을 것입니다.
그 경우, RDS라면 리드 레플리카 마다 엔드 포인트가 생겨 버립니다.
하지만 NLB로 리드 레플리카를 묶는 것으로, 1개의 엔드 포인트로 부하 분산을 실시할 수 있습니다.
전제
이번에는 아래 그림과 같은 구성을 만듭니다.
또, 전제로서 EC2 인스턴스와 RDS2대는 준비한 상태로 시작합니다.
NLB 만들기
대상 그룹 만들기
먼저 대상 그룹을 만듭니다.
EC2 > 로드 밴 런 시그 > 타겟 그룹에서 타겟을 생성합니다.
여기서의 포인트는 「타겟의 종류」를 ip 로 하는 것입니다.
그렇다고 하는 것은, 인스턴스로 해 버리면 타겟의 추가를 EC2 밖에 할 수 없기 때문입니다.
만들면 다음은 대상 추가입니다.
타겟 추가
먼저 RDS 엔드포인트에서 IP를 조사합니다.
IP 확인 1$ host koh3i-01.cmhex6vatlc7.ap-northeast-1.rds.amazonaws.com
koh3i-01.cmhex6vatlc7.ap-northeast-1.rds.amazonaws.com has address 10.0.1.114
IP 확인 2$ host koh3i-02.cmhex6vatlc7.ap-northeast-1.rds.amazonaws.com
koh3i-02.cmhex6vatlc7.ap-northeast-1.rds.amazonaws.com has address 10.0.2.222
IP를 알면 다음과 같이 대상을 추가합니다.
로드 밸런서 만들기
이번에는 아래 그림과 같은 구성을 만듭니다.
또, 전제로서 EC2 인스턴스와 RDS2대는 준비한 상태로 시작합니다.
NLB 만들기
대상 그룹 만들기
먼저 대상 그룹을 만듭니다.
EC2 > 로드 밴 런 시그 > 타겟 그룹에서 타겟을 생성합니다.
여기서의 포인트는 「타겟의 종류」를 ip 로 하는 것입니다.
그렇다고 하는 것은, 인스턴스로 해 버리면 타겟의 추가를 EC2 밖에 할 수 없기 때문입니다.
만들면 다음은 대상 추가입니다.
타겟 추가
먼저 RDS 엔드포인트에서 IP를 조사합니다.
IP 확인 1$ host koh3i-01.cmhex6vatlc7.ap-northeast-1.rds.amazonaws.com
koh3i-01.cmhex6vatlc7.ap-northeast-1.rds.amazonaws.com has address 10.0.1.114
IP 확인 2$ host koh3i-02.cmhex6vatlc7.ap-northeast-1.rds.amazonaws.com
koh3i-02.cmhex6vatlc7.ap-northeast-1.rds.amazonaws.com has address 10.0.2.222
IP를 알면 다음과 같이 대상을 추가합니다.
로드 밸런서 만들기
먼저 RDS 엔드포인트에서 IP를 조사합니다.
IP 확인 1
$ host koh3i-01.cmhex6vatlc7.ap-northeast-1.rds.amazonaws.com
koh3i-01.cmhex6vatlc7.ap-northeast-1.rds.amazonaws.com has address 10.0.1.114
IP 확인 2
$ host koh3i-02.cmhex6vatlc7.ap-northeast-1.rds.amazonaws.com
koh3i-02.cmhex6vatlc7.ap-northeast-1.rds.amazonaws.com has address 10.0.2.222
IP를 알면 다음과 같이 대상을 추가합니다.
로드 밸런서 만들기
EC2 > 로드 밸런서 > 로드 밸런서에서 로드 밸런서 생성을 클릭하여 Network Load Balancer를 생성합니다.
1단계: 로드 밸런서 설정
RDS의 부하 분산이므로 내부 트래픽 만 있기 때문에 스키마를 내부로 만듭니다.
설정이 끝나고 잠시 후 healthy가 될 것입니다.
그러면 등록 완료입니다.
만약 건강이 안 된다면 보안 그룹을 확인해 보십시오.
RDS에 부여된 보안 그룹은 NLB가 사용하는 서브넷의 사용 권한을 포함하지 않아야 합니다.
max_connect_errors 설정
Amazon RDS > 파라미터 그룹에서 RDS에서 사용하는 파라미터 그룹을 선택하고 파라미터 그룹 작업을 편집합니다.
max_connect_errors の値を 18446744073709547520 へ変更。
이 파라미터는 재기동 불필요하므로 설정하자마자 반영됩니다.
연결 확인
그럼 연결해 보겠습니다.
mysql$ mysql -hNLB4RDS-a3b3aefb0002a0e2.elb.ap-northeast-1.amazonaws.com -uroot -phogehogehoge
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2249
Server version: 5.6.37 MySQL Community Server (GPL)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
안전하게 연결할 수있었습니다.
또한 max_connect_errors
를 설정하지 않으면,
error$ mysql -hNLB4RDS-a3b3aefb0002a0e2.elb.ap-northeast-1.amazonaws.com -uroot -phogehogehoge
ERROR 1129 (HY000): Host '10.0.2.59' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
연결이 차단됩니다.
이것은 NLB가 실시하는 헬스 체크의 원인으로 RDS측은 부정 접속되어 있다고 판단해 버리기 때문입니다.
포인트
이번 포인트는 보안 그룹과 파라미터 그룹입니다.
1. 보안 그룹 설정에서 NLB에서 RDS에 대한 상태 확인을 허용합니다.
2. 파라미터 그룹 설정에서 상태 확인 액세스로 차단되지 않도록 max_connect_errors
를 조정합니다.
결론
이 솔루션을 통해 리드 부하를 "RDS를 정렬하여 완화"할 수 있습니다.
하지만 가능하면 Aurora를 사용하는 것이 좋다고 생각합니다.
Reference
이 문제에 관하여(NLB를 이용하여 RDS의 부하 분산을 실시한다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kooohei/items/c6443c2b455c62907832
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ mysql -hNLB4RDS-a3b3aefb0002a0e2.elb.ap-northeast-1.amazonaws.com -uroot -phogehogehoge
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2249
Server version: 5.6.37 MySQL Community Server (GPL)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
$ mysql -hNLB4RDS-a3b3aefb0002a0e2.elb.ap-northeast-1.amazonaws.com -uroot -phogehogehoge
ERROR 1129 (HY000): Host '10.0.2.59' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
이번 포인트는 보안 그룹과 파라미터 그룹입니다.
1. 보안 그룹 설정에서 NLB에서 RDS에 대한 상태 확인을 허용합니다.
2. 파라미터 그룹 설정에서 상태 확인 액세스로 차단되지 않도록
max_connect_errors
를 조정합니다.결론
이 솔루션을 통해 리드 부하를 "RDS를 정렬하여 완화"할 수 있습니다.
하지만 가능하면 Aurora를 사용하는 것이 좋다고 생각합니다.
Reference
이 문제에 관하여(NLB를 이용하여 RDS의 부하 분산을 실시한다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kooohei/items/c6443c2b455c62907832
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(NLB를 이용하여 RDS의 부하 분산을 실시한다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kooohei/items/c6443c2b455c62907832텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)