Amazon ECS Service Connect 영역 인지 라우팅

Amazon ECS Service Connect 영역 인지 라우팅

Amazon ECS Service Connect 영역 인지 라우팅(zone-aware routing)을 사용하면 트래픽이 클라이언트와 동일한 가용 영역(AZ) 내에 유지돼요. 이는 추가 인프라나 애플리케이션 코드 변경 없이 크로스-AZ 데이터 전송 비용과 지연 시간을 줄여 줘요.

출처: 문서

본문

Amazon ECS Service Connect 영역 인지 라우팅을 사용하면 트래픽이 클라이언트와 동일한 가용 영역(AZ) 내에 유지돼요. 이는 추가 인프라나 애플리케이션 코드 변경 없이 크로스-AZ 데이터 전송 비용과 지연 시간을 줄여 줘요. 엔드포인트가 AZ 전반에 균형을 이룰 때 트래픽의 80% 이상이 로컬에 유지되며, 엔드포인트가 스케일링됨에 따라 트래픽 가중치가 동적으로 조정되어 대상 서비스 전반에 균형 잡힌 부하를 유지해요. 영역 인지 라우팅은 Service Connect를 사용하는 모든 새 서비스와 기존 서비스에 대해 기본적으로 켜져 있어요.

영역 인지 라우팅 작동 방식 알고리즘은 Service Connect 프록시의 Envoy 영역 인지 라우팅 기능을 사용해 엔드포인트 지역성(locality)을 기반으로 트래픽을 라우팅해요.

  • 엔드포인트 검색 - 프록시는 대상 서비스의 사용 가능한 모든 엔드포인트와 그 AZ 배치를 검색해요.
  • 동일-AZ 우선순위 지정 - 프록시는 소스(클라이언트)와 대상(서버) AZ 간의 엔드포인트 분포 비율에 따라 트래픽의 몇 퍼센트가 동일한 AZ에 유지되는지 계산해요. 엔드포인트가 영역 전반에 고르게 분포되면 동일-AZ 트래픽은 일반적으로 80%를 초과해요.
  • 잔여 용량 라우팅 - 동일한 AZ에 유지할 수 없는 트래픽은 잔여 용량에 따라 다른 AZ로 분산돼요. 프록시는 각 영역의 잔여 용량을 계산하고 양의 잔여 용량이 있는 영역 간에 크로스-AZ 트래픽을 비례적으로 분할해요. 엔드포인트가 스케일 업/다운되면 프록시는 라우팅 가중치를 실시간으로 다시 계산해요.
  • 과부하 보호 및 폴백 - 단일 AZ의 과부하를 방지하기 위해 프록시는 대상 서비스에 AZ 수의 최소 2배에 해당하는 사용 가능한 엔드포인트를 요구해요. 3-AZ Region의 경우 최소 6개의 엔드포인트를 의미해요. 이 임계값 미만이면 영역 인지 라우팅이 비활성화되고 라운드 로빈 로드 밸런싱으로 트래픽이 균등하게 분산돼요. 엔드포인트 수가 임계값을 초과하면 라우팅이 자동으로 다시 활성화돼요. 동일한 AZ의 엔드포인트를 사용할 수 없게 되면 트래픽은 가용성을 유지하기 위해 다른 AZ로 재분배돼요.

Amazon EC2에서 영역 인지 라우팅 확인하기 Docker 런타임을 사용하는 Amazon EC2 컨테이너 인스턴스에서 Service Connect 에이전트 컨테이너 내부의 Envoy 프록시 통계를 검사해 영역 인지 라우팅이 활성화되었는지 확인할 수 있어요. 컨테이너 인스턴스는 ECS-optimized AMI 버전 20260323 이상을 사용해야 해요. 이 절차는 AWS Systems Manager Session Manager 호스트 액세스와 docker exec 가 필요해요. AWS Fargate 또는 containerd 를 사용하는 컨테이너 인스턴스의 경우 Amazon Virtual Private Cloud Flow Logs를 사용해 라우팅 동작을 확인해 주세요(Monitoring zone-aware routing 참고).

Docker로 Amazon EC2에서 영역 인지 라우팅 확인하기

  1. AWS Systems Manager Session Manager로 컨테이너 인스턴스에 연결합니다. instance-id 를 내 컨테이너 인스턴스 ID로 바꿉니다.
    aws ssm start-session --target instance-id
    
  2. Service Connect 에이전트 컨테이너에서 셸을 엽니다.
    sudo docker exec -it $(sudo docker ps --filter "name=ecs-service-connect" -q | head -1) /bin/sh
    
  3. Envoy 관리 인터페이스에서 영역 라우팅 통계를 조회합니다.
    curl --unix-socket /tmp/envoy_admin.sock http://unix/stats | grep "lb_zone"
    
  4. 출력을 확인합니다. 영역 인지 라우팅이 활성화된 정상 배포는 크로스-존 요청이 0으로 표시됩니다.
    cluster.my-service.lb_zone_routing_cross_zone: 0
    cluster.my-service.lb_zone_cluster_too_small: 0
    

다음 표는 주요 영역 라우팅 메트릭을 설명해요.

메트릭(Metric) 설명(Description)
lb_zone_routing_cross_zone 다른 AZ의 엔드포인트로 라우팅된 요청 수. 지속적으로 0이면 모든 트래픽이 동일한 AZ 내에 유지됨을 확인해 줘요.
lb_zone_cluster_too_small 엔드포인트 수가 최소 임계값 미만이어서 영역 인지 라우팅이 우회된 횟수. 초기 배포 중에는 0이 아닌 값이 예상되며 엔드포인트가 정상이 되면 해결돼요. 안정적인 배포는 0을 표시해요.

영역 인지 라우팅 모니터링하기 az-id 필드가 있는 Amazon Virtual Private Cloud Flow Logs를 사용해 네트워크 수준에서 트래픽 패턴을 관찰해 주세요. 이를 통해 각 플로우 레코드가 어떤 AZ에서 시작되고 종료되는지 확인하고 동일-AZ 대비 크로스-AZ 트래픽 비율을 측정할 수 있어요. 또한 AWS Cost Explorer를 사용해 영역 인지 라우팅을 활성화하기 위해 서비스를 재배포하기 전후의 크로스-AZ 데이터 전송 요금을 추적할 수 있어요.

더 알아보기 (Learn more)