Service Mesh (ASM) memungkinkan Anda mengonfigurasi pemutusan sirkuit secara deklaratif menggunakan Custom Resource Definition (CRD) ASMCircuitBreaker. Topik ini menjelaskan bidang-bidang dalam ASMCircuitBreaker.
Contoh konfigurasi
Contoh 1: Pemutusan sirkuit sisi klien
Contoh ini memerlukan instans ASM versi 1.25.6.74 atau yang lebih baru.
Contoh berikut menunjukkan cara mengonfigurasi pemutusan sirkuit sisi klien. Ketika aplikasi sleep mengakses aplikasi httpbin, pemutus sirkuit akan aktif jika lebih dari 60% permintaan gagal atau terjadi lebih dari 10 permintaan lambat dalam rentang waktu 10 detik. Dalam kondisi tersebut, kode status 499 dikembalikan.
Contoh 2: Pemutusan sirkuit waypoint
Contoh ini hanya berlaku untuk mode Ambient dan memerlukan instans ASM versi 1.25.6.74 atau lebih baru.
Contoh ini mengonfigurasi aturan pemutusan sirkuit untuk sebuah aplikasi pada waypoint bernama default. Aturan pemutusan sirkuitnya sama seperti pada Contoh 1.
apiVersion
Jika instans ASM Anda versi 1.15.3.105 atau yang lebih baru, gunakan
apiVersion: istio.alibabacloud.com/v1. Jika Anda telah mengonfigurasi ini di kluster Alibaba Cloud Container Service for Kubernetes (ACK), ubah bidangapiVersion: istio.alibabacloud.com/v1beta1dalam CRD ASMCircuitBreaker yang sesuai menjadiapiVersion: istio.alibabacloud.com/v1, lalu redeploy.Jika instans ASM Anda versi sebelum 1.15.3.105, gunakan
apiVersion: istio.alibabacloud.com/v1beta1.
spec
Tabel berikut menjelaskan bidang-bidang dalam bagian spec. Untuk informasi selengkapnya tentang fitur dan kasus penggunaan ASMCircuitBreaker, lihat Gunakan pemutusan sirkuit tingkat rute di ASM.
Bidang | Tipe | Wajib | Deskripsi |
applyToTraffic | string | Tidak | Jenis trafik tempat kebijakan pemutusan sirkuit diterapkan. Nilai yang valid:
Nilai default adalah Catatan Bidang ini hanya didukung di ASM versi 1.25 dan yang lebih baru. |
ASMCircuitBreakerSpec
Bidang | Tipe | Wajib | Deskripsi |
workloadSelector | map<string, string> | Ya | Menggunakan satu atau beberapa label untuk memilih kumpulan Pod atau Mesin virtual (VM) tertentu tempat konfigurasi pemutusan sirkuit diterapkan. Pencarian label dibatasi pada namespace tempat sumber daya tersebut berada. Untuk informasi selengkapnya, lihat WorkloadSelector. |
isGateway | bool | Tidak | Menentukan apakah konfigurasi berlaku untuk gerbang. Jika diatur ke true, konfigurasi berlaku untuk gerbang. Nilai default adalah false. |
configs | Ya | Konfigurasi pemutusan sirkuit. Anda dapat menentukan beberapa konfigurasi. |
CircuitBreakerConfig
Bidang | Tipe | Wajib | Deskripsi |
name | string | Tidak | Nama konfigurasi pemutusan sirkuit tunggal. |
match | Tidak | Kondisi pencocokan. | |
breaker_config | Tidak | Konfigurasi pemutusan sirkuit tingkat rute. | |
target_services | Tidak | Layanan tempat kebijakan pemutusan sirkuit diterapkan. Catatan Bidang ini hanya didukung di ASM versi 1.25 dan yang lebih baru. |
TargetServiceRef
Bidang-bidang ini hanya didukung di ASM versi 1.25 dan yang lebih baru.
Bidang | Tipe | Wajib | Deskripsi |
kind | string | Tidak | Jenis layanan tempat kebijakan pemutusan sirkuit diterapkan. Nilai yang valid:
Nilai default adalah |
name | string | Ya | Nama layanan tempat kebijakan pemutusan sirkuit diterapkan. |
namespace | string | Tidak | Namespace tempat layanan yang menerapkan kebijakan pemutusan sirkuit berada. Nilai default adalah namespace tempat Anda mendefinisikan kebijakan pemutusan sirkuit. |
port | int32 | Tidak | Port layanan tempat kebijakan pemutusan sirkuit diterapkan. |
section_name | string | Tidak | Properti tambahan layanan. Bidang ini hanya berlaku untuk
|
Contoh 1
Contoh berikut menerapkan kebijakan ke port 8000 dari layanan httpbin di namespace default.
target_services:
- kind: Service
namespace: default
name: httpbin
port: 8000Contoh 2
Asumsikan ServiceEntry berikut ada di instans saat ini.
apiVersion: networking.istio.io/v1
kind: ServiceEntry
metadata:
name: se-httpbin-external
spec:
hosts:
- httpbin.test.com
location: MESH_EXTERNAL
ports:
- name: http
number: 80
protocol: HTTP
- name: https
number: 443
protocol: HTTPS
resolution: DNSKebijakan berikut diterapkan ke port 80 dari ServiceEntry ini.
target_services:
- kind: ServiceEntry
namespace: default
name: se-httpbin-external
port: 80Contoh 3
Asumsikan VirtualService berikut ada di instans saat ini.
apiVersion: networking.istio.io/v1
kind: VirtualService
metadata:
name: vs-httpbin
spec:
hosts:
- httpbin.test.com
http:
- name: default
route:
- destination:
host: httpbin
port:
number: 8000Kebijakan berikut diterapkan ke aturan routing HTTP bernama default yang didefinisikan dalam VirtualService tersebut.
target_services:
- kind: VirtualService
namespace: default
name: vs-httpbin
section_name: defaultCircuitBreakerMatch
Bidang | Tipe | Wajib | Deskripsi |
vhost | Tidak | Kondisi pencocokan untuk host virtual. |
BreakerConfig
Bidang | Tipe | Wajib | Deskripsi |
window_size | Durasi | Tidak | Jendela waktu untuk statistik. Nilai default adalah 10s. Nilai maksimum adalah 12s. |
break_duration | Durasi | Tidak | Durasi pemutus sirkuit tetap terbuka. Nilai default adalah 30s. |
slow_request_rt | Durasi | Tidak | Menentukan ambang batas latensi tanggapan untuk permintaan lambat. Permintaan dianggap lambat jika waktu tanggapannya melebihi nilai ini. |
average_request_rt | Durasi |
| Menentukan waktu tanggapan rata-rata untuk layanan, misalnya, 0.01s. |
max_slow_requests | uint32 | Tidak | Jumlah maksimum permintaan lambat. Harus berupa bilangan bulat, misalnya, 1000. Permintaan baru ditolak jika jumlah ini terlampaui. |
error_percent | Tidak | Persentase kesalahan. Jika persentase permintaan dengan kesalahan 5xx dalam jendela waktu melebihi nilai ini, permintaan baru ditolak. | |
gateway_error_percent | Tidak | Persentase kesalahan gerbang. Jika persentase permintaan dengan kesalahan gerbang (502, 503, 504) dalam jendela waktu melebihi nilai ini, permintaan baru ditolak. Bidang ini hanya berlaku untuk instans ASM versi 1.24.6.54 atau yang lebih baru. | |
min_request_amount | uint32 | Tidak | Jumlah minimum permintaan. Bidang ini berkaitan dengan kondisi error_percent. Nilai default adalah 0. Anda dapat mengonfigurasi jumlah minimum permintaan untuk mencegah pemutus sirkuit aktif karena sedikit kegagalan. |
custom_response | Tidak | Tanggapan kustom yang dikembalikan ketika permintaan ditolak oleh pemutus sirkuit. |
CustomResponse
Bidang | Tipe | Wajib | Deskripsi |
status_code | int32 | Tidak | Kode status respons HTTP. |
header_to_add | map[string]string | Tidak | Header yang ditambahkan ke tanggapan kustom. |
body | string | Tidak | Isi tanggapan kustom. |
VirtualHostMatch
Bidang | Tipe | Wajib | Deskripsi |
name | string | Tidak | Nama host virtual yang dicocokkan. |
port | int | Tidak | Port permintaan yang dicocokkan. |
route | Ya | Nama aturan routing API yang dicocokkan. |
RouteMatch
Bidang | Tipe | Wajib | Deskripsi |
name_match | string |
| Nama rute yang dicocokkan. Ini sesuai dengan nama rute tunggal dalam VirtualService. |
header_match | Tidak | Mencocokkan header permintaan layanan. Anda dapat menentukan beberapa header. Penting Untuk menggunakan bidang ini, instans ASM Anda harus versi 1.16 atau yang lebih baru, dan instans gerbang serta sidecar yang sesuai harus versi terbaru. Untuk informasi selengkapnya tentang cara meningkatkan instans ASM, lihat Tingkatkan instans ASM. Untuk informasi selengkapnya tentang cara meningkatkan proxy sidecar, lihat Tingkatkan proxy sidecar. |
HeaderMatcher
Bidang | Tipe | Wajib | Deskripsi | |
name | string | Tidak | Nama header. | |
Pilih salah satu dari berikut | regex_match | string | Tidak | Mencocokkan nilai menggunakan ekspresi reguler. |
exact_match | string | Tidak | Menjalankan pencocokan eksak. | |
prefix_match | string | Tidak | Menjalankan pencocokan awalan. Mencocokkan nilai yang dimulai dengan awalan yang ditentukan. | |
suffix_match | string | Tidak | Menjalankan pencocokan akhiran. Mencocokkan nilai yang diakhiri dengan akhiran yang ditentukan. | |
present_match | bool | Tidak |
| |
invert_match | bool | Tidak | Nilai default adalah false.
| |