drexqq

[AWS] 기존 인스턴스 오토스케일링 본문

ETC/AWS

[AWS] 기존 인스턴스 오토스케일링

drexqq 2022. 4. 14. 20:23
728x90
반응형

진행중인 프로젝트에 오토스케일링을 적용해보았다.

 

사용이유는 특정 상황, 특정 시간에 갑자기 많은 트래픽이 몰리고 서버에 부하가 걸리는 일이 많이 있어서

해당 부분을 해소하기위해 서버의 스펙을 올리는 scale up보다는 오토스케일링을 적용시켜 scale out으로 해결하기 위해서이다.

 

scale up을 선택하지 않고 scale out을 선택한 이유는 sclae up을 한다면 지속적으로 많은 비용이 나가지만 scale out을 적용하면 필요할때만 늘리고 줄이는 방식으로 유연하게 트래픽에 대한 대처가 가능하기 때문이다.

 

이제 방법을 보자면

 

크게 총 5가지로 나뉘는 것 같다.

 

AMI 생성 -> 시작템플릿(TG) 생성 -> 대상그룹(TG) 생성 -> 로드밸런서(LB) 생성 -> 오토스케일링그룹(ASG) 생성 ( 추가적인 설정)

 

1. aws에 로그인한 후에 EC2 인스턴스에 들어가서 사용하고있는 인스턴스에 우클릭을 한 후에 '이미지 및 템플릿' -> '이미지 생성'을 클릭해 해당 인스턴스의 이미지를 생성해준다.

 

2. 시작템플릿에 들어가 시작 템플릿을 생성해준다.

Auto Scailing을 사용할것이기때문에 Auto Scailing 지침을 활성화해주고

 

AMI를 설정하는 곳에서 아까 생성한 AMI를 선택해준다.

 

기존에 사용하던 키페어를 선택해주고 네트워크설정은 건너뛴다.

 

3. 대상그룹탭에 들어가서 '대상 그룹 생성'을 눌러서 새로운 대상 그룹을 생성해준다

구성은 유형은 인스턴스로 해주고 나머지는 프로젝트에 맞춰서 해주었다.

또한 대상은 따로 등록해주지 않고 바로 생성해주었다.

 

4. 로드밸런서탭에 들어가서 '로드 밸런서 생성'을 클릭해 로드밸런서를 생성해준다.

로드밸런서 유형은 Application Load Balancer로 선택해준 뒤

서브넷, 보안그룹, 리스너를 프로젝트에 맞게 설정해준 뒤 생성을 한다.

 

5. EC2인스턴스로 돌아가 AMI를 만들었던 오토스케일링을 적용하고싶은 인스턴스에 우클릭해 '인스턴스 설정' -> 'Auto Scailing그룹에 연결'을 눌러준다.

 

모두 완료했다면 오토스케일링 그룹이 하나 생성되었을 텐데 해당 그룹을 선택 후 편집에 들어가서

 

용량 설정에 용량들을 내가 원하는 만큼 설정해주고

 

시작구성을 1번에서 만들었던 시작템플릿으로 설정

 

네트워크 부분에 원하는 서브넷을 선택한 뒤

 

로드밸런서에서 4번에서 만든 로드밸런서를 적용해준다.

 

또한 상태확인에 있는 ELB를 체크하고 종료정책에 Newest Instance를 선택하면 해당 오토스케일링 그룹에서 가장 새로운 인스턴스를 종료시켜준다.

 

https://docs.aws.amazon.com/ko_kr/autoscaling/ec2/userguide/ec2-auto-scaling-termination-policies.html#custom-termination-policy

 

Amazon EC2 Auto Scaling 종료 정책 사용 - Amazon EC2 Auto Scaling

Amazon EC2 Auto Scaling은 사용 중인 종료 정책과 관계없이 항상 가용 영역 전반에서 인스턴스를 먼저 조정합니다. 따라서 일부 최신 인스턴스가 이전 인스턴스보다 먼저 종료되는 상황이 발생할 수

docs.aws.amazon.com

 

aws공식 문서에 설명이 잘 나와있다.

 

이렇게 한 뒤 인스턴스에 접속해 stress --cpu 명령어로 CPU에 부하를 걸어보면 인스턴스가 생성되고 자동으로 종료되는것을 확인할 수 있다

728x90
반응형
Comments