Batasan gRPC tanpa proxy

Dokumen ini menjelaskan batasan yang berlaku untuk Cloud Service Mesh dengan aplikasi gRPC tanpa proxy. Untuk mengetahui informasi tentang batas, lihat Kuota dan batas.

Batasan pada aturan penerusan, peta URL, dan proxy target hanya berlaku untuk Cloud Service Mesh dengan API load balancing Google Cloud.

Batasan umum

Batasan Cloud Service Mesh dengan aplikasi gRPC tanpa proxy meliputi hal berikut:

  • Anda tidak dapat mengonfigurasi layanan backend dan peta aturan pemilihan rute dengan protokol gRPC di Konsol Google Cloud. Untuk resource ini, konsol Google Cloud bersifat hanya baca.

  • gRPC tanpa proxy mendukung penemuan endpoint, pemilihan rute, load balancing, pelaporan beban, dan banyak fitur pengelolaan traffic lanjutan.

    • Untuk mengetahui versi gRPC minimum yang diperlukan guna mendukung beberapa fitur pengelolaan traffic lanjutan, lihat Versi dan bahasa gRPC yang didukung.

    • Untuk aplikasi gRPC yang memerlukan fitur pengelolaan traffic lanjutan yang tidak didukung, gunakan resolver nama DNS, bukan resolver xDS, dan deploy dengan proxy sidecar yang didukung dengan Cloud Service Mesh. Di proxy gRPC target, tetapkan kolom validateForProxyless ke FALSE sehingga Anda dapat mengonfigurasi fitur yang belum didukung oleh gRPC, tetapi tersedia di Cloud Service Mesh dengan penggunaan proxy sidecar.

  • gRPC tanpa proxy hanya mendukung kebijakan load balancing round-robin dan ring hash. Kebijakan load balancing lainnya tidak didukung.

    • Cloud Service Mesh menyediakan daftar lokalitas berbobot yang diprioritaskan—satu grup instance atau satu grup endpoint jaringan (NEG)—ke klien gRPC. Cloud Service Mesh menghitung daftar ini berdasarkan zona terdekat yang tersedia, kapasitasnya, dan mode penyeimbangan layanan backend.
    • Untuk permintaan tertentu, klien gRPC memilih satu atau beberapa lokalitas berdasarkan prioritas dan bobot, serta melakukan load balancing berbasis round-robin atau ring hash ke backend dalam lokalitas tersebut.
  • Failover dari satu zona (lokalitas) ke zona lain dimulai saat kapasitas zona saat ini turun di bawah 50%. Anda tidak dapat mengonfigurasi nilai minimum ini.

  • Dalam beberapa kasus, perintah konfigurasi yang terkait dengan proxy gRPC target dan aturan penerusan yang mereferensikan proxy gRPC target mungkin memerlukan waktu hingga semenit.

  • NEG konektivitas hybrid (NEG NON_GCP_PRIVATE_IP_PORT) tidak didukung dengan klien gRPC tanpa proxy.

Batasan peta URL

Fitur pengelolaan traffic peta URL berikut didukung dengan layanan gRPC tanpa proxy.

Fitur yang didukung di pathMatcher hostRules:

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

Batasan peta URL berikut berlaku saat Anda menggunakan layanan gRPC tanpa proxy:

  • Karakter pengganti dalam aturan host dan aturan default peta URL, termasuk aturan host * yang dibuat secara implisit dari peta URL, tidak didukung. Entri tersebut akan dilewati saat pencocokan host dilakukan.

  • Fitur berikut tidak didukung:

    • queryParameterMatches di routeRules
    • Tindakan rute headerAction, urlRewrite, requestMirrorPolicy, corsPolicy, dan urlRedirect
    • Tindakan rute timeout; gunakan maxStreamDuration, bukan timeout
    • perTryTimeout di retryPolicy
    • retryConditions di retryPolicy kecuali satu atau beberapa kondisi cancelled, deadline-exceeded, internal, resource-exhausted, dan unavailable
    • defaultService, defaultRouteAction, defaultUrlRedirect, dan headerAction peta URL tidak digunakan oleh layanan gRPC tanpa proxy. Jika aturan host yang cocok tidak ditemukan saat klien gRPC tanpa proxy mencari nama layanan, Cloud Service Mesh akan menampilkan error pencarian nama, bukan menggunakan layanan atau tindakan default peta URL.
    • headerAction di weightedBackendServices
  • Dalam aturan kecocokan header peta URL, hanya metadata kustom non-biner yang ditentukan pengguna dan header content-type yang didukung. Header tingkat transpor berikut tidak dapat digunakan dalam aturan pencocokan header: :authority, :method, :path, :scheme, user-agent, accept-encoding, content-encoding, grpc-accept-encoding, grpc-encoding, grpc-previous-rpc-attempts, grpc-tags-bin, grpc-timeout, dan grpc-trace-bin.

  • Saat Anda memperbarui aturan host peta URL untuk beralih dari satu layanan backend ke layanan backend lainnya, traffic mungkin akan dihentikan untuk sementara saat konfigurasi baru didorong ke klien. Untuk menghindari batasan ini, konfigurasikan pembagian traffic dengan layanan backend berbobot. Setelah mengonfigurasi pembagian traffic, alihkan traffic secara perlahan dari layanan backend lama ke layanan backend baru.

Batasan proxy gRPC target

Saat proxy gRPC target mereferensikan peta URL, Anda tidak dapat mengonfigurasi fitur peta URL berikut. Hal ini berlaku baik Anda menggunakan proxy samping atau layanan gRPC tanpa proxy karena fitur khusus protokol HTTP ini tidak berlaku untuk protokol gRPC:

  • Aturan pencocokan queryParameterMatches
  • urlRewrite tindakan rute
  • urlRedirect tindakan rute
  • Tindakan corsPolicy

Batasan layanan backend

Fitur layanan backend berikut tidak didukung dengan layanan gRPC tanpa proxy dengan proxy sidecar:

  • localityLbPolicy kecuali LEAST_REQUEST (hanya dengan klien Java), ROUND_ROBIN, dan RING_HASH
  • sessionAffinity kecuali HEADER_FIELD dan NONE
  • consistentHash kecuali kolom httpHeaderName dan minimumRingSize
  • affinityCookieTtlSec
  • timeoutSec; gunakan maxStreamDuration sebagai gantinya
  • circuitBreakers kecuali kolom maxRequests

Perhatikan bahwa klien gRPC akan menolak konfigurasi dari Cloud Service Mesh saat nilai yang tidak didukung dikonfigurasi. Hal ini akan menyebabkan konfigurasi untuk semua layanan backend ditolak oleh klien karena protokol xDS mengharuskan menolak semua resource dalam respons tertentu, bukan hanya dapat menolak resource individual dari respons. Hal ini akan menyebabkan saluran klien masuk ke status error sementara hingga konfigurasi diperbaiki. Karena batasan ini, Anda harus memastikan bahwa semua klien mendukung nilai yang diperlukan sebelum mengonfigurasi fitur untuk layanan. Misalnya, jika Anda mengubah kebijakan ROUND_ROBIN menjadi RING_HASH, Anda harus memastikan bahwa semua klien diupgrade ke versi yang mendukung RING_HASH.

Batasan pengelolaan traffic lanjutan

Anda tidak dapat mengonfigurasi beberapa fitur pengelolaan traffic lanjutan untuk layanan gRPC tanpa proxy dengan Cloud Service Mesh. Untuk fitur yang didukung, lihat hal berikut:

Batasan dengan Direktori Layanan

  • Service Directory dan Cloud Service Mesh tidak menjamin keterjangkauan jaringan untuk klien.
  • Layanan backend hanya dapat mereferensikan salah satu dari hal berikut:

    • Grup instance terkelola atau grup instance tidak terkelola
    • Grup endpoint jaringan
    • Pengikatan layanan
  • Layanan Direktori Layanan hanya dapat digunakan dengan layanan backend global dengan load-balancing-scheme=INTERNAL_SELF_MANAGED.

  • Layanan Direktori Layanan yang direferensikan oleh binding layanan dapat dihapus. Jika layanan Direktori Layanan dasar yang dilampirkan ke layanan backend dihapus, aplikasi yang menggunakan Cloud Service Mesh tidak dapat mengirim traffic ke layanan ini, sehingga permintaan akan gagal. Lihat Observabilitas dan proses debug untuk mengetahui praktik terbaik.

  • Saat mengikat layanan Service Directory ke layanan backend, Anda tidak dapat mengonfigurasi health check di layanan backend tersebut.

Langkah selanjutnya