Cloud/AWS

AWS 오토 스케일링(Autoscaling) 사용하기

Ofglen 2023. 4. 28. 15:20

'오토 스케일링'은 왜 쓸까?

클라이언트 요청이 너무 많으면 서버를 확장해야 한다.

온프레미스 환경에서는 고객의 요청을 예상하고 똑같은 서버를 스케일 업 또는 스케일 아웃 해야 한다.

그런데 일년에 1번만 부하가 걸린다면 기업은 서버 투자를 안 한다.

그런데 퍼블릭 환경에서는 시스템에 사양을 모니터링(CPU, 요청수)을 하여 자동으로 서버를 늘려준다.

그러면 사용자는 부하 없이 원활하게 서비스를 제공받을 수 있다.

 

따라서 오토 스케일링은 확장성을 위해 사용한다.

  • 스케일업: 단일 시스템 HW 사양 높이는 것
  • 스케일 아웃: 서버수를 늘리는 것

 

Amazon Auto Scaling

  • Scale Out: 수요가 많으면 자동으로 인스턴스 수 증가
  • Scale In:  수요가 없으면 자동으로 인스턴스 수 감소

 

 

 

 

오토 스케일링은 이미지를 이용한 템플릿을 사용한다.

자동으로 인스턴스를 생성하기 위한 틀(프레임)이 필요하다.

 

템플릿을 만든 후 타겟 그룹을 오토스케일링 형태의 그룹으로 만든다.

 그 후 로드 밸런서와 연결한다.

 

 

시작 구성의 사용 중지 권장
Amazon EC2 Auto Scaling은 시작 구성에 대한 새로운 EC2 기능 지원을 더 이상 추가하지 않으며 2022년 12월 31일 이후에는 새로운 EC2 인스턴스 유형에 대한 지원을 중단합니다. 시작 구성을 사용하는 고객은 시작 템플릿으로 마이그레이션하는 것이 좋습니다.

따라서 오토 스케일링 그룹을 만들어서 사용한다.

 

 

 

1. 템플릿 생성하기

 

 

 

오토 스케일링을 생성했을 때 오토 스케일링이 동작하지 않는 것을 확인하는 Auto Scaling 지침을 AWS는 제공한다.

https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html

 

Create a launch template for an Auto Scaling group - Amazon EC2 Auto Scaling

Launch template parameters are not fully validated when you create the launch template. If you specify incorrect values for parameters, or if you do not use supported parameter combinations, no instances can launch using this launch template. Be sure to sp

docs.aws.amazon.com

 

인터페이스, 스토리지 구성 등 자세한 문서를 제공하는데

이미지를 다운했는데도 불구하고 오토 스케일링이 안 되는 경우가 있다.

인스턴스 > 이미지 > 스냅샷 테스트 하는 것이 가장 좋은 방법이다. 이 방법으로 해결하지 못한다면 aws에서 제공하는 지침을 통해 참고하여 진행한다.

ex. 볼륨 추가, db 연결 추가, db cluster 연결 시 템플릿이 변경되어야 할 때 인스턴스 생성에 대한 정보가 필요하다.

 

 

 

 

 

 

 

 

 

 

2. 오토 스케일링 그룹 생성

 

 

방금 생성한 시작 템플릿을 설정한다.

시작 템플릿, 키페어, 인스턴스 유형, 보안 그룹을 확인한 후 다음을 누른다.

 

네트워크에서 VPC와 스케일링할 가용영역을 선택할 수 있다. (로드밸런서와 연결하기 위해 로드밸런서 위치와 일치하도록 서브넷을 선택하고 설정한다.)

 

 

 

az-d 에도 로드 밸런서를 새로 생성해 보겠다.

 

]

 

 

 

 

리스너와 타겟을 새로 생성한다.

 

 

AWS 서비스 내에서 서비스를 더욱 원활하게 해주는 서비스다.

 

 

테스트를 용이하게 진행하기 위해 상태 확인 유예 기간을 적절하게 수정한다.

 

 

데이터를 통해 모니터링하기 위해 체크했다.

다음

 

 

 

스케일 인을 활성화 체크할 수 있다.

 

 

기존에 작업한 서비스가 축소되면 서비스가 원활하게 진행되지 않을 수 있기 때문에 인스턴스 축소 보호 옵션도 제공한다.

 

 

알림도 설정할 수 있다.

 

최소 개수인 인스턴스 2개가 생성되었다.

Healthy check 하고 있다.

 

 

 

 

 

 

새로 생긴 인스턴스 public ip를 통해 정상 작동하는지 확인한다.

 

cmd에 nslookup [DNS name]를 확인한다.

 

 

만약 이 과정에서 에러가 난다면 

오토스케일링 세부 정보로 가서 원하는 용량이 2인지 확인하고

 

고급 구성에서 인스턴스 축소 보호를 설정한다.

혼자 테스트하다 보니 요청이 많이 없어서 처음에 인스턴스를 2개로 설정했어도 축소되어 인스턴스가 없어지는 이슈가 있었다.

 

 

 

다음과 같이 에러가 나는데

오토스케일링 그룹은 템플릿을 통해 인스턴스 연결이 정상적으로 되는 것을 확인했다.

따라서 오토스케일링 편집 > 인스턴스 축소 보호 체크 후 로드밸런싱 그룹을 지우고 새로 생성하여 해결했다.

 

 

다음은 로드밸런싱 그룹을 삭제 후 재생성하는 과정이다.

 

 

 

DNS name을 통해 정상 접속 되는 것을 확인했다.

 

 

 

3. 인스턴스 과부하를 통해 오토스케일링 동작하는지 확인하기

 

 

 

 

 

오토스케일링 규칙은 자동 크기 조정 > 작업 > 편집에서 수정할 수 있다.

 

평균 CPU 사용률 30 이상, 60초 이상 되면 오토스케일링을 하도록 설정했다. 

오토스케일링 동작  부하를 시켜보겠다.

 

 

인스턴스 1개에 접속한다.

cmd에서 다음 코드를 작성한다.

 

 

# ssh 로그인

ssh ec2-user@54.213.125.227 -i [키 위치]



# 해시값 계산을 무한대로 시켜서 부하시킨다.

sha256sum /dev/zero &



 # cpu 확인

top

 

 

 

cpu가 90 이상이다.아까 cpu가 60 이상이면 오토스케일링을 하는 조건을 설정했었다.

 

 

 

부하를 계속 시켜봤다.

 

 

 

 

부하 후
이전

 

 

CPU 사용률이 60 이상이면 인스턴스를 증가하도록 설정했고 인스턴스개수가 2개에서 -> 8개로 증가했다.

 

인스턴스가 많이 생겼다.

 

 

따라서 오토스케일링을 통해 요청 수에 따라 인스턴스를 증감할 수 있다.

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

AWS  (0) 2023.07.18
AWS 오토스케일링 설정된 인스턴스 삭제하기  (1) 2023.04.28