Zone Aware Routing

Zone Aware Routing은 Kubernetes 가용 영역(Availability Zone)을 인식하여 트래픽을 최적화하는 기능입니다. 같은 AZ 내 통신을 우선하여 지연시간을 줄이고 크로스 AZ 데이터 전송 비용을 절감합니다.

목차

개요

Zone Aware Routing은 다음과 같은 이점을 제공합니다:

spinner

이점

  1. 지연시간 감소: 같은 AZ 내 통신으로 네트워크 지연 최소화

  2. 비용 절감: 크로스 AZ 데이터 전송 비용 절감

    • AWS: 크로스 AZ 전송 GB당 $0.01-0.02

  3. 가용성 향상: 장애 시 자동으로 다른 AZ로 장애조치

  4. 성능 최적화: 네트워크 대역폭 최적화

작동 원리

Locality Load Balancing 알고리즘

spinner

Locality 계층 구조

Istio는 다음과 같은 계층적 Locality를 사용합니다:

우선순위:

  1. Same Zone: 같은 Region, 같은 Zone

  2. Same Region: 같은 Region, 다른 Zone

  3. Different Region: 다른 Region

Pod에 AZ 레이블이 없어도 동작하는 원리

중요: Pod 자체에는 AZ 레이블이 필요하지 않습니다. Istio는 노드의 Topology 레이블을 읽어서 Pod의 Locality를 자동으로 파악합니다.

동작 방식

spinner

단계별 프로세스

1단계: Istiod가 Pod 정보 수집

2단계: Pod가 실행 중인 Node의 Topology 레이블 조회

3단계: EDS (Endpoint Discovery Service) 생성

Istiod는 Pod IP와 함께 Locality 정보를 EDS로 생성합니다:

4단계: Envoy가 Locality 기반 라우팅

Envoy는 받은 EDS 정보를 바탕으로 자신의 Locality와 비교하여 라우팅:

실제 확인 방법

왜 Pod 레이블이 필요 없는가?

전통적인 접근 (불필요):

Istio 접근 (자동):

이유:

  1. Pod는 이동하지 않음: Pod가 생성된 후 다른 노드로 이동하지 않음

  2. Node가 진실의 원천: Pod의 물리적 위치는 항상 Node가 결정

  3. 중복 제거: Pod마다 레이블을 추가할 필요 없이 Node 레이블만 관리

  4. 자동 동기화: Istiod가 항상 최신 Node 정보를 Kubernetes API에서 조회

AWS EKS의 자동 설정

AWS EKS는 노드 생성 시 자동으로 Topology 레이블을 추가합니다:

이러한 레이블은 다음 소스에서 자동으로 가져옵니다:

  • EC2 Instance Metadata: http://169.254.169.254/latest/meta-data/placement/availability-zone

  • AWS API: Node의 spec.providerID를 통해 EC2 정보 조회

기본 설정

1. Kubernetes 노드에 Topology 레이블 설정

AWS EKS는 자동으로 다음 레이블을 추가합니다:

확인 방법:

2. DestinationRule에서 Zone Aware Routing 활성화

3. 분산 비율 설정

고급 설정

장애조치 설정

Outlier Detection과 함께 사용

다중 리전 설정

AWS EKS에서 설정

1. 다중 AZ 노드 그룹 생성

2. Zone별로 파드 분산

3. Istio에서 Zone Aware Routing 활성화

실전 예제

예제 1: 마이크로서비스 체인

예제 2: 비용 최적화

예제 3: 고가용성

모니터링

Prometheus 메트릭

Grafana 대시보드

실시간 확인

문제 해결

Zone Aware Routing이 작동하지 않음

트래픽이 다른 Zone으로 가는 비율이 높음

EKS에서 Topology 레이블 누락

모범 사례

1. Zone별 균등 파드 배포

2. 비용 최적화

3. 고가용성 보장

4. StatefulSet은 단일 AZ 권장

참고 자료

마지막 업데이트