1.3 멀티가용성존 이용방법

1.3.1 멀티존 선수학습

ㅁ KT Cloud LINK
   E2E cloud zone, cloud zone to legacy 연동구성을 학습 가능합니다. 
ㅁ Inter-AZ
   E2E cloud zone 연동구성을 학습 가능합니다.
ㅁ CIP-Hybrid
   cloud zone to lecacy 연동구성을 학습 가능합니다.
ㅁ 이미지
   각 존의 생성된 이미지를 cloud zone을 넘어 copy 할 수 있습니다.
ㅁ NAS, VM Disk
   공유형 디스크, 로컬 디스크의 데이터를 cloud zone을 넘어 복제 할 수 있습니다.
   Enterprise Security에서는 Tier들을 공유하는 NAS Storage 수동 제공이 가능합니다. 

 

1.3.2 GSLB DR시스템

ㅁ DR시스템 시나리오
- (STEP1) WEB서버 생성과 포트포워딩 - (STEP2) DB서버 생성과 포트포워딩 - (STEP3) DB-DB 연동 
- (STEP4) DB Replication 구성 - (STPE5) WEB-DB 연동 - (STEP6) GSLB 구성
ㅁ STEP1. WEB서버 생성과 포트포워딩
ㅇ WEB 서버를 Central- A, Seoul-M 존에 생성합니다
- KT Cloud Server - 클라우드 서버리스트 - '서버생성'에 접속합니다.
- 서버명, 호스트명을 입력합니다.
- 위치 : KOR-Central-A / Seoul-M
- 운영체제 : (공개이미지) usr-eduimg-web-1806
- 서버 : 시간요금제, 디스크 미제공, 1vcore 1GB 선택합니다.
* 공개이미지는 본 매뉴얼 진행에 필요한 자료들을 사전 설치 해두었습니다.

ㅇ WEB 서버를 포트포워딩 합니다.
- KT Cloud Server - 네트워크 - 네트워크 리스트 -포트포워딩에 접속 합니다.
- 존 위치 확인하고, 공인IP 선택하고 포트포워딩 탭을 선택 합니다.
- 서버선택 후, 공용포트/사설포트를 80으로 입력합니다.
ㅁ STEP2. DB서버 생성과 포트포워딩
ㅇ DB 서버를 Central- A, Seoul-M 존에 생성합니다
- KT Cloud Server - 클라우드 서버리스트 - '서버생성'에 접속합니다.
- 서버명, 호스트명을 입력합니다.
- 위치 : KOR-Central-A / Seoul-M
- 운영체제 : (공개이미지) usr-eduimg-DB-1805
- 서버 : 시간요금제, 디스크 미제공, 1vcore 1GB 선택합니다.
ㅇ DB 서버를 포트포워딩 합니다.
- KT Cloud Server - 네트워크 - 네트워크 리스트 -포트포워딩에 접속 합니다.
- 존 위치 확인하고, 공인IP 선택하고 포트포워딩 탭을 선택 합니다.
- 서버선택 후, 공용포트/사설포트를 22으로 입력합니다.
ㅁ STEP3. DB-DB 연동
ㅇ DB연동을 위해서 KT Cloud LINK를 사용합니다.
- KT Cloud Server - 네트워크 - KT Cloud LINK 생성 을 진행합니다
- KT Cloud LINK 생성 버튼을 적용합니다.
- KT Cloud LINK 이름 : xxx(임의설정)
- CIDR 설정 : xxx.xxx.xxx.xxx(임의설정)
- KT Cloud Server - 네트워크 - KT Cloud LINK - Action - KT Cloud LINK네트워크 생성
- Available Zone : Central- A, Seoul-M
- 이름 : A, M 
- 공유범위 : 개인 ( 참고 : 그룹은 그룹계정 단위로 사용가능하게 지정됩니다)
- IP설정 : 두 Zone의 Subnet이 중복되지 않게끔 설정함
- KT Cloud Server - 네트워크 - KT Cloud LINK - KT Cloud Link 네트워크 - 연결하기
ㅇ KT Cloud LINK사용을 하고자 하는 VM을 연동합니다. 
- KT Cloud Server - 서버 선택 - Action - CIP연결 - CIP선택
* 리눅스OS는 포탈에서 CIP연결후 VM OS에서 네트워크 인식 필요
ㅁ STEP4. DB Replication 구성
ㅇ Master DB서버 SSH접속 후,  설정정보 변경을 합니다.
(1) Maria DB Config 설정
# vim /etc/my.cfg( 55번째 줄 부근)
log-basename=master
log-bin=mariadb-bin
binlog_format=row
server-id  = 1
(2) Maria DB 기동 및 접속
# Systemctl start mariadb
# mysql -u root -p 
Enter password : new1234!
Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement
(3) Master의 Server_id 확인
MariaDB [(none)]> show variables like 'server_id';
+---------------------+----------+
| Variable_name      | Value      |
+---------------------+-----------+
| server_id              |   1           |
+---------------------+-----------+
(4) 리플리케이션용 계정 생성
MariaDB [(none)]> grant replication slave, replication client on *.* to replica@'xxx.xxx.xxx.xxx' identified by 'new1234';
* xxx.xxx.xxx.xxx는 slave의 주소를 적도록 합니다.
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
(5) Master의 상태 확인
MariaDB [(none)]> show master status;
+-----------------------+--------------+----------------+--------------------+
| File                         | Position       | Binlog_Do_DB| Binlog_Ignore_DB |
+-----------------------+--------------+----------------+--------------------+
| mariadb-bin.000001 | 1195           |                     |                             |
+-----------------------+--------------+----------------+--------------------+
1 row in set (0.00 sec)
(6) 백업 생성
[root@DB-M ~] # scp -r my.sql xxx.xxx.xxx.xxx:/root/my.sql
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'xxx.xxx.xxx.xxx' (ECDSA) to the list of known hosts.
root@xxx.xxx.xxx.xxx password:
my.sql                                 100%    504KB 503.7KB/s   00:00
ㅇ Slave DB서버 SSH접속 후,  설정정보 변경을 합니다.
(1) MariaDB Config. 설정
# vim /etc/my.cnf (55번째 줄 부근 )
log-bin=mariadb-bin
relay-log=mariadb-relay-bin
binlog_format=row
read_only = 1
server-id = 2
(2) MariaDB 기동 및 접속
# systemctl start mariadb
# mysql -u root –p
Enter password: new1234!
Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
(3) 백업 파일 복원 수행
MariaDB [(none)]> source /root/my.sql
Query OK, 0 rows affected (0.00 sec)
(4) Slave의 Server_id 확인
MariaDB [(none)]> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id       |       2 |
+---------------+-------+
(5) Replication 설정 (Slave가 Master를 바라보게 설정)
MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST=‘192.#.1.#’, MASTER_USER=‘replica’,
MASTER_PASSWORD=‘new1234!’;
(6) Slave 시작 및 상태확인
MariaDB [mysql]> start slave;
Query OK, 0 rows affected (0.00 sec)
MariaDB [mysql]> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.100.111
Master_User: replica
Master_Log_File: mariadb-bin.000001
Read_Master_Log_Pos: 1445
Relay_Log_File: mariadb-relay-bin.000002
Relay_Log_Pos: 781
Relay_Master_Log_File: mariadb-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
(7) User 계정 생성
MariaDB [(none)]> create user slave@localhost;
MariaDB [(none)]> create user slave@'172.27.%.%';
MariaDB [mysql]> grant select on *.* to 'slave'@'localhost';
MariaDB [mysql]> grant select on *.* to 'slave'@'172.27.%.%';
MariaDB [mysql]> update user set password=password('new1234!') where user=‘slave';
(8) Replication 정상 구성 여부 확인
MariaDB [(none)]> show databases; ------- Master, Slave에서 모두 동일한지 확인
+--------------------+
| Database              |
+--------------------+
| information_schema |
| mysql                    |
| performance_schema |
+--------------------+
(9) mariadb 데몬 재시작
# systemctl restart mariadb
ㅁ STEP5. WEB- DB 연동
ㅇ WEB서버 SSH 접속 후 , 설정 변경
(1) 웹서버의 home 경로로 이동 및 DB 연동을 위한 PHP 파일 확인
# cd /var/www/html/php
# ls –al
-rw-r--r-- 1 root root 498 Apr 10 09:52 dbconn.php
-rw-r--r-- 1 root root 751 Apr 10 10:38 dbinsert.php
-rw-r--r-- 1 root root 1136 Apr 10 10:36 dbselect.php
(2-1) DB Connection 설정 (Central A Zone의 Web 서버에 접속)
# vim dbconn.php (11 번째 줄)
$db = mysqli_connect(“Master DB 서버의 사설 IP", "root", "new1234!", "mysql");
# vim dbinsert.php (2번째 줄)
$conn = mysql_connect(‘Master DB 서버의 사설 IP', 'root', 'new1234!');
# vim dbselect.php (3번째 줄)
$conn = mysql_connect(‘Master DB 서버의 사설 IP', 'root', 'new1234!');
(2-2) DB Connection 설정 (Seoul M Zone의 Web 서버에 접속)
# vim dbconn.php (11 번째 줄)
$db = mysqli_connect(“Slave DB 서버의 사설 IP”, “slave”, “new1234!”, “mysql”);
# vim dbinsert.php (2번째 줄)
$conn = mysql_connect(‘Slave DB 서버의 사설 IP’, ‘slave’, ‘new1234!’);
$sql = "insert into test values(3, '쌈디')";
$sql = "insert into test values(4, '나래')";
# vim dbselect.php (3번째 줄)
$conn = mysql_connect(‘Slave DB 서버의 사설 IP’, ‘slave’, ‘new1234!’);

ㅁ STEP6. WEB-WEB, GSLB를 이용한 공중망 연동
ㅇ GSLB 신청
-TTL : DNS 캐시 저장 시간 – 동일 요청에 대하여 TTL 시간 동안 GSLB 쿼리 없이 바로 연결
- Persistence : 동일한 resolve DNS(그룹으)로 부터의 질의에 대해서 계속 같은 IP 주소를 리턴
- 각 zone 또는 외부의 서비스 IP 주소 입력
- Central A Zone: 80 / Active
- Seoul M Zone: 80 / Backup
ㅇGSLB 도메인을 이용한 웹서비스 접속
- 웹브라우저를 띄운 후 GSLB 도메인(http://xxxxx.g.ucloudbiz.com/)을 입력, Web 서비스에서 DB 접속 확인
- 웹브라우저에서 다음 경로(http://xxxxx.g.ucloudbiz.com/php/dbconn.php)를 입력, Web 서비스에서 DB 접속 후 테이블 생성 및 내용 입력
- 웹브라우저에서 다음 경로(http://xxxxx.g.ucloudbiz.com/php/dbinsert.php)를 입력, Web 서비스에서 DB 접속 후 데이터 조회
- 웹브라우저에서 다음 경로(http://xxxxx.g.ucloudbiz.com/php/dbselect.php)를 입력, Web 서비스에서 DB 접속 후 데이터 삭제