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 생성 단계
- AWS 콘솔에서 EC2 서비스로 이동합니다.
- 좌측 메뉴에서 'Target Groups'을 선택합니다.
- 'Create target group' 버튼을 클릭합니다.
- 대상 유형, 프로토콜, 포트 등을 지정합니다.
- 상태 확인 설정을 구성합니다.
- 대상을 등록합니다 (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의 다른 서비스들과의 연계를 통해 더욱 강력하고 유연한 인프라 구성이 가능해집니다.