2022.06.13.
AWS 알아보기 Part 8
(Auto Scaling 소개 및 실습)
Auto Scaling
- 정의
- application을 monitoring하고 용량을 자동으로 조정하여, 최대한 저렴한 비용으로 안정적이고 예측 가능한 성능을 유지함.
- 목표
- 정확한 수의 EC2 instance를 보유하도록 보장함. group의 최소와 최대 instance 개수 사이를 유지하도록 instance를 추가하고 삭제함. 다양한 scaling 정책을 적용하여 CPU 부하에 따라 instance를 추가하고 삭제함.
- 가용 영역에 instance가 골고루 분산될 수 있도록 분배함. 하나의 가용 영역에 문제가 생기면 service에 심각한 장애가 발생하기 때문에 이를 방지하기 위함임.
- 기본 개념 - Scaling Type
- Vertical Scale (Scale Up): 성능의 증가와 비용의 증가가 비례하지 않음. 기술 문제 때문에 성능을 무한대로 늘릴 수 없음.
- Horizontal Scale (Scale Out): 성능의 증가와 비용의 증가가 비례함. 성능을 무한대로 늘릴 수도 있음. 대신 여러 instance를 사용할 수 있는 program이나 architecture가 잘 준비되어야 함.
- cloud 환경에서는 저렴한 것을 많이 사용하고 그것을 줄였다 늘였다 할 수 있는 Horizontal Scale이 더 합리적임.
Auto Scaling 구성
- Launch configurations(시작 구성) / Launch template(시작 템플릿)
- '무엇을 실행시킬 것인가?'에 관함.
- 우리가 올리고 싶은 EC2의 기본 정보들을 담음. auto scaling을 통해 instance를 늘리고 싶을 때 어떤 instance를 늘릴 것인지에 대한 내용임.
- EC2 type과 size, AMI, Security Group, Key, IAM, User data 등
- Monitoring
- '언제 실행시킬 것인가? + 상태 확인'에 관함.
- auto scaling이 어떤 조건에 실행될 것인지에 대한 내용임. 어떤 상황에서 auto scaling을 실행시킬 것인지를 알기 위해 monitoring을 함.
- CloudWatch (and/or) ELB와 연계됨.
- 상황 예시: CPU 점유율이 일정 %을 넘어섰을 때, 2개 이상이 필요한 스택에서 EC2 하나가 죽었을 때
- 설정
- '얼마나 어떻게 실행시킬 것인가?'에 관함.
- auto scaling에 적용할 설정 내용
- 최대/최소/원하는 instance 개수, ELB와 연동 등
- 간소화한 동작 방식
- EC2 instance cluster에 8개의 instance가 필요하다고 가정 => EC2 1개가 죽음 => auto scaling이 감지함 => launch template에 맞는 instance를 생성해 auto scaling cluster에 다시 넣어줌
Auto Scaling 실습
- 실습 과정 (1) - Launch template 만들기
- 'EC2' 검색 후 왼쪽 메뉴에서 '시작 템플릿' 선택 => 오른쪽에 '시작 템플릿 생성' 선택
- '시작 템플릿 이름 및 설명'에서 '시작 템플릿 이름'에 'MyTemplate' 입력 => 'EC2 Auto Scaling에 사용할 수 있는 템플릿을 설정하는 데 도움이 되는 지침 제공'에 체크
- 'AMI'에서 'Amazon Linux 2 AMI' 선택
- '인스턴스 유형'에서 't2.micro' 선택 => '키 페어'에서 '시작 템플릿에 포함하지 않음' 선택
- '네트워크 설정'에서 '보안 그룹'에 'default' 선택 (VPC에서 security group을 설정하지 않은 이유는 network interface에서 security group을 설정해주기 때문임)
- '어드밴스드 네트워크 구성'에서 '네트워크 인터페이스 추가' 선택 => '네트워크 인터페이스'에 '새 인터페이스' 선택, '퍼블릭 IP 자동 할당'에 '활성화' 선택, '보안 그룹'에 'default' 선택 => '종료 시 삭제'에 '예' 선택
- '시작 템플릿 생성' 선택
- 실습 과정 (2) - Auto Scaling Group 만들기
- '다음 단계'의 '템플릿에서 Auto Scaling 그룹 생성'에서 'Auto Scaling 그룹 생성' 선택 (또는 'EC2' 검색 후 왼쪽 메뉴에서 'Auto Scaling 그룹' 선택 후 'Auto Scaling 그룹 생성'을 선택해도 같음)
- '이름'의 'Auto Scaling 그룹 이름'에 'MyASG' 입력 => '시작 템플릿'에 'MyTemplate' 선택
- '네트워크'의 '가용 영역 및 서브넷'에 모든 가용 영역 선택 (선택한 가용 영역에만 instance가 올라감. 바꿔 말해 선택하지 않은 가용 영역엔 올라가지 않는데, 굳이 선택하지 않을 이유가 없으니 다 선택함.)
- '그룹 크기'의 '원하는 용량'과 '최소 용량'과 '최대 용량'에 모두 2를 입력 (다른 숫자를 입력해도 됨)
- '태그'에서 '태그 추가' 선택 => '키'에 'MyTag' 입력, '값'에 'tagvalue' 입력 (tag를 추가하면 auto scaling group의 모든 instance에 같은 tag가 적용된다는 장점이 있음)
- 'Auto Scaling 그룹 생성' 선택
- 실습 과정 (3) - Auto Scaling Group 확인
- 'EC2' 검색 후 왼쪽 메뉴에서 'Auto Scaling 그룹' 선택 => 확인하고자 하는 auto scaling group 선택
- '활동'에서 group의 설정에 따라 instance가 생성되고 삭제되는 작업 내용을 확인 가능 => '인스턴스 관리'에서 group에 속한 instance 확인 가능
- 임의로 instance 하나를 삭제하면, auto scaling group에서 감지 후 instance를 새로 생성하는 것을 확인할 수 있음.
- 실습을 종료하고 싶으면 선택한 auto scaling group의 '세부 정보'에서 '편집'을 선택한 후 '원하는 용량'과 '최소 용량'에 0을 입력
참고: AWS 강의실(https://www.youtube.com/c/AAAWS)
'AWS' 카테고리의 다른 글
[AWS] AWS 루트 사용자 로그인이 안 되는 문제 (Feat. MFA) (0) | 2022.06.14 |
---|---|
[AWS] AWS 알아보기 Part 9 - ELB 소개 및 실습 (0) | 2022.06.14 |
[AWS] AWS 알아보기 Part 7 - EC2의 생명주기 (0) | 2022.06.12 |
[AWS] AWS 알아보기 Part 6 - EBS, Snapshot, AMI, AMI 실습 (0) | 2022.06.11 |
[AWS] AWS 알아보기 Part 5 - EC2 가격과 유형 (0) | 2022.06.10 |