프록시리스 gRPC 애플리케이션에 사용 시 Traffic Director의 제한사항

이 문서에서는 프록시리스 gRPC 애플리케이션에 사용 시 Traffic Director에 적용되는 제한사항을 설명합니다. 할당량 및 한도에 대한 자세한 내용은 할당량 및 한도 페이지를 참조하세요.

일반 제한사항

  • Google Cloud Console에서는 gRPC 프로토콜을 사용하여 백엔드 서비스와 라우팅 규칙 맵을 구성할 수 없습니다. Cloud Console에서 이러한 리소스는 읽기 전용으로 제공됩니다.

  • gRPC 1.30.0(최신 패치 적용) 이상은 현재 C++, 자바, Go, Python, PHP, Ruby, C# 언어로 프록시리스 gRPC 애플리케이션을 지원합니다.

  • 프록시리스 gRPC는 엔드포인트 검색, 라우팅, 부하 분산, 부하 보고를 지원합니다.

    • 일부 고급 트래픽 관리 기능을 지원하는 데 필요한 최소 gRPC 버전은 Traffic Director 기능을 참조하세요.
    • 지원되지 않는 고급 트래픽 관리 기능이 필요한 경우 일부 서비스에만 프록시리스 gRPC 서비스를 사용하도록 gRPC 클라이언트를 구성합니다. 사이드카 프록시를 사용하면 프록시리스 gRPC 서비스에서 아직 지원되지 않는 기능이 필요한 서버와 통신할 수 있습니다.
  • gRPC 버전 1.30.0에서는 라운드 로빈 부하 분산만 지원합니다. 다른 부하 분산 알고리즘은 지원되지 않습니다.

    • Traffic Director는 gRPC 클라이언트에 우선순위와 가중치가 정해진 지역 목록(인스턴스 그룹 또는 NEG 한 개)을 제공합니다. Traffic Director는 가장 가까운 가용 영역, 용량, 백엔드 서비스의 분산 모드를 기준으로 이 값을 계산합니다. 특정 요청의 경우 gRPC 클라이언트는 우선순위와 가중치를 기준으로 지역을 한 개 이상 선택하고 이러한 지역 내 백엔드로 라운드 로빈 부하 분산을 수행합니다.
  • 장애 조치: 현재 영역 용량이 50% 미만으로 떨어지면 한 영역(지역)에서 다른 영역으로 장애 조치가 시작됩니다. 이 임곗값을 구성할 수 없습니다.

  • 대상 gRPC 프록시 및 대상 gRPC 프록시를 참조하는 전달 규칙과 관련된 구성 명령어는 경우에 따라 최대 1분이 걸릴 수 있습니다.

URL 맵 제한사항

프록시리스 gRPC 서비스에서 지원되는 URL 맵 트래픽 관리 기능은 다음과 같습니다.

  • hostrules
  • hostRulespathMatcher에서 지원되는 기능
    • name
    • description
    • defaultService
    • defaultRouteAction
    • weightedBackendServices
      • backendService
      • weight
    • pathRules
    • service
    • routeAction
      • weightedBackendServices
        • backendService
        • weight
    • paths
    • routeRules
    • priority
    • description
    • matchRules
      • prefixMatch
      • fullPathMatch
      • regexMatch
      • headerMatches(모든 필드)
    • service
    • routeAction
      • weightedBackendServices
        • backendService
        • weight

프록시리스 gRPC 서비스를 사용하면 다음 URL 맵 제한사항이 적용됩니다.

  • 호스트 규칙의 와일드 카드 문자와 URL 맵의 기본 규칙(암시적으로 생성된 URL 맵의 * 호스트 규칙 포함)은 지원되지 않습니다. 호스트 일치가 수행되면 이러한 항목은 건너뜁니다.

  • 다음 기능은 지원되지 않습니다.

    • routeRulesignoreCasequeryParameterMatches
    • headerAction, urlRewrite, timeout, retryPolicy, requestMirrorPolicy, corsPolicy, faultInjectionPolicy, urlRedirect 라우팅 작업
    • URL 맵의 defaultService, defaultRouteAction, defaultUrlRedirect, headerAction은 프록시리스 gRPC 서비스에서 사용되지 않습니다. 프록시리스 gRPC 클라이언트가 서비스 이름을 조회할 때 일치하는 hostRule이 없으면 Traffic Director는 URL 맵의 기본 서비스나 작업을 사용하지 않고 이름 조회 오류를 반환합니다.
    • weightedBackendServicesheaderAction
  • URL 맵 헤더 일치 규칙에는 사용자가 지정한 바이너리가 아닌 커스텀 메타데이터content-type 헤더만 지원됩니다. :authority, :method, :path, :scheme, user-agent, accept-encoding, content-encoding, grpc-accept-encoding, grpc-encoding, grpc-previous-rpc-attempts, grpc-tags-bin, grpc-timeout, grpc-trace-bin과 같은 전송 수준 헤더를 헤더 일치 규칙에 사용할 수 없습니다.

  • 한 백엔드 서비스에서 다른 백엔드 서비스로 변경하기 위해 URL 맵 호스트 규칙을 업데이트하면 새 구성이 클라이언트에 푸시되는 동안 트래픽이 잠시 중단될 수 있습니다. 이러한 문제가 방지되도록 가중치가 적용된 백엔드 서비스로 트래픽 분할을 구성합니다. 그런 다음 트래픽을 이전 백엔드 서비스에서 새 백엔드 서비스로 천천히 전환합니다.

대상 gRPC 프록시 제한사항

대상 gRPC 프록시에서 URL 맵을 참조하는 경우 사이드카 프록시 또는 프록시리스 gRPC 서비스 사용 여부와 관계없이 다음 URL 맵 기능을 구성할 수 없습니다. 다음 HTTP 프로토콜별 기능이 gRPC 프로토콜에 적용되지 않기 때문입니다.

  • ignoreCase 일치 규칙
  • queryParameterMatches 일치 규칙
  • urlRewrite 라우팅 작업
  • urlRedirect 라우팅 작업
  • corsPolicy 작업

백엔드 서비스 제한사항

사이드카 프록시로 지원되는 프록시리스 gRPC 서비스에는 다음 백엔드 서비스 기능이 지원되지 않습니다.

  • sessionAffinity
  • affinityCookieTtlSec
  • consistentHash
  • circuitBreakers
  • outlierDetection