infra
article thumbnail
반응형

오토 스케일링(Auto Scaling) 개요

Auto Scaling은 애플리케이션을 모니터링 하면서 서비스하기 위한 대상 용량(인스턴스 등)을 자동으로 리소스를 조정하는 기능을 말한다.

사용자의 유입 상황에 따라서 리소스를 증가하거나 혹은 축소 할 일이 생기는데 서비스 사용자의 증가나 특정한 이벤트(연말, 명절, 이벤트 시기 등) 가 진행되는 유동적인 상황에서 이 행위를 수동으로 일일이 예측하고 조정하긴 어려운 일이다.

 

이에, 사용자의 조건에 따라서 리소스를 조정하게 도와주는 기능이 있는데 이를 AWS에서는 Auto Scaling 이라는 이해하기 쉬운 명칭으로 기능을 제공중이다.

 


순서

본 글에서 오토 스케일링(Auto Scaling)을 위한 순서는 다음과 같이 진행하기로 한다.

만약 이 과정중에서 일부가 진행되어 있다고 하면 바로 오토 스케일링으로 진행이 가능하다.

 

진행 순서


이미지 생성

이미지 생성은 오토스케일링 대상이 될 인스턴스를 AMI 형태로 만드는 작업이다.

이미 EC2는 만들어져있다고 가정하면 EC2 대시보드에서 대상 EC2를 우클릭하여 "이미지 및 템플릿" -> "이미지 생성"을 따라 진행할 수 있다.

이미지 생성

 

이미지를 생성하면 이미지 이름과 설명을 작성할 수 있다.

여기서 관리자(또는 사용자)가 알기 쉬운 명칭으로 작성해 놓아야 추후에 참고하기 쉽다.

 

이미지가 완성되면 EC2 화면 좌측 AMI에서 생성된 내용을 볼 수 있다.

생성된 이미지(AMI)

 

 

단, 처음 생성하고나서 이미지를 바로 사용할 수는 없으므로 상태(Status)에서 대기 중(Pending) 상태인지 사용 가능한 상태인지 확인이 필요하다

 


시작 템플릿 생성

이미지 생성이 완료되었으면 시작 템플릿을 생성해야 한다.

명칭 그대로 Auto scaling에 사용되는 인스턴스가 시작되는 환경을 자동으로 진행하기 위해 일종의 틀을 만드는 작업이라고 할 수 있다.

 

틀을 만드는 작업이므로 이 틀의 명칭과 목적등을 지정 해 주어야 한다.

인스턴스가 새로 시작된다고 해서 덩그러니 생성만되면 네트워크 환경이나 설정등이 없어 제 역할을 할 수 없으므로 시작 템플릿에서 인스턴스가 동작하기 위한 일련의 과정을 정의 해준다고 생각하면 된다.

 

템플릿 이름과 버전 등을 작성한 후 하단의 "애플리케이션 및 OS 이미지"를 들어가면 사용하고자 하는 AMI를 지정할 수 있다.

이 과정에서 앞에서 만들어 놓았던 AMI를 선택할 수 있는데 이미지와 같이 "내 AMI'를 선택하면 리스트에서 확인 가능하다.

시작 템플릿 기본 정보

 

AMI를 지정하였으면 다음으로 실행시 사용될 인스턴스 유형과 키 페어, 네트워크 설정을 지정해야 한다.

사전에 정의되어 있지 않더라도 우측에 "새 키 페어 생성"이나 "새 서브넷 생성"등을 통해 신규로 생성도 가능하다.

시작템플릿 환경 설정

 

별다른 이슈 없이 시작 템플릿 생성이 완료되면 목록에서 확인이 가능하다.

이제 오토스케일링을 위한 사전 준비 작업이 거의 끝났다고 봐도 무방하다.

시작템플릿 목록


로드 밸런서(Load Balancer) 생성

로드밸런서는 두개 이상의 가용영역에 존재하는 여러 대상에 인입되는 트래픽을 자동으로 분산하는 역할을 한다.

가용영역과 여러 대상이 어렵게 다가올 수 있지만 쉽게 이야기하면, 웹 서비스를 위해 하나의 서버만 존재한다면 많은 사용자의 요청을 하나의 웹 서버가 처리해야 하지만 복수개의 서버를 구성해놓고 로드밸런서를 통해 처리하게 되면 각 서버에서 분산하여 처리하므로 부하를 낮출 수 있다.

 

이는 서비스 전체적인 흐름에 대해 방해하지 않고 리소스를 이용해 서비스를 제공하므로 관리자와 사용자 입장에서 모두 이점을 주는 기능이다.

 

로드 밸런서는 메뉴 왼쪽 하단에서 위치하고 있다. "로드 밸런서 생성" 버튼을 통해 생성을 진행한다.

로드밸런서 생성 화면

 

생성 버튼을 누르면 3가지 타입의 로드밸런서를 확인할 수 있다. 로드밸런서가 단순히 웹을 위한 기능만 하지 않으므로 각 역할에 맞게 선택해 활용할 수 있다.

 

이번 케이스에서는 웹 서비스에 대해 오토스케일링 기능을 활용하기 위함이므로 "Application Load Balancer"를 선택한다

로드밸런서 종류

 

ALB(Application Load Balancer)를 선택하면 기본 설정과 네트워크 설정이 필요하다.

여기서 크게 Basic configuration, Network Mapping, Listeners and routing을 설정할 수 있는데 각각 설명은 다음과 같다.

 

[ Basic configuration ]

Load Balancer Name

  • 생성할 로드밸런서의 이름을 지정한다
  • 여기서는 test_loadbalancer를 이름으로 지정하였다.

Scheme

  • Scheme(스킴)은 쉽게 표현하면 로드밸런서의 방향, 구성을 뜻한다.
  • Internet-facing은 AWS에서 만든 서비스가 외부로 서비스될때 사용한다. 즉 인터넷을 통해 많은 사람들이 이용하는 서비스라고 하면 이 설정을 선택한다
  • Internal은 AWS 내부에서 사용하는 Private IP를 사용하여 요청하는 경우 사용한다. 즉, 내부-내부간의 통신에 로드밸런서가 필요한 경우 이 설정을 사용한다.

 

[ Network mapping, Security Groups ]

Netowrk mapping과 Security Group은 각각 VPC 설정과 Security Group을 선택할 수 있는 부분이다.

사용자가 목적에 맞게 생성 또는 구성한 VPC와 Security Group이 있다면 여기에서 서비스 목적에 맞게 설정한다.

Network mapping, Security groups

 

[ Listeners and routing ]

이 부분은 외부에서 로드밸런서를 호출할때 허용하는 포트 부분이다.

"HTTP: 80"과 같이 서비스를 위해 사용하는 포트를 이 부분에서 지정한다.

Listeners and routing

 

여기까지 설정이 완료되면 하단에 Summary를 통해 설정한 값을 확인하고 Create load balancer로 생성한다.


오토 스케일링(Auto Scaling) 생성

오토 스케일링은 메뉴 가장 하단에 위치해 있다

별다른 과정 없이 그룹 생성을 통해 진입 해 보자

 

 

처음 생성하면 오토 스케일링 명칭을 지정하고 시작하고자 하는 템플릿을 지정해야 한다.

우리는 미리 시작 템플릿을 지정하였으므로 이전에 생성한 대상을 목록에서 불러오면 된다.

오토 스케일링 생성 초기 화면

 

 

오토 스케일링 명칭과 시작 템플릿을 지정하면 다음으로 네트워크 설정을 진행한다.

이 과정에서도 서비스 목적에 맞는 VPC를 지정하면 된다.

 

주의헤야 하는 점 중 하나가 서브넷 지정인데, 인스턴스가 동작할 서브넷 범위를 선택해줘야 한다.

만약 서울이라고 해도 ap-northeat-2a, 2c만 지정할 수도있고, 전체를 지정할 수도 있으므로 환경에 맞게 고민하고 설정한다 (중복 선택 가능)

 

지정 후 다음으로 이동 하였을때 아래와 같은 오류가 발생한다면 시작템플릿에서 설정한 VPC와 현재 지정한 네트워크 환경이 알맞게 구성되어있는지 확인해야 한다.

 

1단계에서 잘못된 시작 템플릿 지정: Security group ********* and subnet ******* belong to different networks.

 

이는 선택한 보안 그룹과 서브넷이 서로 다른 네트워크 환경에 위치하여 올바르게 선택하지 않았을때 발생하는 메시지이다

만약 시작템플릿에서 사용한 Security Group등의 설정이 AWS에서 지정한 Default 값이 아닌 Custom VPC 등을 생성(사용자가 생성한 VPC등) 하여 구성하였다면 여기서도 그에 맞는 환경으로 지정해주어야 한다.

목록에서 사용자가 생성한 Custom vpc 선택

 

설정 후 다음 단계로 넘어가면 "고급 옵션 구성"에서 로드밸런싱을 선택사항으로 지정할 수 있다.

만약 로드밸런서가 없다면 "없음"으로 선택할 수 있고, 기존에 로드밸런서가 생성되어있거나 생성 예정이더라도 이 페이지에서 지정할 수 있다.

 

고급 옵션 구성

 

상태 확인은 오토 스케일링을 위한 인스턴스에 대해 상태확인을 진행하기 전 대기 시간으로 생각하면 된다.

처음 인스턴스가 실행되고나서 바로 모니터링 후 오토스케일링을 진행하지 않고 유예 기간동안 기다린 이후에 상태를 확인한다.

상태 확인

 

다음 단계가 오토스케일링의 핵심 목적이자 기능인 그룹 크기 및 조정 정책 부분이다.

각 용량에 대한 설명은 다음과 같이 설명된다.

  • 원하는 용량: 오토 스케일링에서 시작 후 유지되는 인스턴스의 수
  • 최소 용량: 인스턴스 수가 줄어들더라도 최소한 유지되는 인스턴스의 수
  • 최대 용량: 오토스케일링 조건에 의해 인스턴스가 증가하더라도 증가하는 제한 최대치

 

다음 단계에서 조정 정책으로 오토스케일링이 시작되는 조건을 지정할 수 있다.

즉 여기서 지정하는 값에 따라 대용량 요청, 성능상의 문제 등의 조건에 따라서 인스턴스가 증가하고 줄어들게 된다.

조정 정책 화면

 

항목 중 지표 유형에서 오토스케일링의 조건을 상세하게 지정할 수 있다.

오토스케일링 지표 유형

 

다음 단계에서 알림 설정을 추가할 수 있다.

이 과정에서 SNS 주제로 알림을 전송하면, 어떠한 조건에 따라 인스턴스가 증가 혹은 축소하였는지 확인할 수 있다.

알림 추가

 

이후 태그 설정, 설정 환경 검토를 통해 단계를 진행하면 오토스케일링 구성을 완료할 수 있다.

지표 유형에서 설정한 값을 초과하거나, 값보다 미만이 되는 경우에 따라서 인스턴스는 증가 혹은 감소하게 된다.

 

이 설정으로 관리자는 개요에서 고민하던 인스턴스 증감에 대한 자동화 고민을 일부 해소할 수 있게 된다.

하지만 적절한 인스턴스 수 조정이 진행되지 않으면 최대치의 인스턴스가 추가되었다고 해도 서비스가 정상적으로 동작하지 않을 수 있으므로 서비스 상태에 대한 확인은 계속해서 필요하다.

반응형

'Tech > Cloud' 카테고리의 다른 글

AWS CLI 환경 구성 (aws configure 오류 해결)  (0) 2022.01.02
AWS Lambda timed out after 3.00 seconds  (0) 2022.01.02
profile

infra

@infra

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!