AWS/EC2

[EC2] EC2 Auto Scaling Group 적용 (2) - 시스템 구축

J_Dev 2024. 11. 19. 22:13
  • 이번 포스트에서는 AWS의 Auto Scaling Group(ASG)을 설정하고 동작을 확인하는 과정을 단계별로 알아보겠습니다.
  • AMI 생성, Launch Template 생성, ASG 설정, 그리고 동작 확인까지 진행합니다.

1. AMI 이미지 생성

  • EC2 인스턴스를 바탕으로 생성하는 이미지 파일입니다.
  • 운영체제(여기선 Ubuntu), 애플리케이션, 설정파일등을포함합니다.

1) 이미지 생성 시작

  1. AWS 콘솔에서 EC2 인스턴스 목록으로 이동합니다.
  2. Auoto Scaling Group으로 지정할 인스턴스의 상세 페이지를 엽니다.
  3. 상단 메뉴에서 작업 > 이미지 및 템플릿 > 이미지 생성을 선택합니다.

2) 이미지 설정 입력

팝업 창에서 다음 정보를 입력합니다:

  1. 이미지 이름: 이미지의 용도를 알 수 있도록 직관적인 이름을 입력합니다. 예: web-server-backup
  2. 이미지 설명(선택): 이미지에 대한 설명을 작성합니다.
  3. 인스턴스 재부팅 여부:
  • AMI 생성 과정에서 데이터를 손상 없이 저장하려면 재부팅을 선택하는 것이 좋습니다.
  • 운영 중지 없이 생성하려면 재부팅을 선택하지 않아도 되지만, 데이터 손상 가능성이 있을 수 있습니다.
  1. 볼륨 크기 조정: 기본값은 인스턴스에서 사용 중인 디스크 크기입니다. 필요에 따라 크기를 늘릴 수 있습니다.

3) 이미지 생성 완료 확인

  1. 입력을 완료한 후 이미지 생성 버튼을 클릭합니다.
  2. AWS 콘솔에서 EC2 > AMI 메뉴로 이동합니다.
  3. 생성된 AMI는 동일한 구성을 가진 새로운 인스턴스를 배포하는 데 사용됩니다.


2. 시작템플릿(Launch Template) 생성

  • 시작 템플릿(Launch Template)은 EC2 인스턴스를 생성할 때 필요한 설정을 미리 정의해 두는 기능입니다.
  • ASG 생성시 미리 지정해둔 시작 템플릿으로 인스턴스를 생성하므로 미리 설정해둬야 합니다.

1) 시작 템플릿 생성 시작

  1. EC2 콘솔에서 시작 템플릿 메뉴로 이동합니다.
  2. 시작 템플릿 생성 버튼을 클릭합니다.

2) 템플릿 정보 입력

  1. 시작 템플릿 이름 : 템플릿의 용도를 쉽게 알 수 있도록 직관적인 이름을 지정합니다.

  1. AMI: 이전 단계에서 생성한 AMI를 선택합니다.

  1. 인스턴스 유형 : 여기서는 프리 티어를 기준으로 t2.micro를 선택했습니다.
  2. 키페어 : 기존 키페어를 사용하거나 또는 새로생성합니다.

  1. 서브넷 : Auto Scaling Group에서 선택할 수 있으므로 여기서는 포함하지 않음을 선택합니다.
  2. 보안그룹 : 기존 인스턴스의 보안 그룹을 재사용하거나, 새로운 보안 그룹을 생성합니다.

 


3. 오토스케일링 생성

1) 시작 템플릿 선택

1. Auto Scaling 그룹 이름 : 사용 목적과 관련된 이름을 입력해줍니다.
2. 시작 템플릿 : 이전 단계에서 생성한 시작 템플릿을 선택합니다

2) 인스턴스 시작 옵션 선택

1. VPC : 인스턴스들이 포함될 VPC를 선택합니다. Frontend, Redis, RDS 등 이포함된 VPC여야 합니다.
2. 가용 영역 및 서브넷 : VPC의 서브넷을 선택합니다. 편의상 Public 서브넷을 선택했지만, 실제 환경에서는 클라이언트와 통신하지 않는 인스턴스는 Private Subnet을 설정합니다.
3. 가용 영역 배포 : 기본값을 사용합니다. 이는 인스턴스를 가용 영역에 균등하게 분산시킵니다.

3) 다른 서비스와 통합

  • 여기서는 로드 밸런서를 연결하지 않지만, 실제 환경에서는 로드 밸런서를 설정하여 트래픽 분산과 높은 가용성을 보장할 수 있습니다.

4)그룹 크기 및 크기 조정 구성

1. 원하는 용량 : ASG 생성시 초기 인스턴스 수를 정합니다. 1개만 생성할것이므로 1개만 적어줍니다.

  1. 원하는 최소 용량 : Auto Scaling이 인스턴스 수를 축소 (Scale-In) 시에도 유지해야 할 최소 인스턴스 수입니다. 1개로 설정하여 최소 가용성을 보장합니다.
  2. 원하는 최대 용량 : Scale out 시 최대 인스턴스 수 입니다. 테스트 환경에서는 3개로 설정했습니다
  3. 크기조정 정책 이름 : 오토스케일링 동적 Sclae out 조건 이름입니다. Cloud Watch에 들어갑니다. 디폴드값으로 설정해주었습니다.
  4. 지표유형 : Auto Scaling 동작의 기준이 될 지표를 선택합니다. 여기서는 평균 CPU 사용률을 선택했습니다. Sclae-In, Sclae-out 모두 해당됩니다.
  5. 대상값 : 평균 CPU 사용률이 설정된 임계값(여기서는 50%) 을 초과하면 인스턴스를 추가 생성합니다.
  6. 인스턴스 워밍업: 새로 생성된 인스턴스가 애플리케이션을 실행하는 데 필요한 시간을 지정합니다. Docker Compose 실행 시간을 고려해 100초로 설정했습니다.
  7. 확대 정책만 생성하려면 축소 비활성화 : Scale Out 만 활성화하려면 선택합니다..Sclae in 테스트도 진행할 예정이므로 선택하지 않습니다.

  1. 인스턴스 유지 관리 정책 : 최소인스턴스가 1개이므로 종료전 시작으로 가용성 보장합니다.

  1. 기본 인스턴스 워밍업 활성화 : Docker-Compose 실행시간이 있으므로 100초 여유를 뒀습니다.

4. Auto Sacling Group 동작 확인

1) Auto Scaling 그룹 생성 확인

  1. AWS Management Console에서 EC2 메뉴로 이동합니다.
  2. 왼쪽 메뉴에서 Auto Scaling 그룹을 선택합니다.
  3. 생성된 Auto Scaling 그룹이 목록에 생성한 ASG가 표시되는 것을 확인할 수 있습니다.

2) 인스턴스 상태 확인

  1. Auto Scaling 그룹의 세부 정보를 열고 인스턴스 관리 탭으로 이동합니다.
  2. 현재 Auto Scaling 그룹에서 생성한 EC2 인스턴스 목록이 표시됩니다.
  3. 지정한 초기 용량(1개)이 정상적으로 생성된것을 확인할 수 있습니다.

 


5. 결론

  • 이펀 포스트에서는 Auto Scaling Group(ASG)을 생성하는 과정을 단계별로 진행해 보았습니다.
  1. AMI 생성: 기존 EC2 인스턴스를 기반으로 맞춤형 이미지를 만들었습니다.
  2. Launch Template 생성: AMI를 활용해 EC2 설정을 미리 정의했습니다.
  3. ASG 생성: Auto Scaling Group을 구성하고, 초기 설정 및 크기 조정 정책을 설정했습니다.
  4. ASG 동작 확인: EC2 인스턴스가 ASG에 의해 자동 생성되는 과정을 확인했습니다.
  • 이번 과정을 통해 AWS에서 애플리케이션의 확장성과 가용성을 유지하기 위한 핵심 단계를 이해할 수 있었습니다.
  • 다음 포스트에서는 ASG의 Scale Out/Scale In 동작문제 있는 인스턴스의 자동 교체에 대해 다룰 예정입니다.