[Cloud] RDS(Relational Database Service)์ ์ดํด
๐ ๋ค์ด๊ฐ๋ฉฐ
์ด๋ฒ ๊ธ์์๋ AWS์ RDS(Relational Database Service)๋ฅผ ์ ๋ฆฌํ๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์คยทDBMS ๊ธฐ๋ณธ ๊ฐ๋ ๋ถํฐ, RDS๊ฐ ๋์ ๊ด๋ฆฌํด์ฃผ๋ ๊ฒ๋ค, ์ง์ ์์ง, ๊ทธ๋ฆฌ๊ณ Multi-AZ DB๋ฅผ ๋ง๋ค์ด ์ฅ์ ์กฐ์น(Failover)๋ฅผ ํ์ธํ๋ Lab๊น์ง ๋ค๋ฃฌ๋ค.
RDS๋? ํด๋ผ์ฐ๋์์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฝ๊ฒ ์ค์ ยท์ด์ยทํ์ฅํ๋๋ก AWS๊ฐ ์ ๊ณตํ๋ ๊ด๋ฆฌํ ์๋น์ค(PaaS). ํ๋์จ์ด ํ๋ก๋น์ ๋, SW ์ค์นยทํจ์น, ์คํ ๋ฆฌ์ง ๊ด๋ฆฌ, ๋ฐฑ์ , ๊ณ ๊ฐ์ฉ์ฑ์ AWS๊ฐ ๋์ ์ฒ๋ฆฌํ๋ค.
1. DB / DBMS / RDS ๊ฐ๋ ์ ๋ฆฌ
| ์ฉ์ด | ์ ์ |
|---|---|
| ๋ฐ์ดํฐ๋ฒ ์ด์ค(DB) | ๊ณต์ ๋ชฉ์ ์ผ๋ก ์ฒด๊ณํยทํตํฉํด ๊ด๋ฆฌํ๋ ๋ฐ์ดํฐ ์งํฉ |
| ๊ด๊ณํ DB(RDB) | ๋ฐ์ดํฐ๋ฅผ ํยท์ด์ ํ ์ด๋ธ๋ก ์ ์ฅ, ์ฌ์ ์ ์๋ ๊ด๊ณ๋ก ๊ตฌ์ฑ |
| DBMS | ์ฌ์ฉ์์ DB ์ฌ์ด์์ ๋ฐ์ดํฐ๋ฅผ ์์ฑยท์์ ยท์ญ์ ยท๊ฒ์ํ๋ ๊ด๋ฆฌ SW |
| RDS | ๊ด๊ณํ DB๋ฅผ ๊ด๋ฆฌํ์ผ๋ก ์ ๊ณตํ๋ AWS ์๋น์ค |
2. ๊ด๋ฆฌํ ์๋น์ค์ ์ฑ ์ ๋ถ๋ด
RDS์ ํต์ฌ ๊ฐ์น๋ ๊ด๋ฆฌ ๋ถ๋ด์ AWS๋ก ๋๊ธฐ๋ ๊ฒ์ด๋ค. ์ฌ์ฉ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ต์ ํ์๋ง ์ง์คํ๋ค.
| ์ฌ์ฉ์๊ฐ ๊ด๋ฆฌ | AWS๊ฐ ๊ด๋ฆฌ |
|---|---|
| ์ ํ๋ฆฌ์ผ์ด์ ์ต์ ํ | OS ์ค์นยทํจ์น, DB SW ์ค์นยทํจ์น |
| ย | ๋ฐฑ์ , ๊ณ ๊ฐ์ฉ์ฑ, ๊ท๋ชจ ์กฐ์ |
| ย | ์ ๋ ฅยท์๋ฒ ๋ํน, ์๋ฒ ์ ์ง๊ด๋ฆฌ |
๐ก ์จํ๋ ๋ฏธ์ค์์๋ OSยทDB ์ค์น, ๋ฐฑ์ , ์ด์คํ๊น์ง ์ ๋ถ ์ง์ ํด์ผ ํ๋ค. RDS๋ ์ด โ์ด์์ ๋ฌด๊ฑฐ์ด ๋ถ๋ถโ์ AWS๊ฐ ๋งก์, ๊ฐ๋ฐ์๊ฐ DBA ์์ ์๊ฐ์ ์ค์ด๊ณ ๋น์ฆ๋์ค์ ์ง์คํ๊ฒ ํ๋ค.
3. RDS ์ง์ ์์ง & ๊ตฌ์ฑ ์์
์ง์ ์์ง: MySQL ยท PostgreSQL ยท Oracle ยท SQL Server ยท MariaDB ยท Amazon Aurora(AWS ์์ฒด ์์ง, MySQL/PostgreSQL ํธํยท๊ณ ์ฑ๋ฅ).
๊ตฌ์ฑ ์ ๋ณด:
| ๊ตฌ์ฑ ์์ | ์ญํ |
|---|---|
| ์๋ธ๋ท ๊ทธ๋ฃน | RDS๊ฐ ์ฌ์ฉํ ์๋ธ๋ทยทIP ๋ฒ์ ์ง์ |
| ํ๋ผ๋ฏธํฐ ๊ทธ๋ฃน | DB ์๋ ๋ฐฉ์์ ์ ์ํ๋ ๋งค๊ฐ๋ณ์ |
| ์ต์ ๊ทธ๋ฃน | ๋ฐฑ์ ยท๋ชจ๋ํฐ๋ง ๋ฑ ๊ณ ๊ธ ์ต์ |
์๋ํฌ์ธํธ ํ์: <rds-name>-mysql.<์๋ณ์>.<๋ฆฌ์ >.rds.amazonaws.com
4. Lab โ Multi-AZ RDS ์์ฑ & Failover
ํ๋ผ์ด๋น ์๋ธ๋ท์ Multi-AZ RDS๋ฅผ ๋๊ณ , ํผ๋ธ๋ฆญ ์๋ธ๋ท ์น ์๋ฒ๊ฐ ์ ์ํ๋ ๊ตฌ์ฑ์ด๋ค.
flowchart TD
User(("๐ ์ฌ์ฉ์"))
subgraph VPC["lab-vpc"]
Web["๐ป Web Server<br/>(ํผ๋ธ๋ฆญ, web-sg)"]
subgraph Priv["ํ๋ผ์ด๋น ์๋ธ๋ท (2a/2c)"]
P[("๐๏ธ RDS Primary")]
S[("๐๏ธ RDS Standby")]
end
end
User --> Web
Web -- "3306" --> P
P -. ๋๊ธฐ ๋ณต์ .-> S
Task 1 โ ๋ณด์ ๊ทธ๋ฃน
| ๊ทธ๋ฃน | ์ธ๋ฐ์ด๋ |
|---|---|
web-sg | HTTPยทSSH โ anywhere |
rds-sg | MySQL 3306 โ web-sg |
Task 2 โ ์๋ธ๋ท/ํ๋ผ๋ฏธํฐ/์ต์ ๊ทธ๋ฃน
- ์๋ธ๋ท ๊ทธ๋ฃน
lab-rdb-subnetgroup: ํ๋ผ์ด๋น 2a(10.0.2.0/24)ยท2c(10.0.3.0/24) - ํ๋ผ๋ฏธํฐ ๊ทธ๋ฃน
lab-rdb-parm-group: MySQL Community,mysql8.0 - ์ต์
๊ทธ๋ฃน
lab-rdb-options-group: mysql 8.0
Task 3 โ RDS ์ธ์คํด์ค ์์ฑ
ํ์ค ์์ฑ, ์์ง MySQL 8.0.39, ๋ฐฐํฌ๋ ๋ค์ค AZ DB ์ธ์คํด์ค๋ก ํ๋ค.
| ํญ๋ชฉ | ๊ฐ |
|---|---|
| ์๋ณ์ | lab-rds |
| ๋ง์คํฐ ์ฌ์ฉ์ | master / master-password |
| ์ธ์คํด์ค ํด๋์ค | t3.micro |
| ์คํ ๋ฆฌ์ง | gp3 20GB |
| ํผ๋ธ๋ฆญ ์ก์ธ์ค | ์๋์ค |
| ๋ณด์ ๊ทธ๋ฃน | rds-sg (3306) |
| ์ด๊ธฐ DB | labdb |
ํ๋ก๋์ vs ๊ฐ๋ฐ/ํ ์คํธ ํ ํ๋ฆฟ:
| ํญ๋ชฉ | ํ๋ก๋์ | ๊ฐ๋ฐ/ํ ์คํธ |
|---|---|---|
| Multi-AZ | ๊ถ์ฅ(์๋ ์ฅ์ ์กฐ์น) | ์ ํ(๋น์ฉ ์ ๊ฐ) |
| ๋ฐฑ์ /๋ชจ๋ํฐ๋ง | ํ์ฑํ | ํ์ ์ |
| ๋น์ฉ | ์๋์ ๋์ | ์ ๊ฐ ๊ฐ๋ฅ |
โ ๏ธ ํผ๋ธ๋ฆญ ์ก์ธ์ค๋ โ์๋์คโ๋ก ๋์ด DB๋ฅผ ์ธํฐ๋ท์ ๋ ธ์ถํ์ง ์๋๋ค. ์น ์๋ฒ(
web-sg)์์ ์ค๋ 3306๋ง ํ์ฉํด, DB๋ ํ๋ผ์ด๋นํ๊ฒ ์ ์งํ๋ค.
Task 4 โ ์น ์๋ฒ (์ฌ์ฉ์ ๋ฐ์ดํฐ)
ํผ๋ธ๋ฆญ ์๋ธ๋ท์ ์น ์๋ฒ๋ฅผ ๋ง๋ค๊ณ , PHPยทMariaDB ํด๋ผ์ด์ธํธ๋ฅผ ์ค์นํด RDS ์ฐ๋์ฉ ์ฑ์ ๋ฐฐํฌํ๋ค.
1
2
3
4
5
6
7
8
#!/bin/bash -ex
dnf update
dnf install httpd php php-mysqlnd php-fpm php-json mariadb105 -y
systemctl enable --now httpd
cd /var/www/html/
wget https://aws-largeobjects.s3.ap-northeast-2.amazonaws.com/AWS-AcademyACF/lab7-app-php7.zip
unzip lab7-app-php7.zip -d /var/www/html/
chown apache:root /var/www/html/rds.conf.php
Task 5 โ Failover ํ์ธ (ํต์ฌ)
์น ํ์ด์ง์ DB ์ ๋ณด(์๋ํฌ์ธํธยทlabdbยทmaster)๋ฅผ ์
๋ ฅํด ์ฐ๋ํ ๋ค, ์ฌ๋ถํ
(์ฅ์ ์กฐ์น)์ผ๋ก Standby๋ก ๋์ด๊ฐ๋์ง nslookup์ผ๋ก ํ์ธํ๋ค.
1
2
3
4
5
6
7
8
9
# ์ฅ์ ์กฐ์น ์ : Primary IP
$ nslookup <rds_Endpoint>
Address: 10.0.3.XX
# lab-rds โ ์์ โ ์ฌ๋ถํ
(์ฅ์ ์กฐ์น๋ก ์ฌ๋ถํ
)
# ์ฅ์ ์กฐ์น ํ: ์๋ํฌ์ธํธ๋ ๊ทธ๋๋ก์ธ๋ฐ IP๋ง ๋ฐ๋(Standby๋ก ์ ํ)
$ nslookup <rds_Endpoint>
Address: 10.0.2.41
๐ก Multi-AZ Failover์ ๋ง๋ฒ โ ์ฅ์ ๊ฐ ๋๋ ์๋ํฌ์ธํธ(๋๋ฉ์ธ)๋ ๊ทธ๋๋ก์ด๊ณ , ๋ค์์ ๊ฐ๋ฆฌํค๋ IP๋ง Standby๋ก ๋ฐ๋๋ค. ๊ทธ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ ์ฃผ์๋ฅผ ๋ฐ๊ฟ ํ์ ์์ด ์๋์ผ๋ก ๋๊ธฐ ์ธ์คํด์ค์ ์ฐ๊ฒฐ๋๋ค. ์ด๊ฒ์ด ๊ณ ๊ฐ์ฉ์ฑ์ ํต์ฌ์ด๋ค.
์ค์ต ํ DB โ ์๋ธ๋ท/ํ๋ผ๋ฏธํฐ/์ต์ ๊ทธ๋ฃน โ ์ธ์คํด์ค โ ๋ณด์ ๊ทธ๋ฃน ์์ผ๋ก ์ญ์ ํ๋ค.
๐ ์ ๋ฆฌ
1
2
3
4
5
RDS
โโ ๊ฐ๋
๊ด๋ฆฌํ ๊ด๊ณํ DB(PaaS)
โโ ์ฑ
์ ์ฑ์ ์ฌ์ฉ์, ๋๋จธ์ง(OSยทํจ์นยท๋ฐฑ์
ยทHA)๋ AWS
โโ ๊ตฌ์ฑ ์๋ธ๋ท/ํ๋ผ๋ฏธํฐ/์ต์
๊ทธ๋ฃน + ์ธ์คํด์ค
โโ HA Multi-AZ โ Failover ์ ์๋ํฌ์ธํธ ์ ์ง, IP๋ง ์ ํ
| ๊ฐ๋ | ํ ์ค ์ ์ |
|---|---|
| RDS | ๊ด๋ฆฌํ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค |
| Multi-AZ | ๋๊ธฐ ์ธ์คํด์ค๋ก ์๋ ์ฅ์ ์กฐ์น |
| ์๋ํฌ์ธํธ | Failover ํ์๋ ์ ์ง๋๋ ์ ์ ์ฃผ์ |
RDS์ ํต์ฌ์ DB ์ด์์ AWS์ ๋งก๊ธฐ๊ณ , Multi-AZ๋ก ์ฅ์ ์ ๋๋นํ๋ ๊ฒ์ด๋ค. Failover ์ ์๋ํฌ์ธํธ๊ฐ ์ ์ง๋๋ค๋ ์ ๋๋ถ์, ์ ํ๋ฆฌ์ผ์ด์ ์์ ์์ด ๊ณ ๊ฐ์ฉ์ฑ์ ์ป์ ์ ์๋ค.




Comments powered by Disqus.