Why Not SW CAMP 5기/수업 기록
[4월 2주차-4/9][AWS 실습] WordPress + RDS + Auto Scaling + ELB로 고가용성 아키텍처 구축하기
rubii
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 부하 시 자동 확장되는 구조를 설정했습니다.
- EC2 > Auto Scaling 그룹 > Auto Scaling 그룹 생성
- 이름: myautoscallinggroup
- 시작 템플릿 생성:
- 이름: mytemplate
- 이미지: 내 AMI
- 인스턴스 유형: t2.micro
- 키페어, 보안그룹 설정 → 템플릿 생성
- 템플릿 선택 → 다음
- 네트워크/서브넷: ELB 대상 그룹과 동일하게 a, c 선택
- 로드밸런싱: 기존 ELB 대상 그룹 연결
- 상태 확인: ✅ Elastic Load Balancer 상태 확인 체크
- 용량 설정:
- 원하는 용량: 1
- 최소: 1 / 최대: 2
- 크기 조정 정책: 대상 추적 정책
- 목표 CPU: 80%
- 축소 비활성화 체크
- 알림 설정 및 생성 완료
✅ 3. Auto Scaling 작동 테스트
- 이름 없는 인스턴스가 자동으로 생성됨
- 인스턴스 퍼블릭 IP로 접속 (PuTTY)
- 사용자명: bitnami
- Stress 테스트로 CPU 부하 발생:
- sudo apt-get install stress stress --cpu 4
- CloudWatch에서 모니터링 탭 → CPU 사용률 확인
- 정책이 누락된 경우: Auto Scaling > 정책 추가 후 재확인
- 정상적으로 인스턴스 추가되는 것 확인 ✅
✅ 4. WordPress 접속 및 글 작성
- ELB DNS 주소로 접속 → 워드프레스 초기화
- PuTTY에서 비밀번호 확인: cat bitnami_credentials
- 로그인 후 게시글 작성
- 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 고가용성 구성
- RDS 인스턴스 > 작업 > 다중 AZ 배포로 변환
- 즉시 적용 체크
- 변환 완료 후 → 구성 탭에서 다중 AZ: 예 확인
- 장애조치 테스트: 재부팅 > 장애 조치 체크
✅ 7. 읽기 전용 복제본 생성 (다른 리전)
- RDS > 작업 > 읽기 전용 복제본 생성
- 식별자: mydatabasereadreplica
- 리전: us-east-1 (N. Virginia)
- 퍼블릭 액세스: 예
- 읽기 전용 복제본 생성
구성 결과:
- 리전 내: 마스터 + 스탠바이 (다중AZ)
- 다른 리전: Read Replica
- 마스터의 데이터는 복제본에 비동기 복제됨
✅ 8. MySQL Workbench 연결 및 테이블 생성
- Workbench 설치 후 커넥션 추가
- 이름: mydbconnection
- 호스트: RDS 엔드포인트
- 비밀번호: qwerty2580
- GitHub SQL 파일에서 쿼리 복사
- 워드프레스 DB 테이블 생성 및 사용자 user / 1234 생성
✅ 9. 워드프레스 RDS 연동
- EC2 인스턴스 접속 (bitnami)
- 설정 파일 열기:
- vim /opt/bitnami/wordpress/wp-config.php
- DB_HOST를 RDS 엔드포인트로 수정, 유저이름, 비밀번호 수정
- :wq 저장
✅ 10. 수정된 인스턴스로 AMI 재생성
- 수정 완료된 EC2 인스턴스 선택
- 작업 > 이미지 및 템플릿 > 이미지 생성
- 이름: mywordpressAMInew
✅ 11. 시작 템플릿 & Auto Scaling 그룹 업데이트
- 시작 템플릿 생성: mytemplatenew
- AMI: mywordpressAMInew
- 인스턴스 타입: t2.micro
- 보안 그룹: 기존 워드프레스용
- Auto Scaling 그룹 > 시작 템플릿 변경 > mytemplatenew
✅ 12. 최종 테스트
- 기존 EC2 인스턴스 모두 종료
- Auto Scaling이 자동으로 새 인스턴스 생성
- 인스턴스 IP /admin 접속 > user / 1234 로그인 > 게시글 작성
- ELB 주소 접속 → 게시글 정상 출력
- Workbench에서도 게시글 데이터 확인 가능
✅ 마무리
이번 실습을 통해:
- EC2 + WordPress 설정
- DB 분리 (RDS)
- 다중AZ 및 Read Replica 구성
- ELB + Auto Scaling 확장 구성
까지 실제 서비스를 운영할 수 있는 수준의 아키텍처를 직접 구성해보았습니다.
다음에는 S3 연동, Route53 연결, CodeDeploy 배포 자동화 등 더 심화된 구성도 도전해보려 합니다! 💪