본문 바로가기
카테고리 없음

[NCP] Cloud DB For MySQL 읽기 부하 분산 설정

by 강시공 2023. 11. 20.

 
NCP에서 CDB MySQL 읽기 부하분산 처리를 안해봐서 실습을 해보았습니다.
 
 
===================================================================================
1.. 알게된 내용
- stand alone 서버는 읽기 전용 CDB slave 서버를 생성할 수 없다 (불가하다)
따라서 읽기 전용 서버를 만들기 위해서는 고가용성 옵션 선택이 필수다.
 
- Network 또는 Network Proxy 로드밸런서를 생성해서 Slave 서버에 타겟 그룹으로 설정해야한다.
===================================================================================
 
2. 실습 환경
- VPC : mzc-vpc-1 (172.16.0.0/16)
- Subnet :
jaewoo-cdb-read-lb  (172.16.4.0/24 / Private Subnet / 용도 : Load Balancer)
jaewoo-cdb-test  (172.16.1.0/24 / Public Subnet / 용도 : 일반)
 
- 로드밸런서 (TCP)
Listen : 3306
TG 3306
 
- 서버
jaewoo-test01 (172.16.0.7)
 
- CDB for MySQL
CDB 이름 : jaewoo-cdb
고가용성 : YES
Private 도메인 : ~~~~
Public 도메인 : 미할당
 
- CDB ACG
웹 서버 공인  IP
로드밸런서 사설 IP 대역
 
- 접속 테스트
로드밸런서 공인 도메인으로 CDB Slave 접속 시도
 
===================================================================================
 
 
[CDB 슬레이브 서버 추가 작업]
- CDB Master 클릭 -> Slave 추가

 
- "예" 클릭하여 생성

 
- Slave 서버가 생성되는 것을 볼 수 있다.

 
 
===================================================================================
[로드밸런서용 타겟 그룹 생성 작업]
 
- 타겟 그룹 생성 클릭

 
- 타겟 그룹 설정
이름 : CDB-Read-TG
유형 : VPC Server
VPC : mzc-vpc-1(172.16.0.0/16)
프로토콜 : TCP
포트 : 3306

 
- 헬스체크는 3306

 
- Slave 서버를 타겟 서버로 적용시켜 준다.

 
===================================================================================
[로드밸런서 생성]
 
-  LB 이름 : jaewoo-read-lb

 
- LB 리스너 포트는 3306으로 설정

 
 

 

 
 
===================================================================================
[ACG 설정 작업]
네트워크 로드밸런서와 연동할 때는 로드밸런서 Subnet 대역과
네트워크 로드밸런서에 접근하는 클라이언트 공인 IP를 CDB MySQL ACG에 추가해 줘야합니다.
 
- 접근 서버 공인 IP 정보 확인
 
- 로드밸런서 정보 확인
 
접속 정보, 로드밸런서 서브넷

 
- CDB ACG 이름 확인
 
TEST 서버 -> Cloud DB For MySQL 사설 IP 접근 ACG
Load Balancer -> Cloud DB for MySQL 접근 규

 
 
- ACG 설정
** 이번 실습에선
아래 캡처에서는 서버가 사설 IP로 설정되어있는데
공인 IP로 해줘야한다.

 
 
===================================================================================
 
[접속할 서버에 MySQL 설치]

MySQL Server 접속 테스트

MySQL Client를 설치하여 생성한 MySQL Server에 정상 접속되는지 테스트하는 방법은 다음과 같습니다.

  1. 애플리케이션 서버에 접속한 후 아래 명령을 실행하여 MySQL를 설치해 주십시오.
    • CentOS 6.x 또는 6.x 이전
    [root@localhost ~] # yum -y install mysql mysql-server
    Mysql
    Copy
    • CentOS 7.x - MySQL 5.7 버전
    [root@localhost ~] # yum -y install https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
    [root@localhost ~] # rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
    [root@localhost ~] # yum -y install mysql-community-server
    [root@localhost ~] # mysqld --initialize-insecure --user=mysql
    [root@localhost ~] # systemctl start mysqld
    Mysql
    Copy
    • CentOS 7.x - MySQL 8.0 버전
    [root@localhost ~] # yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
    [root@localhost ~] # rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
    [root@localhost ~] # yum -y install mysql-community-server
    [root@localhost ~] # mysqld --initialize-insecure --user=mysql
    [root@localhost ~] # systemctl start mysqld
    Mysql
    Copy
    참고

    CentOS 7.x부터는 yum으로 설치하는 MySQL의 기본 DB가 MariaDB로 변경되었으므로, 설치하려면 위 명령을 실행해야 합니다.

  2. 아래 명령어를 실행하여 DB 서버에 접속해 주십시오.
    • DB 접속에 필요한 도메인, 포트 번호, 사용자 ID, 비밀번호는 네이버 클라우드 플랫폼 콘솔의 DB Server 메뉴에서 확인할 수 있습니다.
    [root@localhost ~] # mysql -h ① Private 도메인명 -u ②user_id -p --port ③DB 접속 포트
    
    -- 접속 성공 예제
    
    [root@localhost ~] # mysql -h db-gmcp.beta-cdb.ntruss.com -umysql_dba -p --port 3306
    Enter password: **********
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 17199
    Server version: 5.7.19-log 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>

 
===================================================================================
[읽기 전용 Slave 서버 테스트]
 mysql -h {Load Balancer 접속 도메인} -u {계정} -p
 
mysql -h jaewoo-cdb-read-lb-20634684-31a491593e1b.kr.lb.naverncp.com
223.130.145.201 -u jaewookang -p
 
 

MySQL [(none)]> SELECT @@hostname;

 
 

 
===================================================================================
4. 다음에 확인할 내용
이번 실습 환경에서는 Public Subnet에 생성된 CDB를 연결하는 것이다 보니,
서버에서도 공인 IP로 로드밸런서에 접속을 해야했던 상황이 발생했다.
 
다음 실습 환경은 아래와 같이 Private 사설 통신만 가능한지 확인할 예정이다.
 
- VPC : mzc-vpc-1 (172.16.0.0/16)
- Subnet :
jaewoo-cdb-read-lb  (172.16.4.0/24 / Private Subnet / 용도 : Load Balancer)
jaewoo-cdb-test  (172.16.1.0/24 / Private Subnet / 용도 : 일반)
 
- 서버
jaewoo-test01 (172.16.0.7)
 
- 로드밸런서 (TCP)
Listen : 3306
TG 3306
 
- CDB for MySQL
CDB 이름 : jaewoo-cdb
고가용성 : YES
Private 도메인 : ~~~~
Public 도메인 : 미할당
Slave 1대
 
- CDB ACG
웹 서버 사설 IP
로드밸런서 사설 IP 대역
 
- 접속 테스트
로드밸런서 사설 도메인으로 CDB Slave 접속 시도