Post

[Cloud] Auto Scale Group(ASG)의 이해

EC2 인스턴스 Auto Scaling

  • **학습 목표
  • Scale In과 Scale Out이 무엇인지 정리합니다.
  • 확장성을 위한 Amazon EC2 인스턴스 Auto Scaling에 대해 확인합니다.
  • Amazon EC2 인스턴스 Auto Scaling 구성 과정을 확인합니다.**

고가용성 및 확장성

  • 고가용성(High Availability):
    • 고가용성은 하드웨어, 소프트웨어, 네트워크와 같은 장애가 발생해도 중단 없는 서비스를 제공하여 신뢰할 수 있는 서비스 운영 환경을 제공하는 것을 의미
    • 고가용성 서비스 지원을 위해 보통 중복 구성, 장애 복구 계획, 자동 장애 감지 및 복구 기능을 적용
    • AWS에서는 리전별로 여러 개의 가용 영역에 인스턴스를 배치하거나 장애 감지 및 복구를 지원하는 서비스를 추가로 구성하여 고가용성을 지원함.
  • 확장성(Scalability):
    • 확장성은 시스템이 사용자의 요구부하의 증가에 따라 자원을 유연하게 증가시키거나 감소시킬 수 있는 능력으로,
    • 시스템이 변화하는 수요에 맞추어 성능을 유지하면서 효율적으로 작동할 수 있도록 합니다.
    • 두 가지 방식의 확장성
      • 수직 스케일링(Vertical Scaling)은 Scale UP/Scale Down으로 표현하며, 기존 서버의 리소스 크기를 확장 또는 축소시키는 것
      • 수평 스케일링(Horizontal Scaling)은 Scake Out/Scale In으로 표현하며, 서버의 수를 늘리거나 줄이는 것

      Untitled

    • 클라우드 환경에서는 자동화된 자원 할당 및 해제를 통해 확장성을 빠르게 조정할 수 있으며, 비용 효율성과 성능 최적화에 기여함
    • AWS에서는 Auto Scale 서비스를 통해 인스턴
  • 고가용성과 확장성은 서로 다른 목표를 가지고 있지만, 함께 사용될 때 시스템의 신뢰성과 효율성을 크게 향상

  • Scaling(조정)
    • Scaling이 중요한 이유

      image.png

AWS EC2 Auto Scaling 이란?

  • https://aws.amazon.com/ko/autoscaling/
  • AWS Auto Scaling애플리케이션을 모니터링하고 용량을 자동으로 조정하여, 최대한 저렴한 비용으로 안정적이고 예측 가능한 성능을 유지합니다.

    image.png

    • 애플리케이션 가용성을 유지하도록 지원
    • 정의한 조건에 따라 EC2 인스턴스를 자동으로 추가하거나 제거할 수 있습니다.
    • 손상된 EC2 인스턴스 및 비정상 애플리케이션을 감지하고 사용자의 개입 없이 인스턴스를 교체합니다.
    • 수동, 예약, 동적 또는 온디맨드, 예측 등 다양한 조정 옵션 제공
  • AWS Auto Scaling을 사용하면 몇 분 만에 손쉽게 여러 서비스 전체에서 여러 리소스에 대해 애플리케이션 규모 조정을 설정할 수 있습니다.
  • 이 서비스는 간단하면서도 강력한 사용자 인터페이스를 제공하므로 이를 사용하여 Amazon EC2 인스턴스스팟 플릿Amazon ECS 작업, Amazon DynamoDB 테이블 및 인덱스Amazon Aurora 복제본 등 리소스에 대한 규모 조정 계획을 수립할 수 있습니다.
  • AWS Auto Scaling을 사용하면 성능과 비용을 최적화하거나 둘 사이의 적절한 균형을 유지하기 위한 권장 사항을 활용해 간단하게 규모를 조정할 수 있습니다.
    • 소매업체 Amazon.com의 주간 트래픽

      image.png

    • 11월 Amazon.com의 트래픽

      image.png

      • Auto Scaling은 동적 온디맨드 scaling에도 유용합니다. Amazon.com에서 11월마다 시기적 요인으로 인해 트래픽 피크가 발생합니다(미국 소매업체의 주요 매출이 발생하는 11월 말의 날짜인 블랙 프라이데이와 사이버 먼데이). Amazon이 가장 높은 사용량을 수용할 수 있도록 고정 용량을 프로비저닝할 경우 리소스의 76%가 연중 대부분 유휴 상태로 남아 있게 됩니다. 용량 조정은 이처럼 유동적인 서비스 수요를 지원하는 데 필요합니다. 조정 기능을 활용하지 않으면 포화 상태가 발생하여 서버가 작동하지 않을 수 있으며, 기업이 고객의 신뢰를 잃게 됩니다.

Amazon EC2 Auto Scaling이란?

  • Amazon EC2 오토스케일링(Auto Scaling)은 AWS에서 EC2 인스턴스의 수를 자동으로 쉽게 조절할 수 있도록 구현해 놓은 자동화 서비스
  • Amazon EC2 Auto Scaling을 사용하면 애플리케이션의 로드를 처리할 수 있는 정확한 수의 Amazon EC2 인스턴스를 유지할 수 있습니다.
  • Auto Scaling Group

Auto Scaling 구성 요소

구성 템플릿(무엇을?)

Untitled

  • 시작 구성 템플릿(인스턴스)
    • AMI
    • 시작 구성 템플릿
      • EC2 인스턴스에 대한 구성 템플릿으로 사용
      • 인스턴스의 AMI ID, 인스턴스 타입, 키 페어, 보안 그룹, 블록 디바이스 매핑 등의 정보를 지정

오토스케일 그룹(어디에서?)

Untitled

  • EC2 인스턴스는 그룹에 정리되어 조정 및 관리 목적의 논리적 단위로 처리
  • 그룹을 생성할 때 EC2 인스턴스의 최소 및 최대 인스턴스 수와 원하는 인스턴스 수를 지정

조정 옵션(언제?)

Untitled

  • Auto Scaling 그룹을 조정하는 여러 가지 방법을 제공
  • 예: CPU 사용량이 70%이상이면 Scale Out

실습 단계:

  • AMI 생성 → 시작 템플릿(Launch Template)생성 → Auto Scale 구성(ALB, ALB Target Group)
  • 아키텍처

    Untitled

Pre Setting

1. VPC 만들기

  • 이름: lab-vpc(10.0.0.0/16)

    image.png

  • Subnet

    • public 2 : 10.0.0.0/24, 10.0.1.0/24
    • private 2 : 10.0.2.0/24, 10.0.3.0/24

2. 보안 그룹 만들기

  • TEST-WEB
    • Inbound : 80 ← anywhere
  • ALB-SG
    • VPC : lab-vpc
    • 인바운드 규칙 : 80,443 ← anywhere
  • WEB-SG
    • VPC : lab-vpc
    • 인바운드 규칙: 80 ← ALB-SG

3. 웹 서버 만들기

  • test-web
    • AMI : Amazon Linux 2023 AMI
    • 인스턴스 유형: t2.micro
    • 키페어 : lab-key
    • 네트워크: Lab VPC
      • 서브넷: lab-subnet-public1-ap-northeast-2a ← 웹서버 연결 TEST
      • 퍼블릭 IP: 활성화
      • 보안그룹 : TEST-WEB
    • 스토리지: 8G
    • 사용자 데이터

      1
      2
      3
      4
      5
      
        #!/bin/bash 
        yum install httpd -y
        systemctl start httpd
        systemctl enable httpd
        echo "<h1>WEB</h1>" > /var/www/html/index.html
      

1. AMI 생성하기

  • Web EC2 AMI 생성
    • web1 EC2 선택 → [작업] → [이미지 및 템플릿] - 이미지 생성
    • 이미지 이름: web-ami
    • 이미지 설명: web-ami
    • 재 부팅 안 함: 활성
    • 인스턴스 볼륨 : 8G
    • [이미지 생성]

      image.png

2. 시작 템플릿 만들기

  • Web EC2 시작 템플릿 생성 : EC2 > [시작 템플릿] - [시작 템플릿 시작]
    • 시작 템플릿 이름 및 설명
      • 시작 템플릿 이름: Web-ASG-LT
      • 템플릿 설명: Web-ASG-LT
      • Auto Scaling 지침: 체크
    • 애플리케이션 및 OS 이미지
      • AMI 선택: [내 AMI] - web-ami 선택
    • 인스턴스 유형 : t2.micro
    • 키 페어 이름 : lab-key
    • 서브넷: 시작 템플릿에 포함하지 않음 ← Auto Scale에서 구성할 것임
    • 보안그룹: 기존 보안 그룹 선택 : WEB-SG
    • [시작템플릿 만들기] - [시작 템플릿 보기]

      image.png

3. AutoScaling Group 만들기

  • Web AutoScaling Group 생성 : EC2 > Auto Scaling 그룹 > [Auto Scaling 그룹 생성]
    • 1단계 시작 템플릿 선택
      • AutoScaling 그룹 이름: Web-ASG
      • 시작 템플릿: Web-ASG-LT
      • 다음

        image.png

    • 인스턴스 시작 옵션 선택
      • VPC : lab-vpc
      • 가용 영역 및 서브넷 : VPC에서 Auto Scaling 그룹이 사용할 수 있는 가용 영역과 서브넷
        • lab-ap2-subnet-private1-ap-northeast-2a
        • lab-ap2-subnet-private2-ap-northeast-2c
      • 다음

        image.png

    • 고급 옵션 구성
      • 로드 밸런싱: 새 로드 밸런서에 연결
        • Application Load Balancer
        • name: Web-ALB
        • Internet-facing
        • publinc subnet - 2a, 2c
        • 리스너 및 라우팅
          • 대상그룹 생성 로드 밸런서 대상 그룹에서 선택: web-alb-tg
      • 다음

        image.png

    • 그룹 크기 및 크기 조정 구성
      • 그룹 크기 - 원하는 용량: 2
      • 크기 조정
        • 원하는 최소 용량: 2
        • 원하는 최대 용량: 4
      • Auto Scaling - 대상 추적 크기 조정 정책
        • 지표 유형 : 평균 CPU 사용율
        • 대상 값 : 30 (현업에서는 보통 CPU 사용률이 60-70%이상일 때 scale out)
      • 인스턴스 유지 관리 정책 : 정책 없음
      • 다음

        image.png

    • 알림 추가 - 선택 사항
    • 태그 추가
    • [Auto Scaling 그룹 생성]

      image.png

  • ALB 보안그 룹 수정
    • WEB-SG —> ALB-SG

4. 리소스 삭제

  • Auto Scale Group 삭제
  • 로드밸런서 삭제
  • Target Group
  • 인스턴스 삭제
  • VPC 삭제
    • NAT GW
    • VPC삭제
  • 시작 템플릿, AMI 삭제
  • EIP
  • EBS 스냅샷

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.