3 Tier Architecture 구축(2) - RDS

안상운·2025년 3월 10일

4. RDS

1. AWS RDS를 이용한 MySQL 서버 사용 및 실습.

1. 서브넷 그룹.

  • 프라이빗 서브넷에 rds를 위치 시키려고함.

  • rds -> 서브넷 그룹 생성

  • 앞에서 프라이빗 서브넷을 만든 가용 구역 설정.

  • 폐쇄망 서브넷 선택.

  • 서브넷 그룹 생성 완료.

2. 보안 그룹.

  • 보안 그룹 생성.

인바운드 설정 시 ip대역 뿐만 아니라 다른 보안 그룹으로도 지정 할 수 있음. 해당 보안 그룹을 가지고 있는 시스템만 접을 가능하게 해 줄 수 있음...!

  • 인바운드 설정.

3. RDS 데이터베이스 생성.

  • mysql 선택.

  • 개발, 테스트

  • 단일 인스턴스 생성.

  • 자격증명 설정

  • 인스턴스 구성.

📌 RDS 인스턴스 클래스 종류별 비교

Amazon RDS 인스턴스 클래스는 크게 세 가지로 나뉨.

분류특징사용 사례
📌 스탠다드 클래스 (m 시리즈)- CPU와 메모리 균형형 (Balanced)
- 범용적인 워크로드에 적합
- 웹 애플리케이션 DB
- 중소규모 트래픽 처리
📌 메모리 최적화 클래스 (r 및 x 시리즈)- RAM이 많음, 메모리 집약적- 읽기/쓰기 캐시가 많은 DB
- 고성능 분석 작업
📌 버스티블 클래스 (t 시리즈)- 낮은 성능, 가끔씩 부하 발생 시 CPU 크레딧 사용
- 저비용 옵션
- 테스트/개발 환경
- 소규모 애플리케이션

✅ 선택 기준

  • 고성능, 트랜잭션 많음r5, x1 (메모리 최적화)
  • 일반적인 웹 서비스m5 (스탠다드)
  • 비용 절감, 가끔 트래픽 발생t3 (버스티블)

👉 현재 선택된 db.t3.medium적당한 성능 & 저비용으로 개발/테스트용에 적합함! 🚀

  • 스토리지

  • 연결 - 앞에 만든거 선택.

  • 보안그룹 - 앞에 만든거 선택.

  • 추가구성.

생성 완료...!

2. 접속테스트.

1.네트워크 기본 연결 확인

현재 네트워크(VPC, 서브넷, 인터넷 게이트웨이 등)가 정상적으로 작동하는지 확인하려면 각 리소스 간 네트워크 연결을 테스트.

(1) Private 서브넷 내 EC2 (Nginx)에서 네트워크 확인

퍼블릭 서브넷에 있는 EC2에서 인터넷이 되는지 확인.

OpenVPN 서버 또는 Bastion Host(점프 서버)에서 Private EC2로 SSH 접속

ssh -i my-key.pem ec2-user@<PRIVATE-EC2-IP>


네모 표시 되어있는 a 가용구역에서 프라이빗a, c구역 접속 가능...!

Private EC2에서 인터넷 접속 확인 (NAT Gateway 유무 확인)


NAT Gateway 정상.

로드밸런서 트래픽 확인.

  • health check

  • 로드밸런서 접속 확인

로드밸런서 정상.

(2) EC2와 RDS 연결 확인

WordPress를 배포하기 전에, EC2에서 RDS가 정상적으로 연결되는지 확인.

Private EC2에서 RDS 접속 테스트

Private EC2에서 MySQL 클라이언트 설치

sudo yum install -y mysql

RDS 접속 시도

telnet your-db-instance.xxxxxx.rds.amazonaws.com 3306

mysql -h your-db-instance.xxxxxx.rds.amazonaws.com -u admin -p

접속 성공....!

이제 위 그림처럼 프라이빗 구역의 ec2경로를 통해 인터넷에 접속할 수 없는 폐쇄망에 있는 rds로 접속이 가능.

2. wordpress 인스턴스 설치

Wordpress 서버용 EC2 인스턴스 생성

  • 퍼블릭 서브넷 중 하나에 EC2 인스턴스 생성
  • Amazon Linux 2023 AMI 버전 선택
  • t2.micro 인스턴스 타입
  • wordpress-ssh 및 wordpress-server 보안 그룹 설정
  • 생성 후 티P 연결
  • 본인 키페어 사용


1. EC2 인스턴스 생성

  1. AWS 콘솔 접속 → EC2 서비스 이동
  2. 인스턴스 시작 클릭
  3. AMI 선택:
    • Amazon Linux 2023 (HVM), SSD Volume Type 선택
  4. 인스턴스 유형 선택:
    • t2.micro (프리 티어 사용 가능)
  5. 키 페어 설정:
    • 기존에 보유한 본인 키페어 선택 (예: my-key.pem)
  6. 네트워크 설정 (퍼블릭 서브넷 선택)
    • VPC: 기본 또는 원하는 VPC 선택
    • 서브넷: 퍼블릭 서브넷 중 하나 선택
    • 자동 할당 퍼블릭 IP: 활성화 (Enabled)
  7. 보안 그룹 생성 (SSH 및 웹 서버 접근 허용)
    • wordpress-ssh (SSH 접근)
      • 유형: SSH
      • 포트 범위: 22
      • 소스: 내 IP (또는 0.0.0.0/0 → 보안상 비추천)
    • wordpress-server (웹 서버 접근)
      • 유형: HTTP
      • 포트 범위: 80
      • 소스: 0.0.0.0/0 (모든 외부 요청 허용)
  8. 저장소 설정:
    • 기본값 (8 GiB) 그대로 유지 가능 (추후 필요하면 확장)
  9. 검토 및 시작
    • 모든 설정 확인 후 인스턴스 시작 클릭

2. Elastic IP 할당 및 연결

  1. EC2 대시보드 → 네트워크 & 보안 → Elastic IP 이동
  2. 새 Elastic IP 할당
  3. 할당한 Elastic IP를 EC2 인스턴스에 연결
    • 대상 유형: 인스턴스
    • 대상 인스턴스: 방금 생성한 WordPress 서버 선택
    • 연결하기 클릭

3. EC2에 접속하여 WordPress 설치

  1. SSH 접속
    ssh -i my-key.pem ec2-user@<Elastic-IP>
  2. Apache, PHP, MySQL 클라이언트 설치
    sudo yum update -y
    sudo yum install -y httpd php php-mysqlnd mariadb105
  3. Apache 서비스 시작 및 부팅 시 자동 실행 설정
    sudo systemctl start httpd
    sudo systemctl enable httpd
  4. WordPress 다운로드 및 설정
    cd /var/www/html
    sudo wget https://wordpress.org/latest.tar.gz
    sudo tar -xvzf latest.tar.gz
    sudo mv wordpress/* .
    sudo rm -rf wordpress latest.tar.gz
  5. Apache 웹서버 권한 설정
    sudo chown -R apache:apache /var/www/html
    sudo chmod -R 755 /var/www/html
  6. Apache 재시작
    sudo systemctl restart httpd

4. WordPress 설치 완료

  • 브라우저에서 http://<Elastic-IP> 접속하면 WordPress 설치 페이지가 나타남.

3. MySQL Proxy를 사용한 연결

현재 아키텍처에서 Public Subnet에 위치한 WordPress 서버가 Private Subnet의 RDS에 직접 접근할 수 없는 문제를 해결하기 위해 Private Subnet의 EC2 인스턴스를 중개 서버(Proxy)로 활용하여 SSH 터널링 사용.

1. MySQL Proxy를 사용한 연결

✅ 현재 구조
WordPress 서버: Public Subnet에 위치
RDS(MySQL): Private Subnet에 위치 (Publicly Accessible = False)
중개용 EC2 서버: Private Subnet에 위치 (WordPress는 이 서버를 통해 RDS에 연결해야 함)
🚀 목표
✅ Public Subnet의 WordPress 서버 → Private Subnet의 EC2 인스턴스 → Private Subnet의 RDS로 연결
✅ SSH 터널을 이용해 WordPress에서 RDS에 접속 가능하게 함
✅ 보안 그룹(Security Group)에서 최소한의 접근만 허용

2. wordpress서버에서 ssh 터널링 설정.

  • SSH 터널링을 통해 WordPress에서 RDS로 접속하기
ssh -i <your-key.pem> -L 3306:<RDS_엔드포인트>:3306 ec2-user@<PRIVATE_EC2_IP> -N -f

3. 데이터베이스 연동

  • 데이터베이스 연동 성공...!

4. 최종 확인

  • ssh 터널 상태 확인 및 MySQL 접속 확인

  • wordpress 데이터베이스 안에 WordPress에서 필요한 테이블들이 정상적으로 있는지 확인.

  • WordPress의 사이트 URL이 정상적으로 저장되었는지 확인.

    wordpress의 privateip가 잘 저장 된것을 확인.(openvpn 덕에 private ip로 통신 가능.)

0개의 댓글