AWS RDS 구성 및 이중화 실습

y001·2025년 3월 23일
0
post-thumbnail

1. 환경 구성하기

이번 실습의 핵심은 RDS 클러스터의 고가용성 설정과 장애 시 자동 승격 과정을 직접 확인하는 것이다.

구성 요소:

  • VPC: MyVPC01 (10.0.0.0/16), DNS 호스트 이름 활성화 필수. 이 기능이 활성화되어야 EC2 인스턴스가 퍼블릭/프라이빗 IP를 기반으로 DNS 이름을 자동 할당받는다.
  • 서브넷 그룹: mydbsubnetgroup (ap-northeast-2a, 2c). 프라이빗 서브넷 2개를 등록해 다중 가용영역 지원.
  • 보안 그룹: MyPrivateSecugroup. 실습에서는 HTTP, HTTPS, SSH, ICMP 모두 열어두었지만, 실 서비스에서는 VPC 내부 대역만 열어두는 것을 추천.
  • RDS 클러스터: Aurora MySQL, 개발/테스트 용도, 클러스터 식별자 mydb, 마스터 계정 dbadmin, 비밀번호 toor1234., 초기 DB 이름은 testdb.
  • EC2 인스턴스: 프라이빗 서브넷에 두 대 (MyWeb11: 2a, MyWeb21: 2c). mariadb105, php, php-mysqlnd 설치 완료.

EC2 사용자 데이터 (MyWeb11, MyWeb21 공통):

#!/bin/bash
hostnamectl --static set-hostname $(curl -s http://169.254.169.254/latest/meta-data/instance-id)
echo "toor1234." | passwd --stdin root
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
sed -i 's/^#PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config
systemctl restart sshd
yum install -y httpd mariadb105 php php-mysqlnd
echo "<h1>$(hostname) test web page</h1>" > /var/www/html/index.html
systemctl enable --now httpd.service

2. 가용영역이 다른 두 EC2 인스턴스에서 RDS 접속 테스트

MyWeb11 인스턴스에서 다음 명령어로 접속:

mysql -h mydb.cluster-abcd.ap-northeast-2.rds.amazonaws.com -u dbadmin -p
  • testdb 생성:
CREATE DATABASE testdb;

MyWeb21 인스턴스에서도 동일 클러스터 접속 후 show databases; 실행 → testdb 정상 확인.

👉 이 과정은 다중 AZ 구성이 가진 가장 큰 의미를 보여준다. 가용영역이 달라도 하나의 클러스터 엔드포인트를 통해 같은 DB에 접근 가능하며, 인프라의 확장성과 장애 시 복원력을 보장한다.

3. 읽기 복제본 생성 및 테스트

  • RDS 콘솔에서 읽기 복제본(mydbinstance-2) 생성.
  • 리더 인스턴스 생성 후 정상 동작 확인.
  • EC2 인스턴스에서 SELECT 쿼리를 여러 번 실행해 트래픽이 분산되는지 확인.

👉 이건 고가용성과 확장성의 핵심이다. 다중 리더 구성을 통해 읽기 트래픽을 분산 처리할 수 있고, 서비스 트래픽이 급증해도 유연하게 대응할 수 있다. 실시간 분석, 조회 요청이 많은 서비스라면 필수 구성.

4. 주 인스턴스 장애 및 자동 승격 실습

  • 주 인스턴스(mydbinstance-1) 강제 삭제.
  • 콘솔에서 리더 인스턴스의 자동 승격 과정을 모니터링.
  • 클러스터 엔드포인트는 변경되지 않으며, 리더 인스턴스가 자동으로 라이터로 승격.
  • EC2 인스턴스에서 동일 엔드포인트로 접속 후 show databases; 확인 → 장애 상황에서도 서비스는 멈추지 않는다.

👉 관리자가 개입하지 않아도 AWS가 자동으로 리더를 승격해 서비스 중단을 막는다.

0개의 댓글