devops

AWS - Auto Scaling Group & Elastic Load Balancing 본문

DevOps/AWS

AWS - Auto Scaling Group & Elastic Load Balancing

vata500 2022. 5. 20. 11:13
반응형

Auto Scaling Group

사용자의 요구 수준에 따라서 미리 정해놓은 큐칙에 따라서 작업량을 자동으로 확대하거나 축소할 수 있는 기술이다.  Auto Scaling을 이용하면 처리 요구량이 급등할 때 새 리소스를 자동으로 추가하고 환경설정한다. 반대로 줄어들면 해당 리소스를 감소시킨다.

Auto Scaling 장점

1. 동적 스케일링

사용자의 요구 수준에 따라 리소스를 동적으로 스케일링할 수 있다. 스케일 업 할 수 있는 서버의 수에는 제한이 없고, 필요한 경우에는 서버 두 대에서 수백 ~ 수만 대의 서버로 즉시 스케일 업할 수 있다.

2. 로드 밸런싱

다수의 EC2 인스턴스에게 워크로드를 효과적으로 분배할 수 있다. 다수의 AZ에 분포된 EC2 인스턴스에 대한 워크로드도 자동으로 분배하도록 설정이 가능하다.

3. 타겟 트래킹 

특정 타겟에 대해서만 오토 스케일링할 수 있다. 사용자가 설정한 타겟에 맞춰서 EC2 인스턴스 수를 조정할 수 있다.

4. 헬스 체크 및 서버 플릿관리

오토 스케일링을 이용하면 EC2 인스턴스의 헬스 체크 상태를 모니터링할 수 있다.

다수의 EC2 서버가 어플리케이션을 호스팅할 때, EC2 서버 집합을 AWS는 서버 플릿(Server Fleet)이라 부른다. Auto Scaling은 적정 수준의 서버 플릿 용량을 유지하는데 효율적이다.

EC2 Auto Scaling 활용

EC2 Auto Scaling은 오직 EC2 서버의 리소스만 대상으로 한다.

시작 템플릿(Launch Configuration)

Auto Scaling으로 인스턴스를 확장하거나 축소하려면 어떤 서버를 사용할지 결정해야한다. 시작 템플릿을 통해서 가능하다. 

AMI 정보, 인스턴스 타입, 키 페어, 시큐리티 그룹 등 인스턴스에 대한 모든 정보를 담고 있다. 시작 구성을 통해서도 생성이 가능하다. 시작 구성은 EC2 Auto Scaling 사용자를 위해서 생성하는 EC2 인스턴스 유형을 지정한다는 점에서 시작 템플릿과 비슷하다.

구성요소 (AMI ID, 인스턴스 유형, 키 페어, 보안 그룹 등)

Scaling 유형

1. 인스턴스 레벨 유지

기본 스케일링 계획, 항상 실행 상태를 유지하고자 하는 인스턴스 수를 지정할 수 있다. 일정한 수의 인스턴스가 필요할 때 최소, 최대 원하는 용량에 값을 설정한다.

2. 수동 스케일링

기존 Auto Scaling 그룹 크기를 수동으로 변경할 수 있다. (비추)

3. 예측 스케일링

트래픽 변화 예측이 가능하며, 특정 시간대에 어느 정도로 트래픽이 증가하는 지 패턴을 알고 있다면 사용하는 것이 좋다.

4. 동적 스케일링

수요 변화에 대응해서 Auto Scaling 그룹의 용량을 조정하는 방법이다.

동적 스케일링 정책

1. 타겟 트랙킹 스케일링 : 미리 정의된 성능 지표를 이용하거나 커스텀 성능지표를 사용하여 타겟 값으로 설정가능하다.

2. 단순 스케일일 : 특정 이벤트에 대응하기 위한 같은 액션을 취한다

3. 단계 스케일링 : 단순 스케일링에 비해 더 세분화하여 단계를 나누어 규칙을 추가할 수 있다.

인스턴스 삭제 정책

스케일 다운 정책이 적용되면 불필요한 서버를 셧다운한다. 즉,  EC2 인스턴스가 삭제된다. 

1. 사용자의 서버 플릿에서 가장 오랜시간 실행된 서버를 삭제한다. - 최신 성능 유지

2. 시간 단위 과금이 임박한 서버를 삭제한다. - 과금 부담 감소


Elastic Load Balancing(ELB)

둘 이상의 가용 영역에서 EC2 인스턴스, 컨테이너, IP 주소 등 여러 대상에 걸쳐 수신되는 트래픽을 자동 분산시킨다. 등록된 대상의 상태를 모니터링하여 양호한 상태의 대상만 트래픽을 라우팅한다.

* 로드밸런싱 : 동일한 서비스를 하는 다수의 서버가 등록되어 사용자가 서비스를 요청하면 로드밸런서가 사용자별로 다수의 서버에 요청을 분산시켜준다. 이를 '로드 밸런싱', '부하 분산'이라고도 한다. 

ELB 특징

- 고가용성 : ELB는 고가용성 아키텍처를 구현하는데 도움을 준다. 다수의 EC2 인스턴스, 컨테이너 등에 트래픽을 분산시키고 다수의 AZ에 배포된 EC2 인스턴스에 Application을 배포하여 하나의 AZ가 다운되어도 문제없다.

- 탄력성 : 자동적인 확장성이 가능하다. 관리자가 직접 추가, 삭제할 필요가 없다.

- 안전성 : SSL 복호화, 포트 포워딩, 인증 등 다수의 보안 기능을 제공한다.

- 높은 처리량 : 초당 수백만 개의 요청을 로드 밸런싱할 수 있다.

ELB 유형

Application Load Balancer(ALB)

OSI 모델의 레이어 7계층에 해당하여, HTTP와 HTTPS를 지원한다. 로드 밸런서는 요청을 받으면 우선순위에 따라서 리스너 규칙을 평가하여 적용할 규칙을 결정한다. 다음으로 규칙 작업의 타겟그룹에서 타겟을 선택한다. application 트래픽 콘텐츠를 기반하여 다른 타겟 그룹에 요청을 라우팅하도록 리스너 규칙을 구성할 수 있다.

ALB는 헤더 수정이 가능하다. 

Network Load Balancer(NLB)

TCP 로드 밸런서라고도 하며, OSI 모델의 레이어 4에서 작동한다. 로드 밸런서가 요청을 받으면 기본 규칙의 타겟 그룹에서 대상을 선택한다. 리스너 구성에 지정된 포트에서 선택한 타겟에 대한 TCP 연결을 열려고 시도한다. 

TCP의 트래픽의 경우엔 프로토콜, 원본 IP 주소, 원본 포트, 타겟 IP 주소, 타겟 포트, TCP 시퀀스 번호에 따라서 로드 밸런서가 흐름 해시 알고리즘에 따라 타겟을 선택한다.

UDP 트래픽은 로드밸런서가 프로토콜, 원본 IP 주소, 원본 포트, 타겟 IP 주소, 타겟 포트에 따라 해시 알고리즘을 활용하여 타겟을 선택한다. UDP 흐름은 소스와 목적지가 동일하여 수명이 다할 때까지 일관되게 단일 타겟으로 라우팅된다.

+ Auto Scaling과 ELB로 어플리케이션을 구현할 때 다중 AZ를 권장한다.

 

반응형
Comments