프록시리스 gRPC 제한사항
이 문서에서는 프록시리스 gRPC 애플리케이션과 함께 사용하는 Cloud Service Mesh에 적용되는 제한사항을 설명합니다. 한도에 대한 자세한 내용은 할당량 및 한도를 참조하세요.
전달 규칙, URL 맵, 대상 프록시에 대한 제한사항은 Google Cloud 부하 분산 API를 사용하는 Cloud Service Mesh에만 적용됩니다.
일반 제한
프록시리스 gRPC 애플리케이션을 사용하는 Cloud Service Mesh의 제한사항은 다음과 같습니다.
Google Cloud Console에서는 gRPC 프로토콜을 사용하여 백엔드 서비스와 라우팅 규칙 맵을 구성할 수 없습니다. Google Cloud 콘솔에서 이러한 리소스는 읽기 전용으로 제공됩니다.
프록시리스 gRPC는 엔드포인트 검색, 라우팅, 부하 분산, 부하 보고 및 여러 고급 트래픽 관리 기능을 지원합니다.
일부 고급 트래픽 관리 기능을 지원하는 데 필요한 최소 gRPC 버전은 지원되는 gRPC 버전 및 언어를 참조하세요.
지원되지 않는 고급 트래픽 관리 기능이 필요한 gRPC 애플리케이션의 경우 xDS 리졸버 대신 DNS 이름 리졸버를 사용하고 Cloud Service Mesh에서 지원되는 사이드카 프록시와 함께 배포하세요. 대상 gRPC 프록시에서
validateForProxyless
필드를FALSE
로 설정하여 아직 gRPC에서 지원되지 않지만 Cloud Service Mesh에서 사이드카 프록시를 사용하면 사용할 수 있는 기능을 구성할 수 있습니다.
프록시리스 gRPC는 라운드 로빈 및 링 해시 부하 분산 정책만 지원합니다. 다른 부하 분산 정책은 지원되지 않습니다.
- Cloud Service Mesh는 gRPC 클라이언트에 우선순위와 가중치가 정해진 지역 목록(인스턴스 그룹 또는 네트워크 엔드포인트 그룹(NEG) 한 개)을 제공합니다. Cloud Service Mesh는 가장 가까운 가용 영역, 용량, 백엔드 서비스의 분산 모드를 기준으로 이 목록을 계산합니다.
- 특정 요청의 경우 gRPC 클라이언트는 우선순위와 가중치를 기준으로 지역을 한 개 이상 선택하고 이러한 지역 내 백엔드로 라운드 로빈 또는 링 해시 기반 부하 분산을 수행합니다.
현재 영역 용량이 50% 미만으로 떨어지면 한 영역(지역)에서 다른 영역으로 장애 조치가 시작됩니다. 이 임곗값은 구성할 수 없습니다.
대상 gRPC 프록시 및 대상 gRPC 프록시를 참조하는 전달 규칙과 관련된 구성 명령어는 경우에 따라 최대 1분이 걸릴 수 있습니다.
하이브리드 연결 NEG(
NON_GCP_PRIVATE_IP_PORT
NEG)는 프록시리스 gRPC 클라이언트에서 지원되지 않습니다.
URL 맵 제한사항
프록시리스 gRPC 서비스에서 지원되는 URL 맵 트래픽 관리 기능은 다음과 같습니다.
hostRules
의 pathMatcher
에서 지원되는 기능은 다음과 같습니다.
pathMatcher
name
description
defaultService
defaultRouteAction
weightedBackendServices
backendService
weight
retryPolicy
retryConditions
numRetries
faultInjectionPolicy
maxStreamDuration
pathRules
service
routeAction
weightedBackendServices
backendService
weight
retryPolicy
retryConditions
numRetries
faultInjectionPolicy
maxStreamDuration
paths
routeRules
priority
description
matchRules
prefixMatch
fullPathMatch
headerMatches
metadataFilters
service
routeAction
weightedBackendServices
backendService
weight
retryPolicy
retryConditions
numRetries
faultInjectionPolicy
maxStreamDuration
프록시리스 gRPC 서비스를 사용하면 다음 URL 맵 제한사항이 적용됩니다.
호스트 규칙의 와일드 카드 문자와 URL 맵의 기본 규칙(암시적으로 생성된 URL 맵의
*
호스트 규칙 포함)은 지원되지 않습니다. 호스트 일치가 수행되면 이러한 항목은 건너뜁니다.다음 기능은 지원되지 않습니다.
routeRules
의queryParameterMatches
headerAction
,urlRewrite
,requestMirrorPolicy
,corsPolicy
,urlRedirect
라우팅 작업timeout
라우팅 작업:timeout
대신maxStreamDuration
사용retryPolicy
의perTryTimeout
retryPolicy
의retryConditions
(cancelled
,deadline-exceeded
,internal
,resource-exhausted
,unavailable
의 조건 하나 이상을 제외)- URL 맵의
defaultService
,defaultRouteAction
,defaultUrlRedirect
,headerAction
은 프록시리스 gRPC 서비스에서 사용되지 않습니다. 프록시리스 gRPC 클라이언트가 서비스 이름을 조회할 때 일치하는 호스트 규칙이 없으면 Cloud Service Mesh는 URL 맵의 기본 서비스나 작업을 사용하지 않고 이름 조회 오류를 반환합니다. weightedBackendServices
의headerAction
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 맵을 참조할 때는 다음 URL 맵 기능을 구성할 수 없습니다. 이것은 이러한 HTTP 프로토콜 관련 기능이 gRPC 프로토콜에 적용되지 않기 때문에 사이드카 프록시 또는 프록시리스 gRPC 서비스를 사용하는지 여부와 관계가 없습니다.
queryParameterMatches
일치 규칙urlRewrite
라우팅 작업urlRedirect
라우팅 작업corsPolicy
작업
백엔드 서비스 제한사항
사이드카 프록시가 있는 프록시리스 gRPC 서비스에는 다음 백엔드 서비스 기능이 지원되지 않습니다.
LEAST_REQUEST
(Java 클라이언트만 해당),ROUND_ROBIN
,RING_HASH
를 제외한localityLbPolicy
sessionAffinity
(HEADER_FIELD
및NONE
제외)consistentHash
(httpHeaderName
및minimumRingSize
필드 제외)affinityCookieTtlSec
timeoutSec
(maxStreamDuration
를 대신 사용)circuitBreakers
(maxRequests
필드 제외)
gRPC 클라이언트는 지원되지 않는 값이 구성되면 Cloud Service Mesh의 구성을 NACK로 응답합니다. 이렇게 하면 xDS 프로토콜은 응답에서 개별 리소스만 거부할 수 있는 대신 특정 응답에 있는 모든 리소스를 거부해야 하므로 클라이언트가 모든 백엔드 서비스에 대한 구성을 거부합니다. 그러면 구성이 수정될 때까지 클라이언트 채널이 일시적인 오류 상태가 됩니다. 이러한 제한사항으로 인해 서비스의 기능을 구성하기 전에 모든 클라이언트가 필수 값을 지원하는지 확인해야 합니다. 예를 들어 ROUND_ROBIN
정책을 RING_HASH
로 변경하는 경우 모든 클라이언트가 RING_HASH
를 지원하는 버전으로 업그레이드되어야 합니다.
고급 트래픽 관리 제한사항
Cloud Service Mesh를 사용하는 프록시리스 gRPC 서비스에 대한 일부 고급 트래픽 관리 기능을 구성할 수 없습니다. 지원되는 기능은 다음을 참조하세요.
서비스 디렉터리 제한사항
- 서비스 디렉터리 및 Cloud Service Mesh는 클라이언트의 네트워크 도달성을 보장하지 않습니다.
백엔드 서비스는 다음 중 하나만 참조할 수 있습니다.
- 관리형 인스턴스 그룹 또는 비관리형 인스턴스 그룹
- 네트워크 엔드포인트 그룹
- 서비스 결합
서비스 디렉터리 서비스는
load-balancing-scheme=INTERNAL_SELF_MANAGED
가 있는 전역 백엔드 서비스에서만 사용할 수 있습니다.서비스 결합에서 참조되는 서비스 디렉터리 서비스는 삭제할 수 있습니다. 백엔드 서비스가 연결된 기본 서비스 디렉터리 서비스가 삭제되면 Cloud Service Mesh를 사용하는 애플리케이션이 이 서비스에 트래픽을 전송할 수 없으므로, 요청이 실패합니다. 권장사항은 관측 가능성 및 디버깅을 참조하세요.
서비스 디렉터리 서비스를 백엔드 서비스에 바인딩할 때 백엔드 서비스에 상태 점검을 구성할 수 없습니다.
다음 단계
- 고급 트래픽 관리 제한사항을 포함하여 Cloud Service Mesh에 적용되는 제한사항에 대한 자세한 내용은 Cloud Service Mesh 제한사항을 참고하세요.
- 프록시리스 gRPC 서비스의 사용 사례 및 아키텍처 패턴을 찾으려면 프록시리스 gRPC 서비스 개요를 참조하세요.