ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [4월 2주차-4/9][AWS 실습] WordPress + RDS + Auto Scaling + ELB로 고가용성 아키텍처 구축하기
    Why Not SW CAMP 5기/수업 기록 2025. 4. 9. 16:41

    이번 포스팅에서는 AWS를 활용해 고가용성 웹 아키텍처를 직접 구성해본 실습 경험을 공유합니다.
    Bitnami WordPress 이미지로 EC2 인스턴스를 띄우고, RDS(MySQL)로 DB를 분리한 뒤, ELB와 Auto Scaling을 통해 확장성과 안정성을 확보해봤습니다.


    ✅ 1. AMI 생성

    먼저 EC2 인스턴스를 기반으로 커스터마이징된 AMI를 생성했습니다.

    • EC2 인스턴스 선택
    • 상단 메뉴 > 작업 > 이미지 및 템플릿 > 이미지 생성
    • 이름 입력, 인스턴스 재부팅 체크 해제 → 이미지 생성

    ✅ 2. Auto Scaling Group 생성

    Auto Scaling 그룹을 통해 CPU 부하 시 자동 확장되는 구조를 설정했습니다.

    1. EC2 > Auto Scaling 그룹 > Auto Scaling 그룹 생성
    2. 이름: myautoscallinggroup
    3. 시작 템플릿 생성:
      • 이름: mytemplate
      • 이미지: 내 AMI
      • 인스턴스 유형: t2.micro
      • 키페어, 보안그룹 설정 → 템플릿 생성
    4. 템플릿 선택 → 다음
    5. 네트워크/서브넷: ELB 대상 그룹과 동일하게 a, c 선택
    6. 로드밸런싱: 기존 ELB 대상 그룹 연결
    7. 상태 확인: ✅ Elastic Load Balancer 상태 확인 체크
    8. 용량 설정:
      • 원하는 용량: 1
      • 최소: 1 / 최대: 2
    9. 크기 조정 정책: 대상 추적 정책
      • 목표 CPU: 80%
      • 축소 비활성화 체크
    10. 알림 설정 및 생성 완료

    ✅ 3. Auto Scaling 작동 테스트

    • 이름 없는 인스턴스가 자동으로 생성됨
    • 인스턴스 퍼블릭 IP로 접속 (PuTTY)
    • 사용자명: bitnami
    • Stress 테스트로 CPU 부하 발생:
    • sudo apt-get install stress stress --cpu 4
    • CloudWatch에서 모니터링 탭 → CPU 사용률 확인
    • 정책이 누락된 경우: Auto Scaling > 정책 추가 후 재확인
    • 정상적으로 인스턴스 추가되는 것 확인 ✅

    ✅ 4. WordPress 접속 및 글 작성

    1. ELB DNS 주소로 접속 → 워드프레스 초기화
    2. PuTTY에서 비밀번호 확인: cat bitnami_credentials
    3. 로그인 후 게시글 작성
    4. ELB 주소 새로고침 시 글이 나왔다 안 나왔다 → Auto Scaling 인스턴스마다 DB가 달라서 생기는 문제임

    ✅ 5. RDS 생성

    이제 EC2 내부 DB가 아닌, **RDS(MySQL)**를 생성하여 워드프레스의 DB를 외부로 분리합니다.

    • RDS 콘솔 > 데이터베이스 생성
      • 엔진: MySQL
      • 템플릿: 프리 티어
      • 인스턴스 ID: mydatabase
      • 비밀번호: qwerty2580
      • 인스턴스 타입: db.t3.micro
      • 퍼블릭 액세스: 예
      • 보안 그룹: 새로 생성 (RDSmydatabase)
    • 엔드포인트 확인:
    • mydatabase.c70wggaeiels.ap-northeast-2.rds.amazonaws.com

    ✅ 6. RDS 고가용성 구성

    1. RDS 인스턴스 > 작업 > 다중 AZ 배포로 변환
    2. 즉시 적용 체크
    3. 변환 완료 후 → 구성 탭에서 다중 AZ: 예 확인
    4. 장애조치 테스트: 재부팅 > 장애 조치 체크

    ✅ 7. 읽기 전용 복제본 생성 (다른 리전)

    1. RDS > 작업 > 읽기 전용 복제본 생성
    2. 식별자: mydatabasereadreplica
    3. 리전: us-east-1 (N. Virginia)
    4. 퍼블릭 액세스: 예
    5. 읽기 전용 복제본 생성

    구성 결과:

    • 리전 내: 마스터 + 스탠바이 (다중AZ)
    • 다른 리전: Read Replica
    • 마스터의 데이터는 복제본에 비동기 복제됨

    ✅ 8. MySQL Workbench 연결 및 테이블 생성

    1. Workbench 설치 후 커넥션 추가
      • 이름: mydbconnection
      • 호스트: RDS 엔드포인트
      • 비밀번호: qwerty2580
    2. GitHub SQL 파일에서 쿼리 복사
    3. 워드프레스 DB 테이블 생성 및 사용자 user / 1234 생성

    ✅ 9. 워드프레스 RDS 연동

    1. EC2 인스턴스 접속 (bitnami)
    2. 설정 파일 열기:
    3. vim /opt/bitnami/wordpress/wp-config.php
    4. DB_HOST를 RDS 엔드포인트로 수정, 유저이름, 비밀번호 수정
    5. :wq 저장

    ✅ 10. 수정된 인스턴스로 AMI 재생성

    1. 수정 완료된 EC2 인스턴스 선택
    2. 작업 > 이미지 및 템플릿 > 이미지 생성
    3. 이름: mywordpressAMInew

    ✅ 11. 시작 템플릿 & Auto Scaling 그룹 업데이트

    1. 시작 템플릿 생성: mytemplatenew
      • AMI: mywordpressAMInew
      • 인스턴스 타입: t2.micro
      • 보안 그룹: 기존 워드프레스용
    2. Auto Scaling 그룹 > 시작 템플릿 변경 > mytemplatenew

    ✅ 12. 최종 테스트

    1. 기존 EC2 인스턴스 모두 종료
    2. Auto Scaling이 자동으로 새 인스턴스 생성
    3. 인스턴스 IP /admin 접속 > user / 1234 로그인 > 게시글 작성
    4. ELB 주소 접속 → 게시글 정상 출력
    5. Workbench에서도 게시글 데이터 확인 가능

    ✅ 마무리

    이번 실습을 통해:

    • EC2 + WordPress 설정
    • DB 분리 (RDS)
    • 다중AZ 및 Read Replica 구성
    • ELB + Auto Scaling 확장 구성

    까지 실제 서비스를 운영할 수 있는 수준의 아키텍처를 직접 구성해보았습니다.

    다음에는 S3 연동, Route53 연결, CodeDeploy 배포 자동화 등 더 심화된 구성도 도전해보려 합니다! 💪


     

Designed by Tistory.