Cloud/NCP

Cloud db for PostgreSQL 서버 Read Replica 구축하기

Dragonfog.net 2024. 10. 29. 22:11
반응형

이번 세션은 NCP의 Cloud DB for PostgreSQL(이하 CDB PostgreSQL) 서비스에서 고성능을 위하여 Read Replica 환경 구성에 대하여 알아보겠습니다.

 

NCP PostgreSQL 서비스의 경우 고가용성을 위한 자동 Failover, 읽기 부하 분산을 위한 Read Replica확장을 지원합니다. 자동 Failover기능의 경우 Primary DB 장애시 Secondary DB로 자동 대체 하는 기능으로 DB 장애시 서비스 연속성을 유지하기 위한 기능입니다.

[자동 Failover 구조]

 

Read Replica확장은 디비에 읽기 부하가 많이 발생되었을 경우 Replica 노드를 추가하여 읽기 / 쓰기를 분리하여 부하를 분산하는 기술입니다. NCP의 경우 Primary 노드에 최대 5개 까지를 Read Replica 노드를 추가 구성 할 수 있습니다.

[Read Replica 구조]

 

Read Replica 환경 구축은 StandAlone 모드에서는 운영이 불가하여 CDB Postgre의 고가용성 환경을 구축하고 여기에 Read Replica 노드를 추가하여 운영합니다. 아래 가이드에 맞추어 우선 HA 환경 구성후 Read Replica 추가 구성을 진행하도록 하겠습니다.

 

CDB PostgreSQL HA 환경 구성

DB 구성을 위하여  네이버 클라우드 플랫폼 콘솔에서 Services > Ddatabase > Cloud DB for PostgreSQL  메뉴를 차례대로 클릭합니다. 

DB Server > + DB Server 생성 메뉴를 차례대록 클릭합니다.
DB 생성을 위해서는 다음과 같은 절차 [서버설정] > [DB설정] > [최종확인] 를 수행하여 서버를 생성합니다.

 

+ DB Server 생성 메뉴를 클리하면 아래와 같은 페이지가 보이고 DB 생성을 위하여 디비엔진버전을 선택하고 VPC를 선택한 다음 고가용성지원 / Multi Zone의 체크박스를 선택합니다. 이후에 서버 스팩을 선택하고 디비서버 이름, 디비서비스 이름을 입력한후 다음 버튼을 클릭합니다.

실제 입력값에 대해서는 각자에 맞게 입력하시면 되며 아래 이미지 참고하여 입력부탁드립니다.

DB 엔진버전 : 설치하고자 하는 DB의 버전을 선택합니다.
고가용성지원 : 고가용성 구성을 위하여 Secondary노드를 포함하여 구성합니다. (2개의 노드가 생성됩니다.)
Multi Zone : Primary/Secondary 노드를 서로 다른 zone에 배치 합니다.

서버설정

 

이후 DB 설정화면에서 USER_ID, USER 암호, 기본 DB명 그리고 백업관련 설정을 진행후  다음 버튼을 클릭합니다. 

DB 설정

 

최종 설정 내용을 확인하고 생성 버튼을 클릭합니다.

최종확인

확인버튼을 클릭하시면  Status 상태가 생성중 > 설정중 > 운영중 으로 바뀌며 잠시후 콘솔화면을 보면 아래와 같이 디비가 생성된것을 확인 할 수 있습니다.

[PostgreSQL Server 목록]

위 이미지와 같이 Primary/Secondary 롤을 가진 디비가 각각 다른 Subnet에 생성된것을 확인 할 수 있습니다.

여기에서 이제 Read Replica 노드를 추가 하기 위하여 마스터 노드를 선택하고 Read Replica 추가를 클릭합니다.

 

Read Replica 추가를 클릭하시면 아래와 같은 팝업 창이 뜨는것을 보실 수 있습니다.

Read Replica 노드 추가는 기존서버와 동일한 스팩으로 생성 되며 Read Replica 노드를 배치할 Subnet을 선택하고 확인을 클릭하면 Read Replica 노드가 바로 생성이 진행되는것을 확인 할 수 있습니다.

 

얼마간의 시간이 지나면 아래과 같이 Read Replica 노드가 추가되어 운영중인 상태를 볼 수 있습니다.

 

Read Replica 노드를 한대만 사용하면 문제가 없으나 여러대의 Read Replica 노드를 추가하게되면 추가 할 때 마다 Application의 접속 정보를 수정해줘야 합니다. 이를 방지하고 효율적인 부하분산을 위하여 NCP의 경우 Loadbalancer를 통하여 Read Replica 노드구성하고 읽기 부하를 분산하기를 권장합니다.

일반적으로 관리형 서비스의 경우 사용자가 직접적으로 LoadBalancer 구성을 할수 없으나 DB Role이 Read Replica 일 경우 Target 그룹생성 및 Loadbalancer 설정이 가능합니다. 아직 이부분이 자동화 되지 않은 것이 아쉬운 부분입니다.

이제  Read Replica 노드를 사용하기 위한 LB를 구성해보도록 하겠습니다.

여기에서는 NLB를 사용하여 그중에서도 NLB(Proxy)를 사용하여 구성하도록 하겠습니다. 테스트를 위하여 Read Replica 노드를 2개 추가 하였고 이를 각각의 Subnet에 분산 배치 했습니다.

 

작업 순서는 Target Group 생성, ACG 설정, NLB 구성 순입니다.

Load Balanceer > Target Group을 순차적으로 클릭합니다.

Traget Group 생성을 클릭하면 아래와 같은 화면을 볼수 있습니다.

 Target Group 이름 : 식별할수 있는 이름 
Target 유형 : VPC 선택
VPC :  CDB가 위치한 VPC
프로토콜 : Proxy LB를 사용하기에 PROXY_TCP 선택
포트 : CDB를 서비스 하기위한 포트

위 정보를 입력하고 다음 버튼을 클릭한다.

Health Check에 대한 화면이다  여기에서는 프로토콜은  TCP 그외는 기본값으로 다음을 클릭한다.

Read Replica 노드를 선택하여 적용 Target에 추가해준다.

이후 다음을 클릭하고  최종확인 후 Target Group 생성을 진행한다.

아래와 같은 Target Group 이 생성된걸 확인했으면 이제 LoadBalancer를 구성한다.

Load Balancer > Load Balancer를 선택하고 로드밸런서 생성을 클릭한다.

위 화면에서 네트워크 프록시 로드밸런서를 클릭한다.

위와 같이 로드밸런서 이름, 네트워크(Private) , 부하처리 성능(성능에 따라 선택), 대상 VPC (CDB운영 vpc) , 그리고 LB subnet을 선택하고 다음을 클릭한다. 여기에서 LB subnet이 KR1에만 구성되어 있어 하나만 선택했으며 KR2에도 Subnet을 생성했으면 둘다 체크하고 subnet을 선택해주면 된다.

리스너의 경우 서비스 하기위한 포트를 설정한다. 여기에서는 CDB Postgre 서비스 포트인 5432를 입력하고 추가한다.

Target Group 선택에서는 좀 전에 생성해두 Target Group를 선택해준다.

이후 화면에서 최종확인후에 로드 밸런서 생성을 진행하고 조금 있으면 NLB가 생성된것을 확 인 할수 있다

자 이제 Target Group에 설정되어 있는 Replica 서버에 Healthcheck가 가능하도록 ACG 정책을 수정한다.

inbound 정책에 NLB 아이피 대역을 추가해주면 된다.

여기까지 설정이 이상 없이 마무리 되었다면 아래와 같이 NLB Endpoint URL을 통하여 디비에 정상적으로 접속할 수 있습니다.

 

이상으로 CDB Postgre 서버의 Read Replica 환경 구성에 대하여 알아봤습니다.

이와 같이 LB를 사용하여 구성하게 되면 Read Replica 노드를 추가하거나 삭제 시에 Application 수정없이

바로 적용할수 있습니다.

LB를 사용하지 않게 되면 Read Replica 추가가 제거 시에 Application 재배포가 일어나야해서 여러가지 불편한 점이 있습니다.

 

이글을 읽으시는 분에게 많은 도움이 되었으면 하는 바램입니다.

 

긴글 읽어 주셔서 감사합니다.

반응형

'Cloud > NCP' 카테고리의 다른 글

Classic 환경 NAS VPC로 데이터 이전  (1) 2024.08.11
Rocky 8.X Kernel 롤백하기  (1) 2024.07.19
Redis 이중화 구성 하기 (직접설치 구성)  (0) 2024.07.18
네이버클라우드 Class vs VPC  (0) 2024.01.05