Saat melakukan skala-masuk atau restart bergulir pada gerbang masuk ASM, beberapa Pod gerbang dihapus, yang dapat menyebabkan kehilangan traffic ringan. Anda dapat mengaktifkan graceful shutdown untuk mencegah kehilangan tersebut dengan memungkinkan koneksi yang ada tetap mengirimkan data selama periode tertentu setelah Pod gerbang dihapus.
Prasyarat
-
Anda memiliki instans ASM Edisi Perusahaan atau Edisi Ultimate. Untuk informasi lebih lanjut, lihat Buat instans ASM.
Langkah 1: Aktifkan graceful shutdown
Gerbang yang sudah ada
Mulai dari ASM 1.26, perubahan konfigurasi graceful shutdown akan memicu restart gerbang. Lakukan operasi ini selama jam sepi untuk meminimalkan dampak.
Konsol
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Ingress Gateway, klik nama gerbang target.
-
Pada halaman Gateway Details, klik Advanced Options. Klik ikon
di sebelah kanan SLB graceful offline, pilih SLB graceful offline, konfigurasi Connection timeout (seconds), lalu klik Submit.
YAML (sebelum 1.26)
Tambahkan anotasi serviceAnnotations ke file YAML gerbang.
apiVersion: istio.alibabacloud.com/v1
kind: IstioGateway
metadata:
name: ingressgateway
namespace: istio-system
spec:
gatewayType: ingress
serviceAnnotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain: 'on' # Mengaktifkan connection draining untuk load balancer, yang mengimplementasikan graceful shutdown.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout: '10' # Periode timeout connection draining, dalam detik. Nilai valid: 10 hingga 30.
...
YAML (1.26 dan seterusnya)
Tambahkan anotasi annotations ke file YAML gerbang.
apiVersion: istio.alibabacloud.com/v1
kind: IstioGateway
metadata:
annotations:
# Untuk gerbang CLB dan NLB, rentang nilai valid adalah [10, 890].
# Untuk gerbang ClusterIP dan NodePort, tidak ada batas atas.
asm.alibabacloud.com/gateway-drain-timeout-seconds: "30"
name: ingressgateway
namespace: istio-system
...
Gerbang baru
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Ingress Gateway, klik Create.
-
Pada halaman Create, pilih Cluster, atur CLB instance type ke Internet Access, pilih spesifikasi load balancer di bagian Create SLB Instance, atur Gateway instances ke 10, dan pertahankan nilai default untuk parameter lainnya.
Untuk informasi lebih lanjut tentang parameter tersebut, lihat Buat gerbang masuk.
-
Klik Advanced Options, pilih SLB graceful offline, atur Connection timeout (seconds), lalu klik Create.
Parameter
Deskripsi
SLB graceful offline
Jika opsi ini dipilih, instans Classic Load Balancer (CLB) secara mulus menguras koneksi yang ada selama restart bergulir Pod gerbang. Proses ini meminimalkan dampak layanan selama perubahan konfigurasi dan peningkatan gerbang.
Connection timeout (seconds)
Setelah instans CLB menghapus Pod gerbang, instans tersebut menunggu selama periode timeout koneksi yang dikonfigurasi sebelum menutup koneksi ke Pod tersebut. Parameter ini memberikan periode buffer bagi Pod gerbang untuk memproses koneksi yang ada.
Mulai dari ASM 1.26, periode timeout hingga 890 detik didukung.
Langkah 2: Deploy aplikasi contoh
-
Hubungkan ke kluster ACK menggunakan kubectl. Untuk informasi lebih lanjut, lihat Dapatkan file kubeconfig kluster dan gunakan kubectl untuk terhubung ke kluster.
-
Buat file bernama httpbin.yaml dengan konten berikut.
-
Deploy aplikasi httpbin.
kubectl apply -f httpbin.yaml -n default
Langkah 3: Buat VirtualService dan Gateway
-
Buat VirtualService.
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih . Pada halaman yang muncul, klik Create from YAML.
-
Pada halaman Create, pilih Namespaces dan Scenario Template, tempel konfigurasi YAML berikut, lalu klik Create.
apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: httpbin namespace: default spec: gateways: - httpbin-gateway hosts: - '*' http: - route: - destination: host: httpbin port: number: 8000
-
-
Buat Gateway.
-
Pada halaman detail instans ASM, pilih di panel navigasi kiri. Pada halaman yang muncul, klik Create from YAML.
-
Pada halaman Create, pilih Namespaces dan Scenario Template, tempel konfigurasi YAML berikut, lalu klik Create.
apiVersion: networking.istio.io/v1beta1 kind: Gateway metadata: name: httpbin-gateway namespace: default spec: selector: istio: ingressgateway servers: - hosts: - '*' port: name: http number: 80 protocol: HTTP
-
-
Verifikasi konfigurasi routing.
-
Dapatkan alamat gerbang masuk ASM. Untuk informasi lebih lanjut, lihat Buat gerbang masuk.
-
Di bilah alamat browser Anda, masukkan http://<alamat gerbang masuk ASM>.
Halaman utama httpbin.org muncul di browser Anda, menampilkan judul httpbin.org dan deskripsi A simple HTTP Request & Response Service. Hal ini mengonfirmasi bahwa VirtualService dan Gateway telah dikonfigurasi dengan benar.
-
Langkah 4: Verifikasi efek graceful shutdown
-
Unduh dan instal versi tool uji stres ringan hey yang kompatibel dengan sistem operasi Anda. Untuk informasi lebih lanjut, lihat hey.
-
Lakukan skala-masuk pada gerbang masuk ASM.
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Ingress Gateway, temukan gerbang target dan klik View YAML di kolom Actions.
-
Pada dialog Edit, atur nilai parameter
replicaCountmenjadi 1 dan klik OK.
-
-
Jalankan perintah berikut untuk mengirim 50.000 permintaan ke aplikasi httpbin dengan konkurensi 200, dan bandingkan kehilangan traffic sebelum dan sesudah Anda mengaktifkan graceful shutdown.
hey -c 200 -n 50000 -disable-keepalive http://<alamat gerbang masuk ASM>/Jenis
Analisis hasil
Graceful shutdown dinonaktifkan
Output berikut dikembalikan:
Status code distribution: [200] 49747 responses Error distribution: [253] Get "http://47.55.2xx.xx": dial tcp 47.55.2xx.xx:80: connect: connection refusedHanya 49.747 dari 50.000 permintaan yang mengembalikan kode status 200, menunjukkan bahwa terjadi kehilangan traffic ringan.
Graceful shutdown diaktifkan
Output berikut dikembalikan:
............ Status code distribution: [200] 50000 responsesSemua 50.000 permintaan mengembalikan kode status 200, menunjukkan bahwa tidak terjadi kehilangan traffic.