Saat Anda melakukan penskalaan turun atau restart bergulir pada gerbang Service Mesh (ASM), Pod gerbang dihapus. Hal ini dapat menyebabkan kehilangan trafik dalam jumlah kecil. Anda dapat mengaktifkan fitur shutdown yang mulus untuk mencegah kehilangan tersebut. Saat shutdown yang mulus diaktifkan, koneksi yang ada terus mentransfer data selama periode tertentu saat Pod gerbang sedang dihapus. Topik ini menjelaskan cara menggunakan fitur shutdown yang mulus.
Lingkup
Instans ASM Edisi Perusahaan atau Edisi Ultimate telah dibuat. Untuk informasi selengkapnya, lihat Buat instans ASM.
Langkah 1: Aktifkan shutdown yang mulus
Aktifkan fitur untuk gerbang yang sudah ada
Pada ASM 1.26 dan versi yang lebih baru, mengubah konfigurasi shutdown yang mulus menyebabkan gerbang melakukan restart. Lakukan operasi ini di luar jam sibuk.
Konsol
Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih .
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi sebelah kiri, pilih .
Pada halaman Ingress Gateway, klik nama gerbang target.
Pada halaman Gateway Details, klik Advanced Options, klik ikon
di samping Graceful Shutdown, centang kotak Graceful Shutdown, atur Connection Timeout (seconds), lalu klik Confirm.
Konfigurasi YAML (untuk versi ASM di bawah 1.26)
Tambahkan anotasi yang diperlukan ke file YAML gerbang di bawah bidang serviceAnnotations.
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' # Enable connection draining for the load balancer, which is graceful shutdown.
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout: '10' # The connection draining timeout period. Valid values: 10 to 30.
...Konfigurasi YAML (untuk versi ASM 1.26 dan yang lebih baru)
Tambahkan anotasi yang diperlukan ke file YAML gerbang di bawah bidang annotations.
apiVersion: istio.alibabacloud.com/v1
kind: IstioGateway
metadata:
annotations:
# For Classic Load Balancer (CLB) and Network Load Balancer (NLB) gateways, the valid values are 10 to 890.
# For ClusterIP and NodePort gateways, there is no upper limit.
asm.alibabacloud.com/gateway-drain-timeout-seconds: "30"
name: ingressgateway
namespace: istio-system
...Aktifkan fitur saat membuat gerbang
Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih .
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi sebelah kiri, pilih .
Pada halaman Ingress Gateway, klik Create.
Pada halaman Create, pilih Deployment Cluster, atur CLB Type menjadi Public Network Access, pilih spesifikasi load balancer di bawah New CLB Instance, dan atur Number Of Gateway Replicas menjadi 10. Biarkan nilai default untuk item konfigurasi lainnya.
Untuk informasi selengkapnya tentang item konfigurasi, lihat Buat gerbang masuk.
Klik Advanced Options, centang kotak Graceful Shutdown, atur Connection Timeout (Seconds), lalu klik Create.
Item konfigurasi
Deskripsi
Graceful Shutdown
Jika Anda memilih opsi ini, instans Classic Load Balancer (CLB) secara mulus menguras koneksi yang ada saat Pod gerbang melakukan restart bergulir. Hal ini meminimalkan dampak pada layanan Anda dan mendukung skenario seperti perubahan konfigurasi dan peningkatan gerbang dengan lebih baik.
Connection Timeout (Seconds)
Setelah instans CLB menghapus Pod gerbang, instans tersebut menunggu periode timeout koneksi yang dikonfigurasi sebelum memutus koneksi dari Pod tersebut. Parameter ini memberikan buffer bagi Pod gerbang untuk memproses koneksi yang ada. Waktu shutdown yang mulus default untuk Pod gerbang adalah 30 detik. Periode timeout yang Anda konfigurasi untuk instans CLB tidak boleh melebihi 30 detik.
Mulai dari versi 1.26, Anda dapat mengatur periode timeout hingga maksimum 890 detik.
Langkah 2: Sebarkan aplikasi contoh
Hubungkan ke kluster ACK menggunakan kubectl. Untuk informasi selengkapnya, lihat Dapatkan file kubeconfig kluster dan gunakan kubectl untuk menghubungkan ke kluster.
Buat file httpbin.yaml dengan konten berikut.
Sebarkan aplikasi httpbin.
kubectl apply -f httpbin.yaml -n default
Langkah 3: Buat layanan virtual dan aturan gateway
Buat layanan virtual.
Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih .
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi sebelah kiri, pilih . Pada halaman yang muncul, klik Create from YAML.
Pada halaman Create, pilih Namespace dan Scene Template, masukkan 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 aturan gateway.
Pada halaman detail instans ASM, pilih di panel navigasi sebelah kiri. Pada halaman yang muncul, klik Create from YAML.
Pada halaman Create, pilih Namespace dan Scene Template, masukkan 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 bahwa routing telah berhasil dikonfigurasi.
Dapatkan alamat gateway ASM. Untuk informasi selengkapnya, lihat Buat gerbang masuk.
Di bilah alamat browser Anda, masukkan http://<alamat gateway ASM>.
Halaman berikut muncul, yang menunjukkan bahwa routing telah berhasil dikonfigurasi.

Langkah 4: Verifikasi efek shutdown yang mulus
Unduh dan instal versi alat uji stres ringan hey yang kompatibel dengan sistem operasi Anda. Untuk informasi selengkapnya, lihat hey.
Lakukan penskalaan turun pada gateway ASM.
Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih .
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi sebelah kiri, pilih .
Pada halaman Ingress Gateway, klik View YAML di sebelah kanan gerbang target.
Pada dialog Edit, atur nilai parameter
replicaCountmenjadi 1, lalu klik OK.
Jalankan perintah berikut untuk mengirim 50.000 permintaan ke aplikasi httpbin dengan konkurensi 200. Periksa kehilangan trafik sebelum dan sesudah shutdown yang mulus diaktifkan.
hey -c 200 -n 50000 -disable-keepalive http://<alamat gateway ASM>/Jenis
Analisis hasil
Shutdown yang mulus 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 refusedDari 50.000 permintaan, hanya 49.747 yang mengembalikan kode status 200. Hal ini menunjukkan bahwa hanya 49.747 permintaan yang berhasil dan terjadi kehilangan trafik dalam jumlah kecil.
Shutdown yang mulus diaktifkan
Output berikut dikembalikan:
............ Status code distribution: [200] 50000 responsesSemua 50.000 permintaan mengembalikan kode status 200. Hal ini menunjukkan bahwa semua 50.000 permintaan berhasil dan tidak ada kehilangan trafik.