반응형
1. Auto Scaling 설정
우리가 원하는 최종 아키텍쳐에서는 가용성을 위해 뒷단 서버가 Auto Scaling 되는 것을 원했다.
- 기존 인스턴스 → [작업] → [인스턴스에서 템플릿 생성]을 하면,
- 자동으로 해당 인스턴스 기반으로 한 AMI가 생성된다.
- 하지만 이 방식은 AMI 이름이 자동으로 정해져서 헷갈릴 수 있고,
- AMI를 명시적으로 관리하지 않으면 추적이 어렵기 때문에,
- 직접 AMI를 먼저 만든 다음 → Launch Template에서 선택하는 방식이 더 안전하다.
1-1. AMI 이미지 생성
- EC2-web-3tier-nginx를 기반으로 AMI 이미지를 만들어보자.
- 그 전에 대상그룹에서 Healthy 상태인지 확인하고! (안에 Nginx 제대로 돌아가는 지 확인한 뒤 이미지 만들 것)
- sudo systemctl enable nginx 로 재부팅 시 자동 실행도 등록해둔다.
1-2. 시작 템플릿 생성
- AMI가 (대기 중) → (사용 가능)으로 바뀔 때 까지 대기
- [인스턴스] → [시작 템플릿] → [시작 템플릿 생성]
- 이름 : launch-template-web-3tier-nginx
- 이미지 : 내 AMI > web-3tier-nginx-ami
- 인스턴스 유형, 보안 그룹, 키페어
- 네트워크 : 서브넷은 “시작 템플릿에 포함하지 않음”
- Auto Scaling Group이 실제로 인스턴스를 배치할 VPC / 서브넷을 직접 지정
1-3. Auto Scaling Group
- [좌측 메뉴의 하단] → [Auto Scaling 그룹] → [생성]
시작 템플릿 선택
- Auto Scaling 그룹 이름 : asg-3tier-web-nginx
- 시작 템플릿 : launch-template-web-3tier-nginx (직전 만든 템플릿)
인스턴스 시작 옵션 선택
- VPC : vpc-web-3tier
- 서브넷 : NGINX가 있을 프라이빗 영역 가용 영역 2개 이상 선택
- subnet-web-3tier-nat-Azone
- subnet-web-3tier-nat-Czone
다른 서비스와 통합
- 로드 밸런싱 : 기존 로드 밸런서에 연결
- 대상 그룹 선택 : TG-web-3tier
- VPC Lattice 통합 옵션 : 서비스 없음
- 상태 확인 - ELB 상태 확인 켜기
- 유예 기간 : 약 60초
그룹 크기 및 크기 조정 구성
- 원하는 용량 : 1
- 원하는 최소 용량 : 1
- 원하는 최대 용량 : 2 ~ 5 사이 값 (현재 2)
- 대상 추적 크기 조정 정책
- 평균 CPU 사용률 대상 값 = 80 (%)
- 나머지 기본
- 모니터링 : CloudWatch 내에서 그룹 지표 수집 활성화
알림 추가
- X
태그 추가
- Name : EC2-web-3tier-nginx-asg
검토
- (기존 수동으로 만든 nginx는 일단 중지시켜놓자)
2. 부하 테스트
2-1. 세부 모니터링
- Auto Scaling 그룹 → [편집] → 하단 [인스턴스 관리]
- = CPU 모니터링 대상 인스턴스
- 해당 인스턴스 → [모니터링 및 문제 해결] → 세부 모니터링 관리
- = 세부 모니터링을 1분 동안 활성화할 수 있다.
- → EC2 콘솔에 인스턴스에 대한 1분 기간의 모니터링 그래프가 표시된다.
- 우리는 Private Subnet에 인스턴스가 있으니까, 바로 콘솔로 확인할 수 없고,
- OpenVPN을 켜고 터미널로 들어가서 확인해보자.
2-2. 부하 걸기
sudo yum install stress -y
stress -c 2
- stress 명령어로 CPU 부하를 인위적으로 준다.
- 현재 우리 인스턴스는 micro (2개의 vCPU)이므로 CPU 2개를 풀로 사용하도록 부하를 주어본다.
- top 명령어로 확인한 CPU 자원 사용률은 50% 50% 로 100%가 되는걸 볼 수 있고,
- AWS 모니터링 툴에서도 100% 까지 치솟는 걸 볼 수 있다.
⇒ 예상 : 그럼 AutoScaling이 제대로 동작했는지 확인해보자.
2-3. Auto Scaling 확인
Auto Scaling 그룹 - 인스턴스 관리
- C존에 하나가 더 올라간 걸 볼 수 있다.
- [활동]
Target Group - 등록된 대상
2-4. 축소 확인
- Ctrl + c 로 부하를 끄고 축소되는지 확인해보자.
- 먼저 CPU 자원 사용률은 80% 밑으로 떨어졌다.
- 그러나 바로 인스턴스가 Terminating 되지는 않는다.
- 인스턴스를 끄는 동작은 매우 민감한 문제이기 때문에 “유예 기간”이 있다.
- 빠른 시간 내에 끄고 싶다면 Auto Scaling → [편집] → [상태 확인 유예 기간]을 줄여주자.
축소 확인
2-5. 그룹의 인스턴스 종료
- 일시적으로 그룹의 인스턴스들을 종료하려면 원하는 용량과 최소 용량을 0으로 지정
- 인스턴스를 영구적으로 종료하려면 자동 확장 그룹을 삭제해야 함
참고
- 실무에서는 실제로 계속 코드를 수정하여 변경사항을 서버에 올릴 것이다.
- Auto Scaling Group(ASG)는 ‘기존에 지정한 AMI 기반’으로만 인스턴스를 만들기 때문에, 최신 코드나 설정이 반영되지 않는다.
- ⇒ CI/CD + 시작 템플릿 갱신 방식을 이용하야 한다.
- (최후에는 Terraform으로 시작템플릿을 갱신하는 방법까지 적용해보자)
반응형