[AWS] 로드 밸런싱과 오토 스케일링

haesa·2025년 3월 19일

Infra

목록 보기
3/5
post-thumbnail

오토 스케일링 Auto Scaling

필요한 리소스만을 가동하기 위해 수요 변화에 대응하여 자동으로 자원을 확장 및 축소하는 것을 오토 스케일링이라 한다.

오토 스케일링을 활용하면 필요한 리소스만큼만 사용하고, 사용한 리소스에 대해서만 비용을 지불하기 때문에 합리적으로 인프라를 관리할 수 있다.

리소스를 피크 타임에 맞춰서 남는 자원이 많거나, 반대로 평균에 맞춰 피크 타임에 자원이 부족해지는 일을 피할 수 있다.

Amazon EC2 인스턴스에 오토 스케일링을 제공하는 AWS 서비스가 바로 Amazon EC2 Auto Scaling이다.

Amazon EC2 Auto Scaling

Auto Scaling 그룹이라는 EC2 인스턴스 모음을 생성하면 각 Auto Scaling 그룹의 최소 인스턴스 수최대 인스턴스 수, 원하는 인스턴스 용량을 정할 수 있다.

즉 Auto Scaling 그룹 내의 인스턴스의 개수는 최소 인스턴스 수보다 아래로 내려갈 수 없고, 최대 인스턴스 수를 넘을 수 없다. 또한 원하는 용량을 지정한 경우 언제든지 Amazon EC2 Auto Scaling에서 해당 그룹에서 그만큼의 인스턴스를 보유할 수 있다.

만약 조정 정책을 지정했다면 애플리케이션의 수요에 따라 인스턴스를 시작하거나 해지할 수도 있다.

예를 들어 다음 Auto Scaling 그룹의 경우, 최소 인스턴스 수 네 개, 원하는 인스턴스 용량 두 개, 최대 인스턴스 수 열두 개가 된다. 사용자가 정의한 조정 정책에 따라 인스턴스 수가 최소 및 최대 인스턴스 수 내에서 지정하는 조건에 따라 조절된다.

Amazon EC2 Auto Scaling의 기능

실행 중인 인스턴스의 상태 모니터링

Amazon EC2 Auto Scaling은 EC2 상태 확인을 사용하여 인스턴스의 상태 및 가용성을 자동으로 모니터링하고, 종료되거나 손상된 인스턴스를 대체하여 원하는 용량을 유지한다.

사용자 지정 상태 확인

기본 제공 상태 확인 외에도 애플리케이션에 고유한 사용자 지정 상태 확인을 정의하여 애플리케이션이 예상대로 응답하는지 확인할 수 있다. 인스턴스가 사용자 지정 상태 확인에 실패하면 원하는 용량을 유지하기 위해 인스턴스가 자동으로 교체된다.

여러 가용 영역에서 용량 균형 유지

Auto Scaling 그룹에 여러 가용 영역을 지정할 수 있으며, Amazon EC2 Auto Scaling은 그룹 규모에 따라 가용 영역 전반에서 인스턴스의 균형을 고르게 유지한다. 이렇게 하면 단일 위치의 장애로부터 애플리케이션을 보호하여 가용성과 복원력이 높아진다.

여러 인스턴스 유형 및 구매 옵션

단일 Auto Scaling 그룹에서 여러 인스턴스 유형 및 구매 옵션(스팟 및 온디맨드 인스턴스)을 시작할 수 있어 스팟 인스턴스 사용으로 비용을 최적화할 수 있다. 그룹의 온디맨드 인스턴스와 함께 사용하여 예약 인스턴스 및 절감형 플랜의 할인 혜택을 받을 수도 있다.

스팟 인스턴스의 자동 교체

그룹에 스팟 인스턴스가 포함된 경우, 스팟 인스턴스가 중단되면 Amazon EC2 Auto Scaling에서 스팟 용량을 교체하도록 자동으로 요청할 수 있다. 또한 Amazon EC2 Auto Scaling은 용량 리밸런싱을 통해 중단 위험이 높은 스팟 인스턴스를 모니터링하고 사전에 교체할 수 있다.

로드 밸런싱

Elastic Load Balancing 로드 밸런싱 및 상태 확인을 사용하여 애플리케이션 트래픽을 정상 인스턴스에 고르게 분산할 수 있다. 인스턴스가 시작되거나 종료될 때마다 Amazon EC2 Auto Scaling은 로드 밸런서에서 인스턴스를 자동으로 등록하고 등록 취소한다.

확장성

또한 Amazon EC2 Auto Scaling은 Auto Scaling 그룹을 조정하는 여러 가지 방법을 제공한다. Auto Scaling을 사용하면 최대 부하를 처리하는 용량을 추가하고, 수요가 낮을 때 용량을 제거하여 애플리케이션 가용성을 유지하고 비용을 줄일 수 있다. 필요에 따라 Auto Scaling 그룹의 크기를 수동으로 조정할 수도 있다.

인스턴스 새로 고침

인스턴스 새로 고침 기능은 AMI 또는 시작 템플릿을 업데이트할 때 롤링 방식으로 인스턴스를 업데이트하는 메커니즘을 제공한다. 카나리 배포라고 하는 단계별 접근 방식을 사용하여 전체 그룹으로 롤아웃하기 전에 작은 인스턴스 세트에서 새 AMI 또는 시작 템플릿을 테스트할 수도 있다.

수명 주기 후크

수명 주기 후크는 새 인스턴스 시작 시 또는 인스턴스가 종료되기 전에 호출되는 사용자 지정 작업을 정의하는 데 유용하다. 이 기능은 이벤트 기반 아키텍처를 구축하는 데 특히 유용하지만 수명 주기 동안 인스턴스를 관리하는 데도 도움이 된다.

상태 저장 워크로드 지원

수명 주기 후크는 종료 시 상태를 유지하기 위한 메커니즘도 제공한다. 상태 저장 애플리케이션의 연속성을 보장하기 위해 스케일 인 보호 또는 사용자 지정 종료 정책을 사용하여 프로세스가 오래 실행되는 인스턴스가 조기에 종료되지 않게 할 수도 있습니다.

Auto Scaling의 이점

  • 향상된 내결함성: 인스턴스가 비건전 상태일 때 이를 감지하여 해지한 다음, 이를 교체할 인스턴스를 시작할 수 있다. 여러 개의 가용 영역을 사용하도록 Amazon EC2 Auto Scaling을 구성하여 하나의 가용 영역이 사용 불가 상태가 되면 다른 가용 영역에서 새 인스턴스를 시작하여 이에 대처할 수 있다.

  • 가용성 향상: 애플리케이션이 현재 트래픽 처리에 필요한 만큼만 자원을 사용할 수 있도록 도와준다.

  • 비용 관리 향상: 필요에 따라 용량을 동적으로 늘리거나 줄일 수 있다. 사용한 EC2 인스턴스에 대해서만 비용을 지불하므로, 인스턴스가 필요할 때 이를 시작하고 필요 없어지면 해지함으로써 비용을 절감한다.

예: 가변적인 수요에 대응

회의에 사용하려는 회의실을 찾을 수 있는 애플리케이션이 있다. 한 주의 시작과 끝에는 이 애플리케이션의 사용량이 최소 수준이다. 주 중반쯤에는 더 많은 직원이 회의 일정을 잡고 있으며, 따라서 애플리케이션에 대한 수요가 눈에 띄게 증가한다.

일반적으로 이러한 용량 변동을 계획하는 방법에는 두 가지가 있다.

첫 번째 옵션은 충분한 서버를 추가하여 애플리케이션에 항상 수요를 충족할 만큼의 충분한 용량이 확보되도록 하는 것이다. 하지만 이 옵션의 단점은 애플리케이션에 이만큼의 용량이 필요 없는 날들도 있다는 것이다. 유휴 자원이 생긴다는 것은 결국 인프라 유지 비용의 상승을 의미한다.

두 번째 옵션은 애플리케이션에 대한 평균 수요를 처리할 수 있는 충분한 용량이 확보되도록 하는 것이다. 이 옵션을 선택하면 가끔 사용되는 장비를 구매하지 않아도 되므로 비용이 절감된다. 그러나 애플리케이션에 대한 수요가 용량을 초과할 경우, 부정적인 고객 경험을 초래할 위험이 있다.

세 번째 옵션은 필요 시에만 애플리케이션에 새 인스턴스를 추가하고 더 이상 필요 없을 때 이를 해지하는 것이다. Amazon EC2 Auto Scaling은 EC2 인스턴스를 사용하므로 사용한 인스턴스에 대해서만 인스턴스 사용 시에 비용을 지불하면 된다.

예: 웹 앱 아키텍처

일반적인 웹 앱 시나리오에서는 고객 트래픽 볼륨을 처리하기 위해 여러 개의 앱 사본을 동시에 실행한다. 이러한 다수의 애플리케이션 사본은 동일한 EC2 인스턴스(클라우드 서버)에서 호스팅되며, 각각에서 고객 요청이 처리된다.

Amazon EC2 Auto Scaling에서는 사용자를 대신하여 이러한 EC2 인스턴스의 시작과 해지를 관리한다. Auto Scaling 그룹에서 EC2 인스턴스를 시작하거나 해지하는 시기를 결정하는 조건(Amazon CloudWatch 경보 등)의 집합을 정의한다. Auto Scaling 그룹을 네트워크 아키텍처에 추가하면 애플리케이션의 가용성과 내결함성을 향상시킬 수 있다.

예: 가용 영역 전반에 인스턴스 분산

Auto Scaling 그룹을 생성할 때는 Auto Scaling 그룹을 배치할 VPC와 서브넷을 선택해야 한다. Amazon EC2 Auto Scaling은 선택한 서브넷에 인스턴스를 생성하며 각 인스턴스는 Amazon EC2 Auto Scaling에서 선택한 특정 가용 영역과 연결된다. 인스턴스가 시작되면 Amazon EC2 Auto Scaling은 고가용성과 신뢰성을 위해 영역 간에 인스턴스를 고르게 배치하려고 한다.

인스턴스 분산

Amazon EC2 Auto Scaling은 활성화된 각 가용 영역에서 동일한 수의 인스턴스를 자동으로 유지하려고 시도한다. 따라서 인스턴스 수가 가장 적은 가용 영역에서 새 인스턴스를 시작하려 하고, 이를 위해 고른 분산을 수행한다.

가용 영역에 대해 선택한 서브넷이 여러 개 있는 경우 가용 영역에서 사용 가능한 IP 주소 수가 가장 많은 서브넷에서 인스턴스를 시작하려고 시도한다. 이 시도가 실패하는 경우, 성공할 때까지 다른 가용 영역에서 인스턴스 시작을 계속 시도한다.

가용 영역이 비정상이거나 사용할 수 없는 상황에서는 인스턴스가 가용 영역 전체에 고르지 않게 배치될 수 있다. 가용 영역이 복구되면 Auto Scaling 그룹을 자동으로 재조정한다.

재조정 활동

재조정 활동은 가용 영역 재조정 및 용량 재조정라는 두 가지 카테고리로 나뉜다.

👉 가용 영역 재조정

특정 작업이 발생하면 Auto Scaling 그룹의 가용 영역 간에 불균형이 발생할 수 있다. 이 때 Amazon EC2 Auto Scaling이 가용 영역을 재조정하여 보상한다. 다음 작업으로 인해 재조정 활동이 발생할 수 있다.

  • Auto Scaling 그룹과 연결된 가용 영역을 변경
  • 인스턴스를 명시적으로 해지 또는 분리하거나 인스턴스를 대기 상태로 두는 경우
  • 이전에 용량이 부족했던 가용 영역이 복구되어 추가적인 용량이 생긴 경우
  • 이전에 스팟 가격이 최대 가격보다 높았던 가용 영역이 이제 스팟 가격이 하락하여 최대 가격 아래로 떨어진 경우

재조정 시 Amazon EC2 Auto Scaling은 이전 인스턴스를 해지하기 전에 새 인스턴스를 시작하여 애플리케이션의 성능이나 가용성을 손상시키지 않는다.

만약 지정된 최대 용량에 도달하거나 이에 근접하면 재조정 활동을 지연시키거나 완전히 중지할 수 있다. 이 문제를 피하기 위해 시스템은 재조정 활동 중에 그룹에 지정된 최대 용량을 일시적으로 초과할 수 있다.

👉 용량 재조정

스팟 인스턴스를 사용할 때 Auto Scaling 그룹에 대해 용량 재조정을 켤 수 있다. 이로 인해 Amazon EC2가 스팟 인스턴스의 중단 위험이 높다고 보고할 때마다 Amazon EC2 Auto Scaling에서 스팟 인스턴스를 시작하려고 시도한다.

로드 밸런싱 Load Balancing

로드 밸런싱란 대규모 트래픽을 분산 처리해주는 것을 의미한다. AWS엔 애플리케이션 트래픽을 Amazon EC2 인스턴스와 같은 여러 리소스에 자동으로 분산하는 서비스가 있는데 바로 Elastic Load Balancing(ELB)이다.

로드 밸런서는 Auto Scaling 그룹으로 들어오는 모든 웹 트래픽의 단일 접점 역할을 한다. 즉 Amazon EC2 Auto Scaling에 의해 Amazon EC2 인스턴스 추가 혹은 제거 요청이 로드 밸런서로 먼저 라우팅되고, 그 후에 트래픽이 요청을 처리할 여러 리소스로 분산된다.

Amazon EC2 인스턴스가 여러 개인 경우 Elastic Load Balancing은 워크로드를 여러 인스턴스에 분산하므로 어느 한 인스턴스가 대량으로 워크로드를 처리할 필요가 없다.

Elastic Load Balancing과 Amazon EC2 Auto Scaling은 별도의 서비스이지만 서로 연동하여 Amazon EC2에서 실행되는 애플리케이션이 뛰어난 성능과 가용성을 제공하도록 돕는다.

예: Elastic Load Balancing

수요가 적은 기간

고객 몇 명이 커피숍에 들어왔고 주문할 준비가 되었다고 가정해 보자.

계산대가 몇 개만 열려 있다면 이는 서비스가 필요한 고객의 수요와 일치한다. 커피숍에서 고객이 없는 계산대를 열어 둘 가능성은 적다. 이 예에서는 계산대를 Amazon EC2 인스턴스로 생각할 수 있다.

수요가 많은 기간

하루 종일 고객의 수가 증가함에 따라 커피숍은 고객을 수용하기 위해 더 많은 계산대를 열어야 한다.

또한 커피숍 직원은 열려 있는 계산대에 요청을 균등하게 분산할 수 있도록 고객을 가장 적합한 계산대로 안내해야 한다. 이때 적절한 계산대로 손님을 안내해주는 커피숍 직원을 로드 밸런서로 생각할 수 있다.

Elastic Load Balancing의 가용 영역 및 로드 밸런서 노드

👉 교차 영역 로드 밸런싱

교차 영역 로드 밸런싱은 다른 가용 영역을 교차해서도 트래픽 분산을 가능하게 하는 기능이다.

교차 영역 로드 밸런싱을 활성화하면 각 로드 밸런서 노드가 활성화된 모든 가용 영역에 있는 등록된 리소스 간에 트래픽을 분산한다.

반대로 비활성화하면 각 로드 밸런서 노드가 해당 가용 영역에 있는 등록된 대상 간에만 트래픽을 분산한다.

👉 영역 이동
영역 전환은 Amazon Application Recovery Controller(ARC) 내의 기능이다. 영역 전환을 사용하면 한 번의 작업으로 로드 밸런서 리소스를 손상된 가용 영역에서 다른 곳으로 이동할 수 있다. 이를 통해 AWS 리전의 다른 정상 가용 영역에서 계속 운영할 수 있다.


Reference

profile
꾸준히 성장하는 개발자🙌

0개의 댓글