Amazon EC2 - Launch Templates and Auto Scaling

  • Auto Scaling?
  • Auto Scaling Group 생성

 

Auto Scaling?

https://docs.aws.amazon.com/ko_kr/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html

 

Amazon EC2 Auto Scaling이란 무엇입니까? - Amazon EC2 Auto Scaling

Amazon EC2 Auto Scaling이란 무엇입니까? Amazon EC2 Auto Scaling을 사용하면 애플리케이션의 로드를 처리할 수 있는 정확한 수의 Amazon EC2 인스턴스를 유지할 수 있습니다. Auto Scaling 그룹이라는 EC2 인스턴

docs.aws.amazon.com

이미 경험해본 바와 같이 EC2 인스턴스를 원하는 사양으로 원하는 시간에 원하는 만큼 빌려 쓰고 반납할 수 있어요. 워크로드가 늘어나면 더 많이 빌리고 워크로드가 줄어들어서 EC2 인스턴스가 많이 필요 없다면 반납할 수 있어요. 이렇게 인스턴스의 개수를 자동으로 혹은 수동으로 늘렸다 줄였다 하는 것을 Auto Scaling이라고 해요. 언제나 그러하듯 먼저 만들어 놓고 그다음에 자세하게 살펴볼게요.

Auto Scaling Group 생성

Amazon EC2 - Auto Scaling Groups

EC2 console home에서 왼쪽 아래를 보면 목록에 Auto Scaling Groups가 있어요. 바로 오른쪽에 있는 Create Auto Scaling group 버튼을 눌러서 오토 스케일링 그룹을 생성해보도록 할게요.

ASG - 1. Choose launch template or configuration

먼저 ASG의 이름과 ASG에서 사용할 시작 템플릿을 설정해주세요. 앞서 만들었던 시작 템플릿을 사용하고 있어요.

 

ASG - 2. Choose instance launch options

다음으로 VPC와 Subnet을 선택해주세요. 이후로는 선택적으로 설정할 수 있는 부분인데 ALB 설정까지 해볼게요. Subnet을 하나만 선택해서 ALB를 적용시키려고 하니 다음 단계로 넘어가질 못했어요. 2개를 만들어도 마찬가지기에 기존 ap-northeast-2a 서브넷 외에 ap-northeast-2b에도 서브넷을 하나 더 만들고 다음으로 넘어가니 아래와 같이 자동으로 2개의 서브넷이 선택되어있는 것을 볼 수 있었어요.

 

ASG - 3. Configure advanced options

ASG가 목표였지만 여기까지 와서 ELB 한 번 안 만져보고 갈 수 없어서 ALB를 만들어서 붙이기로 했어요. 우리 ELB 인스턴스는 http 요청을 받아서 분산시켜줄 거니까 ALB로 만들 거예요. 아직 ELB에 대해서는 자세하게 공부하지 않아서 잘 모르겠는데 하나의 가용 영역에는 생성이 안 되는 것 같았어요. 그래서 서울 - 2a에 더해서 서울 - 2b 가용 영역에 서브넷을 하나 더 만들고 2. Choose instance launch options 단계에서 선택해 줬어요 그랬더니 여기에서 자동으로 딱 들어가 있네요. 마지막으로 target group을 만들고 다음.

 

ASG - 4. Configure group size and scaling policies

다음으로 ASG에서 꼭 봐야 하는 것 한 가지 더 보고 갈게요. 지금은 수동으로 조절할 거지만 자동으로 조절된다고 할 때 이 ASG가 어느 정도 규모로 움직일지 정해주는 일이에요. 원하는 인스턴스 개수는 1개, 최소 1개, 최대 1개.로 일단 정했어요. ASG 만들고 바꿔볼게요.

노티랑 태그 설정은 안하고 그냥 완료했어요.

 

ASG 생성을 완료하면 바로 인스턴스가 하나 생성되는 걸 확인할 수 있어요. 위에 있는 인스턴스는 손으로 만든 인스턴스예요. 바로 삭제시켜주고 Scaling을 어떻게 하는지 볼게요.

 

ASG - Group size 

ASG Details 탭에서 수정 버튼을 누르고 그룹 크기를 수정했어요. Desired는 이렇게 됐으면 좋겠다 하는 거고요. Minimum, Maximum은 최소와 최대 인스턴스 개수를 지정해 주는 거예요. 참고로 이렇게 인스턴스가 하나만 있는 ASG를 single-instance ASG라고 하고요 여러 가지 인스턴스들을 넣은 ASG를 multi instance ASG라고 해요. 

 

ASG - modified Group details

업데이트를 누르고 나와서 details 탭을 보면 이렇게 변경된 걸 확인할 수 있고

 

인스턴스에서 새로운 인스턴스가 생성되고 있는 것을 볼 수 있어요. 

그리고 web에서 호스트 이름을 보여주게 인스턴스를 설정했었는데 ASG에서 생성한 ALB의 public IP로 접근하면 아래와 같이

번갈아가면서 여러개의 인스턴스로 부하가 분산되는 것도 확인이 가능하네요.

 

ASG - Automatic scaling policies

이렇게 수동으로 그룹 사이즈를 늘렸다 줄였다 하는 방법도 있지만 사용률에 따라서 유동적으로 혹은 정해진 시간에 늘렸다 줄였다 할 수 있어요. 그럼 오늘은 ASG 생성하는 것까지만 보고 그룹 사이즈를 자동으로 늘렸다 줄였다 하는 건 좀 더 공부하고 포스팅할게요.