본문으로 건너뛰기

TargetGroup

1 ELB Target Group: 효율적인 트래픽 분산의 핵심

  • AWS의 Elastic Load Balancing(ELB)은 들어오는 트래픽을 여러 대상에 자동으로 분산시키는 서비스입니다.
  • Target Group은 ELB의 핵심 구성 요소로, 트래픽을 수신할 대상을 정의하고 관리합니다.
  • 이를 통해 애플리케이션의 확장성, 가용성, 그리고 유연성을 크게 향상시킬 수 있습니다.

2 Target Group이란?

  • Target Group은 EC2 인스턴스, 컨테이너, IP 주소 또는 Lambda 함수와 같은 하나 이상의 대상을 논리적으로 그룹화한 것입니다.
  • 로드 밸런서가 요청을 라우팅할 대상을 지정하는 데 사용됩니다.
  • 각 Target Group은 특정 프로토콜과 포트 번호를 사용하여 요청을 대상으로 라우팅합니다.
  • 중요한 점은 하나의 Target Group에는 동일한 유형의 대상만 포함될 수 있습니다.

3 Target Group의 유형과 특징

3.1 EC2 인스턴스 Target Group

  • Application Load Balancer(ALB)나 Network Load Balancer(NLB)와 주로 사용됩니다.
  • EC2 인스턴스, Auto Scaling 그룹의 인스턴스를 대상으로 등록할 수 있습니다.
  • IP 주소를 직접 등록할 수도 있어, 온프레미스 서버나 다른 VPC의 리소스도 대상이 될 수 있습니다.

3.2 Lambda 함수 Target Group

  • Application Load Balancer와 함께 사용됩니다.
  • 하나의 Lambda 함수만을 대상으로 등록할 수 있습니다.
  • 서버리스 아키텍처에 적합합니다.

3.3 컨테이너 Target Group

  • 주로 ECS(Elastic Container Service)와 함께 사용됩니다.
  • 동적 포트 매핑을 지원하여 컨테이너의 유연한 배포가 가능합니다.

4 Target Group의 주요 기능

  • 상태 확인:
    • 등록된 대상의 상태를 주기적으로 확인합니다.
    • 비정상 대상을 자동으로 감지하고 트래픽 라우팅에서 제외합니다.
  • 라우팅 알고리즘:
    • 라운드 로빈, 최소 미해결 요청 등 다양한 라우팅 알고리즘을 지원합니다.
    • 애플리케이션의 특성에 맞는 최적의 분산 방식을 선택할 수 있습니다.
  • 동적 포트 매핑:
    • 컨테이너 기반 애플리케이션에서 유용한 기능입니다.
    • ECS와 함께 사용 시 동적으로 할당된 포트로 트래픽을 라우팅할 수 있습니다.

4.1 Health Check

  • ELB는 각 대상 그룹에 대해 독립적으로 Health Check를 수행합니다.
  • Health Check는 지정된 간격으로 각 대상에 대해 수행됩니다.
  • 대상이 연속된 Health Check에 실패하면 '비정상(Unhealthy)'으로 간주됩니다.
  • 비정상 대상으로는 트래픽이 전송되지 않습니다.
  • 비정상 대상이 다시 Health Check를 통과하면 '정상(Healthy)'으로 표시되고 트래픽을 받기 시작합니다.

4.1.1 Health Check 설정

  • Health Check 설정은 대상 그룹 수준에서 구성됩니다.
  • 주요 설정 항목은 다음과 같습니다:
    • Health Check 프로토콜 (HTTP, HTTPS, TCP 등)
    • Health Check 포트
    • Health Check 경로 (HTTP/HTTPS의 경우)
    • 정상 임계값 (연속 성공 횟수)
    • 비정상 임계값 (연속 실패 횟수)
    • 제한 시간
    • 간격 (Health Check 실행 주기)

4.1.2 대상 상태(Target Health Status)

  • ELB는 각 대상의 상태를 다음과 같이 분류합니다:
    • Initial: 대상이 대상 그룹에 등록되는 중입니다.
    • Healthy: 대상이 정상 상태이며 트래픽을 받을 수 있습니다.
    • Unhealthy: 대상이 비정상 상태이며 트래픽을 받지 않습니다.
    • Unused: 대상이 대상 그룹에 등록되어 있지 않습니다.
    • Draining: 대상이 대상 그룹에서 등록 해제되는 중입니다.
    • Unavailable: Health Check가 비활성화되어 있습니다.

4.1.3 비정상 대상 처리

  • 만약 대상 그룹 내의 모든 대상이 비정상(Unhealthy) 상태인 경우, ELB는 비정상 대상들 사이에서 요청을 분산합니다.

4.2 Slow Start Mode

  • Slow Start Mode는 새로 등록된 대상이 점진적으로 트래픽을 받을 수 있도록 하는 기능입니다.
  • 이 기능은 대상이 갑작스러운 트래픽 증가로 인해 과부하되는 것을 방지합니다.
  • Slow Start Mode의 주요 특징은 다음과 같습니다:
    • 기본적으로, 대상은 등록 즉시 전체 트래픽을 받습니다.
    • Slow Start Mode를 활성화하면, 정상 상태의 대상이 전체 트래픽을 받기 전에 "워밍업" 시간을 갖습니다.
    • 로드 밸런서는 대상에게 보내는 요청의 수를 선형적으로 증가시킵니다.
    • Slow Start Mode는 다음과 같은 경우에 종료됩니다:
      • 설정된 기간이 경과한 경우
      • 대상이 비정상 상태가 된 경우
    • Slow Start Mode를 비활성화하려면 Slow Start 기간 값을 0으로 설정합니다.

5 Target Group 생성 및 구성

5.1 생성 단계

  1. AWS 콘솔에서 EC2 서비스로 이동합니다.
  2. 좌측 메뉴에서 'Target Groups'을 선택합니다.
  3. 'Create target group' 버튼을 클릭합니다.
  4. 대상 유형, 프로토콜, 포트 등을 지정합니다.
  5. 상태 확인 설정을 구성합니다.
  6. 대상을 등록합니다 (EC2 인스턴스, IP 주소, Lambda 함수 등).

5.2 주요 설정 항목

  • 상태 확인 설정: 프로토콜, 경로, 간격, 임계값 등을 지정합니다.
  • 고정 세션 (Stickiness): 클라이언트 요청을 동일한 대상으로 라우팅합니다.
  • 등록된 대상에 대한 속성: 각 대상의 가중치나 포트를 개별적으로 설정할 수 있습니다.

6 다양한 대상 유형 활용 방안

서로 다른 유형의 대상을 함께 사용하고 싶다면, 다음과 같은 방법을 고려할 수 있습니다:

  • 여러 Target Group 사용:
    • 각 대상 유형별로 별도의 Target Group을 생성합니다.
    • ALB의 리스너 규칙을 사용하여 요청을 적절한 Target Group으로 라우팅합니다.
  • API Gateway + Lambda:
    • API Gateway를 사용하여 Lambda 함수와 EC2 인스턴스 기반 서비스를 함께 관리할 수 있습니다.
  • 서비스 메시 활용:
    • AWS App Mesh와 같은 서비스 메시를 사용하여 다양한 유형의 컴퓨팅 리소스를 통합 관리할 수 있습니다.

7 Target Group 활용 사례

  • 마이크로서비스 아키텍처: 각 서비스별로 별도의 Target Group을 생성하여 관리합니다.
  • 블루/그린 배포: 두 개의 Target Group을 사용하여 무중단 배포를 구현합니다.
  • A/B 테스팅: 서로 다른 버전의 애플리케이션을 각각의 Target Group으로 구성합니다.

8 모범 사례

  • 적절한 상태 확인 구성: 애플리케이션 특성에 맞는 상태 확인 설정을 합니다.
  • 대상 용량 관리: Auto Scaling과 함께 사용하여 트래픽 변화에 동적으로 대응합니다.
  • 로깅 및 모니터링: CloudWatch와 연동하여 Target Group의 성능과 상태를 지속적으로 모니터링합니다.

9 결론

  • ELB의 Target Group은 효율적인 트래픽 관리와 애플리케이션 확장성 확보에 핵심적인 역할을 합니다.
  • 단일 유형의 대상만 지원하지만, 여러 Target Group을 조합하여 다양한 아키텍처를 구현할 수 있습니다.
  • ALB의 리스너 규칙, API Gateway, 서비스 메시 등을 활용하면 EC2, Lambda, 컨테이너 등 다양한 컴퓨팅 리소스를 효과적으로 관리하고 라우팅할 수 있습니다.
  • Target Group을 효과적으로 활용하면 마이크로서비스 아키텍처, 무중단 배포, A/B 테스팅 등 현대적인 애플리케이션 운영 방식을 쉽게 구현할 수 있습니다.
  • AWS의 다른 서비스들과의 연계를 통해 더욱 강력하고 유연한 인프라 구성이 가능해집니다.