[AWS] EC2 AutoScaling

hugingstar·2026년 3월 31일

AWS

목록 보기
11/18
post-thumbnail
  • 설정한 조건(특정 자원 사용량 : CPU, Memory)에 따라 EC2 Instance의 수를 시작 템플릿을 기반으로 Scaleout(In)

관리대장 작성

  • VPC
    • yslee-VPC - 10.17.0.0/16
  • Subnet
    • PUB-2A (10.17.1.0/24)
    • PUB-2C (10.17.11.0/24)
  • IGW
    • IGW-00
  • Routing table
    • RT-PUB
      • Routing : 0.0.0.0/0 => IGW-00
      • Subnet : PUB-2A, PUB-2C (명시적에 추가)
  • Security group
    • ALB-SG (22, 80, 443, ICMP)
    • WEB-SG (22, 80, 443, ICMP)

(1) VPC

  • VPC를 생성한다.

(2) Subnet

  • PUB-2A로 서브넷을 설정하다.

  • PUB-2C 서브넷을 설정한다.

(3) IGW

  • 인터넷게이트웨이를 설정

  • VPC에 연결한다.

(4) Routing table

  • RT-PUB을 생성한다.

  • 라우팅 테이블을 추가한다.

  • 서브넷을 연결한다.

(5) Security group

  • ALB-SG 보안그룹을 생성한다.

  • WEB-SG 보안그룹을 생성한다.

(6) EC2 Instance 시작 템플릿 생성

  • 시작 템플릿을 사용해서 만들어준다.

  • 이름: Web-Template

  • 이미지: Amazon Linux 2023 AMI

  • 유형: t2.micro

  • 키페어: xxx-01

  • 네트워크: PUB-2A

  • 보안그룹: WEB-SG

  • 퍼블릭 IP: 활성화

  • 고급 세부 정보 > 사용자 데이터

#!/bin/bash
sudo dnf update -y
sudo dnf install -y nginx stress
echo 'location / { return 200 "Served by: $hostname\n"; add_header Content-Type text/plain; }' | sudo tee /etc/nginx/default.d/location.conf
sudo systemctl restart nginx

  • 기존 보안 그룹에서 WEB-SG를 선택한다.
  • 서브넷은 PUB-2A를 선택한다.
  • 가용영역은 2a 부분인 az1을 선택한다.

  • 아래로 내려서 자동화하기 위해 고급 세부 정보 > 사용자 데이터를 입력한다.

  • (주의) 고급 네트워크 구성에서 퍼블릭 IP 자동 할당 해야 스트레스 상태를 확인할 수 있다.

(7) Load balancer

  • Application load balancer를 사용한다.

  • 네트워크 매핑에서 VPC를 적용한 후, 사용 영역 및 서브넷을 설정한다.

  • 보안 그룹은 ALB 적용할려고 만들어 놓은 ALB-SG를 사용한다.

  • 리스너 및 라우팅 : 기본 작업

  • 대상 그룹 생성을 해준다.
  • 중간에 설정하는 과정이 있는데, 아직 띄운 인스턴스는 없어서 넘어가준다.

  • 대상 그룹에 ALB-TG가 생긴 것을 볼 수 있다.

(8) Auto scaling

  • 왼쪽 아래 구석지에 있다.

  • 오토 스케일링 이름을 작성
  • 시작 템플릿 Web-Template를 선택해준다.

  • 다음으로 넘어가면, 네트워크도 설정할 수 있다.
  • VPC 선택하고, 가용 영역은 PUB-2A, PUB-2C 둘 다 선택하였다.

  • 다음으로 넘어가면 다른 서비스와 통합에서 로드 밸런서와 묶을 수 있다.
  • 기존 로드 밸런서에 연결을 선택한다.
  • 아래에 보면 ALB-TG를 선택하였다.(위에서 만든 것)

  • 다음으로 넘어가면, 그룹 크기 및 크기 조정 구성을 설정할 수 있다.
  • 기본으로 놓고 넘어갔다. (오토스케일링 생성 완료)

  • 오토 스케일링을 적용하였다.

  • 인스턴스 관리 부분 가면 시작되었을 때 인스턴스 목록을 볼 수 있다.
  • 모니터링도 볼 수 있다.

  • EC2>인스턴스에 들어가보면 하나 자동으로 만들어져 있을 것이다.

  • ASG-Web 오토스케일링에서도 인스턴스 떠 있는 것을 확인한다.

  • ASG-Web에서 Automatic scaling을 부분에 들어가서 "동적 크기 조정 정책 생성"을 누른다.

  • 대상 추적 크기 조정을 선택한다.
  • 이름 및 옵션을 설정한다.

  • 동적 크기 조정이 생성되었다.

  • (상황) 시작 템플릿 부분에서 퍼블릭IP를 설정하지 않으면 외부에서 들어갈 수 없다.
  • 시작 템플릿을 만들면 Latest가 생겨 있을 것이다.

  • 기존꺼를 종료 시켜서 Terminating 되었고, 새로운 것이 만들어져서 InService가 되었다.

(9) Stress test

  • 퍼블릭IP를 확인한다.

  • Private key 사용해서 접근한다. (만약 여기서 안되면 시작 템플릿 수정해야한다.)

  • Latest를 설정해놨기 때문에 시작 템플릿의 버전이 바꼈으면 자동 반영된다.

  • 인스턴스 내부로 들어가졌다.

  • 스트레스 테스트를 한다.
# 스트레스
sudo stress --cpu 2 --timeout 300

# 사용량 순서대로 확인
top

  • 인스턴스 하나 떠 있는거 상태를 확인해본다.

  • 부하가 올라가고 있다.

  • CPU 사용량 99%되도록 만들어보니, 인스턴스가 늘어났다.

  • 로드 밸런서 부분에 "리소스 맵"을 확인해보면, 적용된 정책, 대상 그룹, 대상에 대한 정보를 확인할 수 있다.

  • 로드밸런서에 있는 DNS를 주소창에 입력해서 어떤 값이 나오는지 확인한다.

  • curl로도 값이 나오는지 확인해본다.
curl 10.17.11.32

  • 부하가 줄어들면 자동으로 인스턴스가 종료된다.

  • 종료 순서 : 인스턴스 삭제 > AutoScaling 삭제(동적 정책 삭제 후 삭제, 인스턴스관리에서 분리) > 로드밸런서 삭제> 대상그룹 삭제 > ...

0개의 댓글