Batasan gRPC tanpa proxy

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

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

Batasan umum

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

  • Anda tidak dapat mengonfigurasi layanan backend dan peta aturan perutean dengan gRPC di Konsol Google Cloud. Untuk sumber daya ini, Konsol Google Cloud bersifat hanya baca.

  • gRPC tanpa proxy mendukung penemuan endpoint, perutean, load balancing, pemuatan pelaporan, dan berbagai fitur pengelolaan traffic lanjutan.

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

    • Untuk aplikasi gRPC yang memerlukan traffic lanjutan yang tidak didukung fitur pengelolaan, menggunakan DNS name resolver daripada xDS resolver dan men-deploy dengan proxy file bantuan yang didukung dengan Cloud Service Mesh. Di proxy gRPC target, tetapkan kolom validateForProxyless ke FALSE agar Anda dapat mengonfigurasi fitur yang belum didukung oleh gRPC, yang tersedia di Cloud Service Mesh dengan penggunaan proxy file bantuan.

  • gRPC tanpa proxy hanya mendukung load balancing hash round-robin dan ring kebijakan izin yang relevan. Yang lain kebijakan load balancing tidak didukung.

    • Cloud Service Mesh menyediakan daftar bobot yang diprioritaskan lokalitas—satu grup instance atau satu grup endpoint jaringan (NEG)—ke klien gRPC. Cloud Service Mesh menghitung daftar ini berdasarkan pada zona terdekat yang tersedia, kapasitasnya, dan mode penyeimbangan layanan backend.
    • Untuk permintaan tertentu, gRPC klien memilih satu atau lebih lokalitas berdasarkan prioritas dan bobotnya dan melakukan load balancing berbasis hash atau round-robin ke backend dalam lokalitas-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 merujuk ke proxy gRPC target mungkin memerlukan waktu hingga menit.

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

Batasan peta URL

Lalu lintas peta URL berikut fitur pengelolaan otomatis didukung dengan layanan gRPC tanpa proxy.

Fitur yang didukung dalam pathMatcher dari 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 {i>host<i} dan aturan {i>default<i} peta URL, termasuk aturan host * yang dibuat secara implisit dari peta URL, tidak didukung. Entri tersebut akan dilewati saat pencocokan host selesai.

  • Fitur berikut tidak didukung:

    • queryParameterMatches di routeRules
    • headerAction, urlRewrite, requestMirrorPolicy, corsPolicy, dan urlRedirect tindakan rute
    • Tindakan rute timeout; gunakan maxStreamDuration, bukan timeout
    • perTryTimeout di retryPolicy
    • retryConditions dalam 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 menampilkan error pencarian nama, menggunakan layanan atau tindakan default dari peta URL.
    • headerAction di weightedBackendServices
  • Dalam aturan pencocokan header peta URL, hanya file non-biner yang ditentukan pengguna metadata kustom dan header content-type didukung. Level transpor berikut header 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 berubah dari satu layanan backend menjadi yang lain, traffic mungkin akan menurun sesaat sementara konfigurasi baru didorong ke klien. Untuk menghindari batasan ini, konfigurasikan pemisahan traffic dengan layanan backend berbobot. Setelah mengonfigurasi pemisahan traffic, alihkan traffic secara perlahan dari backend lama ke layanan backend baru.

Batasan proxy gRPC target

Jika proxy gRPC target merujuk peta URL, Anda tidak dapat mengonfigurasi fitur peta URL berikut ini. Hal ini tetap berlaku meskipun Anda menggunakan file bantuan layanan gRPC tanpa proxy atau proxy karena protokol HTTP tidak berlaku untuk protokol gRPC:

  • queryParameterMatches aturan kecocokan
  • Tindakan rute urlRewrite
  • Tindakan rute urlRedirect
  • corsPolicy tindakan

Batasan layanan backend

Fitur layanan backend berikut tidak didukung dengan proxyless Layanan gRPC dengan proxy file bantuan:

  • localityLbPolicy kecuali LEAST_REQUEST (khusus 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 NACK konfigurasi dari Cloud Service Mesh saat nilai yang tidak didukung dikonfigurasi. Ini akan menyebabkan konfigurasi untuk semua layanan backend ditolak oleh klien karena protokol xDS memerlukan menolak semua sumber daya dalam respons tertentu, alih-alih dapat menolak hanya satu sumber daya dari respons. Hal ini akan menyebabkan klien untuk beralih ke status error sementara hingga konfigurasi diperbaiki. Tenggat terhadap batasan ini, Anda harus memastikan bahwa semua klien mendukung nilai sebelum mengkonfigurasi fitur untuk suatu layanan. Misalnya, jika Anda mengubah ROUND_ROBIN ke 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 aplikasi tanpa proxy Layanan gRPC dengan Cloud Service Mesh. Untuk fitur yang didukung, lihat berikut ini:

Batasan dengan Direktori Layanan

  • Direktori Layanan dan Mesh Layanan Cloud 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 dengan load-balancing-scheme=INTERNAL_SELF_MANAGED.

  • Layanan Direktori Layanan yang dirujuk oleh layanan binding dapat dihapus. Jika Direktori Layanan yang mendasarinya layanan tempat layanan backend dilampirkan, aplikasi yang menggunakan Cloud Service Mesh tidak dapat mengirim traffic ke layanan ini, oleh karena itu, permintaan gagal. Lihat Kemampuan observasi dan proses debug untuk mengetahui praktik terbaik.

  • Saat Anda mengikat layanan Direktori Layanan ke backend layanan backend, Anda tidak dapat mengonfigurasi health check pada layanan backend tersebut.

Langkah selanjutnya