실습 목표

이번 실습에서는 Amazon Aurora PostgreSQL 데이터베이스 클러스터를 생성하고 다음 기능을 확인한다.

  • Aurora PostgreSQL 생성
  • Database Subnet 구성
  • DB Security Group 구성
  • DB Subnet Group 생성
  • PostgreSQL 접속
  • Database / User 생성
  • Parameter Group 적용
  • Read Replica 동작 확인
  • Aurora Failover 테스트

1. Database Network Baseline 생성

Aurora는 서로 다른 AZ에 최소 2개의 DB Subnet이 필요하다.

1️⃣ Database Subnet 생성

AWS 콘솔 이동

VPC → Subnets → Subnet 생성

다음 명세로 생성한다.

항목Database Subnet 01Database Subnet 02
VPC이니셜-vpc-ap-01이니셜-vpc-ap-01
Subnet Name이니셜-sub-db-01이니셜-sub-db-02
AZap-northeast-2aap-northeast-2c
CIDR10.0.80.0/2410.0.81.0/24
  • 서로 다른 AZ에 DB Subnet이 존재해야 Aurora Multi-AZ 구성이 가능하다.

2️⃣ Database Routing Table 생성

AWS 콘솔 이동

VPC → Route Tables → 생성

설정

항목
Name이니셜-rtb-db
VPC이니셜-vpc-ap-01

생성 후 다음 서브넷 연결

  • 이니셜-sub-db-01
  • 이니셜-sub-db-02

2. Security Group 생성

AWS 콘솔 이동

EC2 → Security Groups → 생성

설정

항목
Name이니셜-sg-aurora
VPC이니셜-vpc-ap-01

Inbound Rule

TypePortSource
PostgreSQL543210.0.0.0/16

💡 VPC 내부에서만 DB 접속 허용한다.


3. DB Subnet Group 생성

Aurora는 DB Subnet Group을 통해 DB 인스턴스를 배치할 서브넷을 지정한다.

AWS 콘솔 이동

RDS → Subnet Groups → Create

설정

항목
Name이니셜-subgroup-aurora
VPC이니셜-vpc-ap-01
AZap-northeast-2a, ap-northeast-2c
Subnet이니셜-sub-db-01, 이니셜-sub-db-02

4. Aurora PostgreSQL 생성

AWS 콘솔 이동

RDS → Databases → Create database

Engine 설정

항목
EngineAurora PostgreSQL
VersionAurora PostgreSQL 15
TemplateDev/Test

Database 설정

항목
Cluster identifier이니셜-rds-aurora
Master usernamepostgres
Passwordqwer1234

Instance 설정

항목
Instance typedb.t3.medium
Multi-AZ생성 안함

Network 설정

항목
VPC이니셜-vpc-ap-01
DB Subnet Group이니셜-subgroup-aurora
Public AccessNo
Security Group이니셜-sg-aurora

5. PostgreSQL 접속

1️⃣ PostgreSQL client 설치

sudo apt update
sudo apt install postgresql-client

2️⃣ Aurora Endpoint 확인

AWS 콘솔 이동

RDS → Databases → 이니셜-rds-aurora

다음 값 복사

Cluster Endpoint

3️⃣ PostgreSQL 접속

psql -U postgres -h {RDS_AURORA_ENDPOINT}

비밀번호 입력

qwer1234

정상 접속 화면

postgres=>

6. Database 및 User 생성

Aurora 접속 상태에서 실행

create database trip_advisor;
 
create user "user" with password 'qwer1234';
 
grant all privileges on database trip_advisor to "user";
 
alter database trip_advisor owner to "user";

user 계정 접속 테스트

psql -U user -d trip_advisor -h {RDS_AURORA_ENDPOINT}

7. Custom Parameter Group 생성

Parameter Group은 DB 설정값 관리 기능이다.

Parameter Group 생성

AWS 콘솔 이동

RDS → Parameter Groups → Create

설정

항목
Name이니셜-pg-postgresql
EngineAurora PostgreSQL
Familyaurora-postgresql15
TypeDB Cluster Parameter Group

timezone 설정

Parameter Group 수정

timezone = Asia/Seoul

Parameter Group 적용

RDS → Databases → 이니셜-rds-aurora → Modify

다음 변경

DB Cluster Parameter Group
→ 이니셜-pg-postgresql

적용 확인

SHOW timezone;

결과

Asia/Seoul

8. Read Replica 테스트

Aurora Reader 인스턴스를 생성한다.

AWS 콘솔 이동

RDS → Databases → 이니셜-rds-aurora → Actions → Add reader

9. Writer / Reader 테스트

Writer 접속

psql -U user -d trip_advisor -h {WRITER_ENDPOINT}

테스트 테이블 생성

CREATE TABLE attractions (
 id SERIAL PRIMARY KEY,
 name VARCHAR(255),
 location VARCHAR(255),
 average_rating VARCHAR(10),
 photo_url VARCHAR(255)
);

Reader 조회 반복

while true; do
 PGPASSWORD="qwer1234" psql \\
 -h {READER_ENDPOINT} \\
 -U user \\
 -d trip_advisor \\
 -c "select * from attractions;";
 sleep 10;
done

Writer에서 데이터 입력

INSERT INTO attractions
(name,location,average_rating)
VALUES
('Eiffel Tower','Paris',4.7),
('Statue of Liberty','New York',4.6),
('Taj Mahal','India',4.9);

10초 후 Reader에서 데이터 확인 가능하다.


10. Aurora Failover 테스트

Aurora는 Writer 장애 시 Reader가 자동 승격된다.


Writer IP 확인

nslookup {WRITER_ENDPOINT} \\
| grep -E "Address: 10\\." \\
| awk '{print $2}'

Writer IP 반복 조회

while true; do
 nslookup {WRITER_ENDPOINT} \\
 | grep -E "Address: 10\\." \\
 | awk '{print $2}'
 sleep 1
done

Failover 실행

AWS 콘솔 이동

RDS → Databases → 이니셜-rds-aurora → Actions → Failover

결과 확인

터미널에서 Writer IP가 변경된다.

기존 Reader → 새로운 Writer

승격된 것이다.


핵심 정리

Aurora 특징

항목설명
Multi-AZ여러 AZ에 DB 배치
Reader Instance읽기 확장
Failover자동 장애 조치
Endpoint고정 IP 대신 DNS 사용