[AWS] EC2 Autoscaling

김아름·2022년 2월 23일
0

AWS

목록 보기
8/25

스케일링

  • 인스턴스 혹은 컴퓨팅 파워를 늘리는 것
  • 스케일링의 방법에는 2가지가 있음

    1) Vertical Scale (Scale Up == 수직적 스케일링)

    • cpu가 하나이고 memory 1기가까지 인스턴스가 있다
    • 성능을 16배 높은 인스턴스를 사용하고싶어서 16배 큰 인스턴스를 사용하는 것, 인스턴스의 성능을 올리는 것을 스케일 업이라고 함
    • 성능과 비용이 비례하지 않음
    • 1,000,000배 높은 성능을 사용하고 싶다면 비용은 어마어마 할것이고, 물리적으로 가능한지도 고민 해봐야 한다.

    2) Horizontal Scale(Scale Out)

    • 규모를 늘리는 것(성능X)
    • 성능을 16배 올리고 싶을때 인스턴스를 16개 가져다가 쓰는것
    • 성능과 비용이 비례함
    • 100만배 높은 사용하고 싶다면 가능은 하다.
    • 클라우드 환경에서는 Horizontal Scale(Scale Out)을 항상 염두해야함
    • 왜냐면 클라우드 환경에서는 비싼걸 쓰겠다가 아니라 저렴한걸 많이 사용하고 줄였다 늘였다 해야겠다 라는것을 생각해야 함
    • 엄청나게 큰 인스턴스를 사용하면 쪼갤 수X(탄력성X)
    • 많은 수의 인스턴스를 사용하면 수요에 따라 인스턴스를 덜쓸수도, 더 쓸수도 있다 (유연성O)



AWS Auto Scaling

  • Horizontal Scale(Scale Out)을 위해 나온 서비스
  • 애플리케이션을 모니터링 하고 용량을 자동으로 조정
  • 최대한 저렴한 비용으로 안정적이고 예측 가능한 성능을 유지 함
  • 몇분만에 손쉽게 여러 서비스 전체에서 여러 리소스에 대해 애플리케이션 규모 조정을 설정 할 수 있음
  • AWS 오토스케일링 서비스는 위 그림과 같이 많지만 EC2 Auto Scaling을 공부해보자

오토스케일링의 목표

1. 정확한 수의 EC2 인스턴스를 보유하도록 보장

  • 만약 애플리케이션을 실행하기 위해 인스턴스가 3개가 필요하다면, 3대 이상의 인스턴스가 항상 떠있을 수 있게 보장
    --> 그룹의 최소 인스턴스 숫자와 최대 인스턴스 숫자
    : 최소 숫자 이하로 내려가지 않도록 인스턴스 숫자를 유지(인스턴스 추가)
    : 최대 숫자 이상 늘어자니 않도록 인스턴스 숫자 유지(인스턴스 삭제)
  • 다양한 스케일링 정책 적용 가능
    ex) CPU의 부하에 따라 인스턴스 크기 늘리기

2. 가용영역에 인스턴스가 골고루 분산될 수 있도록 인스턴스를 분배


오토스케일링의 구성

1. 시작구성(launch configurations) / 시작 템플릿(launch templete): 무엇을 실행시킬 것인가?

  • EC2의 타입, 사이즈
  • AMI
  • 보안그룹, Key, IAM
  • 유저 데이터
    --> 우리가 올리고 싶은 EC2의 기본적인 정보들을 담은 것
    --> 만약 오토스케일링으로 EC2를 늘리고 싶다면, 어떤 인스턴스를 늘릴건지에 대한 것을 시작구성/시작 템플릿에서 찾는다.

2. 모니터링: 언제 실행시킬 것인가? + 상태확인

  • ex) CPU점유율이 일정 %를 넘었을 때 추가로 실행 or 2개 이상이 필요한 스택에서 EC2 하나가 죽었을 때
  • CloudWatch이나 ELB(부하분산)와 연계
  • 어떤 조건에 실행시킬 것이냐에 대한 것

3. 설정: 얼마나 어떻게 실행시킬 것인가?

  • 최대 / 최소 / 원하는 인스턴스 숫자
  • ELB와 연동 등

오토스케일링이 어떻게 동작하는지

  • EC2인스턴스 클러스터 가 있고 8개의 인스턴스가 필요하다고 가정해보자
  • 하드웨어가 터졌다던지 소프트웨어 문제던 어쨌든 EC2 한개가 죽었다.
  • 그럼 이것을 오토스케일링이 감지를 한다
  • 시작구성에 맞는 인스턴스를 생성을 해서 클러스터에 넣어준다.
profile
쿄쿄쿄

0개의 댓글