Traffic Director 개요

개방형 서비스 메시용 Traffic Director

마이크로서비스 및 최신 애플리케이션을 배포하는 데 서비스 메시가 점점 더 많이 사용되고 있습니다. 서비스 메시에서는 데이터 영역이 Envoy 등의 서비스 프록시를 사용하여 트래픽 흐름을 제어하는 한편 서비스 메시 제어 영역은 사이드카 프록시에 정책, 구성, 인텔리전스를 제공합니다.

제어 영역으로 사용된 서비스 메시(확대하려면 클릭)
제어 영역으로 사용된 서비스 메시(확대하려면 클릭)

서비스 메시를 사용하면 서비스를 실행하기 위해 작성하고 유지해야 하는 네트워킹 코드의 양이 줄어듭니다. 서비스 프록시가 비즈니스 로직과 함께 네트워킹 기능을 대신 수행합니다. 서비스 프록시를 관리하는 서비스 제어 영역이 필요합니다.

Traffic Director는 서비스 메시를 위한 Google Cloud의 완전 관리형 트래픽 제어 영역입니다. Traffic Director를 사용하면 여러 리전의 클러스터 및 VM 인스턴스 간에 글로벌 부하 분산을 손쉽게 배포하고, 사이드카 프록시에서 상태 확인을 오프로드할 수 있습니다. Traffic Director는 공개 표준 API(xDS v2)를 사용하여 데이터 영역의 사이드카 프록시와 통신하므로 선택한 서비스 메시 데이터 영역을 사용할 수 있습니다.

마이크로서비스 환경에서 제어 영역으로 사용된 Traffic Director(확대하려면 클릭)
마이크로서비스 환경에서 제어 영역으로 사용된 Traffic Director(확대하려면 클릭)

Traffic Director의 기능

Traffic Director는 다음과 같은 기능을 제공합니다.

  • Envoy와 같은 개방형 표준(xDS v2) 사이드카 프록시를 위한 Google Cloud(Google Cloud) 관리형 트래픽 관리 제어 영역을 제공합니다.
  • 관리형 인스턴스 또는 비관리형 인스턴스 그룹네트워크 엔드포인트 그룹을 사용하는 컨테이너 인스턴스에서 실행되는 Traffic Director 관리형 VM 서비스 인스턴스를 배포할 수 있습니다.
  • 트래픽 관리
  • 엔드포인트의 서비스 검색
  • 글로벌 부하 분산. 단일 서비스 IP 주소를 사용하여 여러 리전에 서비스를 배포할 수 있기 때문
  • 수요 중심 자동 확장
  • 요청 라우팅 및 트래픽 정책
  • 대규모 상태 확인
  • 관찰 기능

Traffic Director와 Istio

Istio는 마이크로서비스를 보호하고 연결하고 모니터링하는 제어 영역을 제공하며 트래픽 관리를 위한 Pilot, 관찰을 위한 Mixer, 서비스 간 보안을 위한 Istio Security라는 세 가지 요소로 구성됩니다.

Traffic Director는 Google Cloud 관리형 Pilot과 함께 글로벌 부하 분산, 중앙 집중식 상태 확인 등의 추가적인 기능을 제공합니다. 그러나 Istio API를 사용하면 Traffic Director를 구성할 수 없습니다. 구성에는 GCP API를 사용할 수 있습니다. Traffic Director와 Pilot 둘 다 공개 표준 API(xDS v2)를 사용하여 사이드카 프록시와 통신합니다.

Traffic Director를 사용한 글로벌 부하 분산

Traffic Director는 사이드카 프록시가 포함된 내부의 마이크로서비스에 글로벌 부하 분산을 제공합니다. 여러 리전의 인스턴스로 내부 마이크로서비스(사이드카 프록시 기반)를 배포할 수 있습니다. Traffic Director는 사이드카 프록시에 상태, 라우팅, 백엔드 정보를 제공하므로 사이드카 프록시는 서비스의 여러 클라우드 리전에 있는 애플리케이션 인스턴스로 트래픽을 적절히 라우팅할 수 있습니다.

다음 그림에서 사용자 트래픽은 외부 글로벌 부하 분산기를 통해 Google Cloud 배포에 들어갑니다. 외부 부하 분산기는 최종 사용자의 위치에 따라 us-central1 또는 asia-southeast1의 프런트엔드 마이크로서비스에 트래픽을 분산합니다.

내부 배포에는 Front End, Shopping Cart, Payments라는 세 개의 글로벌 마이크로서비스가 있습니다. 각 서비스는 us-central1asia-southeast1의 두 리전에 있는 관리형 인스턴스 그룹에서 실행됩니다. Traffic Director가 사용하는 글로벌 부하 분산 알고리즘은 캘리포니아의 사용자가 보내는 트래픽은 us-central1에 배포된 마이크로서비스로, 싱가포르의 사용자가 보내는 요청은 asia-southeast1의 마이크로서비스로 전달됩니다.

들어오는 사용자 요청은 Front End 마이크로서비스로 라우팅됩니다. Front End 호스트에 설치된 서비스 프록시는 트래픽을 Shopping Cart로 전달하고 Shopping Cart 호스트에 설치된 사이드카 프록시는 트래픽을 Payments 마이크로서비스로 전달합니다.

글로벌 부하 분산 배포의 Traffic Director(확대하려면 클릭)
글로벌 부하 분산 배포의 Traffic Director(확대하려면 클릭)

다음 예시에서 Traffic Director가 us-central1에서 Shopping Cart 마이크로서비스를 실행하는 VM이 비정상임을 나타내는 상태 확인 결과를 수신할 경우 Traffic Director는 프런트엔드 마이크로서비스에 대해 사이드카 프록시에 asia-southeast1에서 실행되는 Shopping Cart 마이크로서비스로 트래픽을 대체 작동하도록 지시합니다. 자동 확장은 Google Cloud의 트래픽 관리와 통합되므로 Traffic Director는 asia-southeast1의 관리형 인스턴스 그룹에 추가 트래픽을 알리고 관리형 인스턴스 그룹의 크기를 늘립니다.

Traffic Director는 Payments 마이크로서비스의 모든 백엔드가 정상임을 감지합니다. 따라서 Traffic Director는 Shopping Cart의 Envoy 프록시가 트래픽의 일부를 고객이 설정한 용량까지 asia-southeast1으로 보내고 나머지는 us-central1로 오버플로하도록 지시합니다.

글로벌 부하 분산 배포의 Traffic Director 장애 조치(확대하려면 클릭)
글로벌 부하 분산 배포의 Traffic Director 장애 조치(확대하려면 클릭)

Traffic Director의 부하 분산 구성요소

Traffic Director 설정 중에는 여러 부하 분산 구성요소를 구성합니다.

  • VIP 주소, 대상 프록시, URL 맵이 포함된 글로벌 전달 규칙. 이러한 모든 기능은 Traffic Director의 트래픽 라우팅 메커니즘의 일부입니다. 대상 프록시는 대상 HTTP 프록시여야 합니다.
  • 구성값이 포함된 백엔드 서비스
  • 배포에서 VM 및 pod에 대한 상태 확인을 제공하는 상태 확인

다음 다이어그램은 Compute Engine VM 또는 Google Kubernetes Engine pod, 구성요소, Traffic Director 배포의 트래픽 흐름에서 실행되는 애플리케이션을 보여줍니다.

구성할 Traffic Director 리소스(확대하려면 클릭)
구성할 Traffic Director 리소스(확대하려면 클릭)

이 다이어그램은 Traffic Director와 트래픽 라우팅을 결정하는 데 사용하는 Google Cloud 부하 분산 리소스를 보여줍니다. xDS API 호환 사이드카 프록시(Envoy 등)는 클라이언트 VM 인스턴스 또는 Kubernetes pod에서 실행됩니다. Traffic Director는 제어 영역의 역할을 하면서 xDS API를 사용하여 각 프록시와 직접 통신합니다. 데이터 영역에서 애플리케이션은 Google Cloud 전달 규칙에 구성된 VIP 주소로 트래픽을 전송합니다. 사이드카 프록시는 트래픽을 가로채서 해당 백엔드로 리디렉션합니다. 다음 섹션에는 트래픽 가로채기 및 부하 분산에 대한 자세한 정보가 포함되어 있습니다.

서비스 검색

Traffic Director는 VM 및 컨테이너 엔드포인트 모두에 대한 서비스 검색을 제공합니다. 서비스 엔드포인트를 VM의 관리형 인스턴스 그룹(MIG) 또는 컨테이너의 네트워크 엔드포인트 그룹(NEG)에 추가할 수 있습니다. 이러한 서비스 엔드포인트는 서비스 이름과 연결됩니다. Traffic Director는 서비스의 서비스 검색을 제공합니다. 이를 위해 호스트 이름을 클라이언트에서 대상 서비스 이름으로 매핑하고 서비스 이름에 대해 부하 분산 및 상태 확인된 엔드포인트를 제공합니다.

Traffic Director 서비스 검색(확대하려면 클릭)
Traffic Director 서비스 검색(확대하려면 클릭)

위의 예시에서 Traffic Director는 MIG-1의 정상 엔드포인트 2개와 MIG-2의 정상 엔드포인트 3개를 서비스 shopping-cart에 대해 반환합니다. MIG 또는 NEG에 엔드포인트를 추가하고 Traffic Director를 설정하는 것 외에 Traffic Director로 서비스 검색을 사용 설정하기 위해 추가 구성이 필요하지 않습니다.

Traffic Director에서 사이드카 프록시 트래픽 가로채기가 작동하는 방법

Traffic Director는 사이드카 프록시 모델을 사용합니다. 이 모델에서 애플리케이션이 대상으로 트래픽을 전송하면 애플리케이션이 실행 중인 호스트의 사이드카 프록시가 트래픽을 가로채게 됩니다. 사이드카 프록시는 트래픽 부하를 분산하는 방법을 결정한 다음 트래픽을 대상으로 전송합니다.

Traffic Director가 올바르게 구성되었다고 가정한 다음 다이어그램에서 Envoy는 사이드카 프록시입니다. 사이드카 프록시는 애플리케이션과 동일한 호스트에서 실행됩니다.

Web이라는 샘플 서비스는 VIP 10.0.0.1인 포트 TCP:80에서 구성되며, 여기에서 Traffic Director가 검색하고 부하를 분산할 수 있습니다. Traffic Director는 VIP와 포트를 제공하는 전달 규칙 구성을 통해 설정을 탐색합니다. 서비스 Web의 백엔드가 구성되어 작동하지만, 다이어그램에 있는 Compute Engine VM 호스트 외부에 있습니다.

Traffic Director는 호스트에서 서비스 Web로 가는 트래픽에 대한 최적의 백엔드를 192.168.0.1, TCP:8080으로 결정합니다.

Traffic Director 호스트 네트워킹(확대하려면 클릭)
Traffic Director 호스트 네트워킹(확대하려면 클릭)

다이어그램의 트래픽 흐름은 다음과 같습니다.

  1. 애플리케이션이 서비스 Web으로 트래픽을 보내면 IP 주소 10.0.0.1, TCP:80으로 확인됩니다.
  2. 호스트의 넷필터는 10.0.0.1 TCP:80으로 지정된 트래픽이 IP 주소 127.0.0.1 TCP:15001로 리디렉션되도록 구성됩니다.
  3. 트래픽이 Envoy 프록시의 가로채기 포트인 127.0.0.1:15001로 리디렉션됩니다.
  4. 127.0.0.1:15001의 Envoy 프록시 가로채기 리스너는 트래픽을 수신하고 요청의 원래 대상(10.0.0.1:80)을 조회합니다. 이렇게 하면 Traffic Director에서 프로그래밍한 대로 192.168.0.1:8080이 최적의 백엔드로 선택됩니다.
  5. Envoy는 192.168.0.1:8080를 사용하여 네트워크를 통해 연결을 설정하고 연결이 종료될 때까지 애플리케이션과 이 백엔드 간의 HTTP 트래픽을 프록시합니다.

한도

모든 기존 전달 규칙, 백엔드 서비스, 기타 부하 분산의 프로젝트별 한도 및 할당량이 Traffic Director 배포에 적용됩니다.

제한사항

  • Traffic Director는 Google Cloud APIs만 지원합니다. Traffic Director는 Istio API를 지원하지 않습니다.
  • Traffic Director는 HTTP(HTTP/1.1 또는 HTTP/2) 및 gRPC 트래픽에서만 지원됩니다.
  • Traffic Director는 공유 VPC를 지원합니다. 다음에 유의하세요.
    • 전달 규칙과 관련 대상 프록시, URL 맵, 백엔드 서비스, 백엔드는 호스트 또는 서비스 프로젝트일 수 있는 단일 프로젝트에 있어야 합니다. 여러 서비스 프로젝트가 있는 경우 각 서비스 프로젝트에는 이러한 리소스 집합이 있을 수 있습니다.
    • 기본적으로 공유 VPC 네트워크를 참조하는 전달 규칙은 이러한 프록시가 해당 부트스트랩/sidecar.env 파일에 공유 VPC 파일을 지정하는 한 호스트 프로젝트에 연결된 호스트 및 서비스 프로젝트의 모든 Envoy 프록시에 공지됩니다. 구성 필터링을 사용하여 이 동작을 조정할 수 있습니다.
    • Traffic Director는 공유 VPC 네트워크와 연결된 부하 분산 스키마 INTERNAL_SELF_MANAGED가 있는 전달 규칙이 1개 이상 있는 프로젝트의 서비스 계정에서만 액세스할 수 있습니다.
  • Traffic Director는 VPC 네트워크 피어링을 지원하지 않습니다.
  • Traffic Director는 전달 규칙에 지정된 이름인 VPC 네트워크 내의 클라이언트에 대해서만 부하 분산을 지원합니다.
  • 모든 Traffic Director 백엔드 VM 또는 엔드포인트는 클라이언트와 동일한 VPC 네트워크에 있어야 합니다.
  • Knative 또는 Google Cloud 서버리스 컴퓨팅에서 실행되는 서비스에는 Traffic Director를 사용할 수 없습니다.
  • Traffic Director를 사용하여 Google Cloud에서 실행되는 서비스만 연결할 수 있습니다.
  • 이번 출시 버전에서는 Traffic Director로만 Google Cloud 엔드포인트를 구성할 수 있습니다. 온프렘 또는 다른 클라우드의 엔드포인트는 지원되지 않습니다.
  • 이번 출시 버전에서는 Traffic Director로 NEG의 Google Cloud 백엔드 VM 또는 엔드포인트만 구성할 수 있습니다. 온프레미스 또는 다른 클라우드에서는 VM 또는 엔드포인트를 지원하지 않습니다.
  • 이 문서에서는 Envoy 프록시에 대해 설명하지만, Traffic Director에 모든 공개 표준 API (xDS v2) 프록시를 사용할 수 있습니다. 그러나 Google은 Envoy 프록시로만 Traffic Director를 테스트했습니다.
  • Traffic Director와 함께 작업하려면 Envoy 버전이 1.9.1 이상이어야 합니다.
  • 가장 최신의 Envoy 버전을 사용하여 알려진 모든 보안 취약점을 완화하는 것이 좋습니다.
  • Envoy 보안 권장사항에 대한 자세한 내용은 Envoy 보안 권장사항을 참조하세요.

다음 단계