이전의 글에서 RDS의 Instance를 복제해서 Replica를 만드는 방법을 정리해 보았었는데요.

이렇게 복제된 Replica에 Request를 분산하는 방법에 대해서 정리해 보도록 하겠습니다.

 

1. 부하를 분산할 Replica의 EndPoint 복사

가장 먼저 할 일은 Load를 분산시킬 Replica서버들의 EndPoint들을 적어두는 것 인데요.

먼저 RDS > Databases 에서 부하를 분산시킬 Replica 인스턴스의 EndPoint들을

메모장 같은 곳에 복사해 놓습니다.

EndPoint들은 Instance를 선택한후 Connectivity & Security에 적혀있는데요.

이곳에서 정보를 Drag해서 복사해 주면 됩니다.

참고로 port번호는 필요하지 않습니다.

 

 

 

2.  Route53

Route53을 이용하면 트래픽에 가중치를 주어서 분산시킬 수 있는데요.

이를 이용해 보도록 하겠습니다.

 

참고로 Route53의 사용방법은 아래 글을 참조해 주세요.

>> Route53을 이용해 도메인과 ELB 를연결하는 방법 #AWS

 

먼저, hosted zone을 생성하고, Domain name을 생성해 줍니다.

이때의 이름은 "db.local"같은 임의의 이름을 설정해 주어도 됩니다.

왜냐하면, 내부망에서만 사용되기 때문이지요.

대신 Type을 반드시 Public Hosted Zone이 아니라,

Private Hosted Zone으로 해 주어야 합니다.

 

이 때, VPC ID를 선택하라고 나오는데요.

누르면 나오는 드롭다운 리스트에서,

RDB의 보안설정에서 사용하고 있는 ID를 선택해 주어야 합니다.

 

 

 

이제 Create를 눌러주면, Name서버들이 생성된 화면을 볼 수 있는데요.

 

이 화면에서 상단의 Create Record Set버튼을 눌러서 다음과 같이 설정해 Record를 만들어 줍니다.

Name에서 sub domain을 설정해 주는데요. "read"를 넣어주면 "read.db.local"이 도메인이 되겠지요.

Type은 A타입이 아니라 CNAME Record타입을 설정해 줍니다.

TTL은 10정도로 낮게 설정해 주어도 됩니다.

이 시간은 Read Replica사이에 Request를 스위칭하는데 걸리는 시간이 될 수 있습니다.

짧게 해 주는 것이 좋겠지요.

 

Value란에 위에서 복사해 놓았던 Replica의 EndPoint를 붙여넣어 줍니다.

Routing Policy에는 Weighted로 하고,

Weight는 50으로 해 줍니다.

ID는 ReplicaDB01과 같이 연속적으로 사용할 수 있는 ID를 부여해 줍니다.

 

Associate with Health Check도 해 주는 것이 좋습니다.

 

 

 

부하를 분산시킬 서버들에 대해서, 위에서 했던 과정을 반복해서,

Endpoint를 붙여주고 설정은 비슷하게 해서 ID와 Health Check까지 해 주면 됩니다.

주의할 점은, Name에서 사용한 sub domain은 같게 해주어야 한다는 것 입니다.

 

3. dig 명령으로 확인

routing이 잘 되었는지 확인하기 위해서 터미널에서 Dig명령어로 확인해 볼 수 있는데요.

EC2에서 위에서 설정한 name을 입력해 주면 되겠습니다.

아래 dig 명령어를 사용해 줍니다.

dig read.db.local Any

 

Answer Section에서 위에서 설정한 Replica들 중 하나의 CNAME이 나오는 것을 볼 수 있을 것 입니다.

위에서 정한 TTL시간인 10초 뒤 정도에,

몇 번 해 보아서 랜덤하게 분산된다면 성공으로 볼 수 있겠습니다.

이것은 위에서 weight를 50%로 주었기 때문입니다.

 

728x90

+ Recent posts