全部产品
Search
文档中心

Alibaba Cloud Service Mesh:Implementasikan afinitas sesi di gateway ingress ASM

更新时间:Jul 02, 2025

Afinitas sesi (juga dikenal sebagai sesi lengket) adalah fitur yang tersedia pada load balancer untuk mengarahkan semua permintaan dari pengguna atau sesi yang sama ke server backend yang sama. Fitur ini berguna dalam skenario seperti keranjang belanja online, sesi logon, dan pengaturan personalisasi, di mana status pengguna harus dipertahankan.

Prasyarat

Pengenalan fitur

Topik ini menjelaskan implementasi afinitas sesi menggunakan hashing konsisten. Envoy mendukung HashRing dan Maglev hashing konsisten. Penyeimbangan beban berbasis hashing konsisten digunakan untuk menyediakan afinitas sesi lunak. Afinitas ke host tujuan tertentu mungkin hilang jika satu atau lebih host ditambahkan atau dihapus dari layanan tujuan. Afinitas sesi berbasis hashing konsisten meningkatkan penyeimbangan beban dan berperforma baik dalam sistem terdistribusi.

Langkah 1: Tingkatkan jumlah pod aplikasi HTTPBin

Gunakan kubectl untuk terhubung ke bidang data berdasarkan file kubeconfig, lalu jalankan perintah berikut untuk menaikkan jumlah pod aplikasi HTTPBin menjadi tiga. Pod-pod ini digunakan untuk menguji afinitas sesi.

kubectl scale deployment/httpbin --replicas 3

Langkah 2: Lihat distribusi permintaan ketika afinitas sesi dinonaktifkan

  1. Masukkan http://${Alamat IP gateway ingress}/status/418 di bilah alamat browser Anda. Setelah akses berhasil, segarkan halaman beberapa kali.

    Untuk informasi lebih lanjut tentang cara mendapatkan alamat IP gateway ingress, lihat sublangkah 1 Dapatkan alamat IP gateway ingress dari Langkah 3 dalam topik "Gunakan sumber daya Istio untuk merutekan lalu lintas ke versi layanan yang berbeda".

  2. Lihat log gateway ingress.

    1. Masuk ke Konsol ASM. Di panel navigasi kiri, pilih Service Mesh > Mesh Management.

    2. Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi kiri, pilih ASM Gateways > Ingress Gateway.

    3. Di halaman Ingress Gateway, temukan gateway ingress yang diinginkan dan klik Log Center. Di tab Gateway Logs, tambahkan kondisi pencarian dan 418 ke kotak pencarian dan klik Search & Analyze. Di tab Raw Logs di pojok kiri bawah, perluas indeks upstream_addr.

      Anda dapat melihat bahwa permintaan hampir merata didistribusikan ke tiga pod aplikasi HTTPBin.

      image

Langkah 3: Buat aturan tujuan

Gunakan konten berikut untuk membuat aturan tujuan. Untuk informasi lebih lanjut, lihat Kelola aturan tujuan.

apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: httpbin
  namespace: default
spec:
  host: httpbin.default.svc.cluster.local
  trafficPolicy:
    loadBalancer:
      consistentHash:
        httpCookie:
          name: sticky-session-key
          ttl: 0s

Setelah aturan tujuan diterapkan, jika Anda menginisiasi permintaan tanpa cookie yang ditentukan dalam aturan tujuan untuk mengakses aplikasi HTTPBin melalui gateway ingress, gateway ingress akan menghasilkan nilai hash berdasarkan alamat IP dan port sumber serta tujuan dari permintaan, dan menambahkan cookie dalam respons permintaan. Jika permintaan berikutnya membawa cookie ini, gateway ingress tidak akan meregenerasi nilai ini. Cookie ini digunakan dalam hashing konsisten sebagai input utama fungsi hash, yang kemudian menghitung backend yang akan diakses.

Validitas afinitas sesi dijamin oleh hashing konsisten tertentu. Dalam contoh ini, tidak ada hashing konsisten yang ditentukan. Secara default, HashRing digunakan. Instance ASM versi 1.16 atau lebih baru mendukung hashing konsisten Maglev. Anda dapat menggunakan hashing konsisten Maglev berdasarkan kebutuhan bisnis Anda.

Langkah 4: Lihat distribusi permintaan ketika afinitas sesi diaktifkan

  1. Masukkan http://${Alamat IP gateway ingress}/status/333 di bilah alamat browser Anda. Setelah akses berhasil, segarkan halaman beberapa kali.

    Untuk informasi lebih lanjut tentang cara mendapatkan alamat IP gateway ingress, lihat sublangkah 1 Dapatkan alamat IP gateway ingress dari Langkah 3 dalam topik "Gunakan sumber daya Istio untuk merutekan lalu lintas ke versi layanan yang berbeda".

  2. Lihat log gateway ingress.

    1. Masuk ke Konsol ASM. Di panel navigasi kiri, pilih Service Mesh > Mesh Management.

    2. Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi kiri, pilih ASM Gateways > Ingress Gateway.

    3. Di halaman Ingress Gateway, temukan gateway ingress yang diinginkan dan klik Log Center. Di tab Gateway Logs, tambahkan kondisi pencarian dan 333 ke kotak pencarian dan klik Search & Analyze. Di tab Raw Logs di pojok kiri bawah, perluas indeks upstream_addr.

      Anda dapat melihat bahwa semua permintaan diteruskan ke pod backend yang sama dari aplikasi HTTPBin.

      image

  3. Buka alat pengembang browser Anda, klik Network, segarkan halaman, dan klik permintaan untuk melihat detailnya.

    Halaman web menunjukkan bahwa situs web memiliki cookie dengan nama yang sama seperti yang ditentukan dalam aturan tujuan. Gateway ingress mengimplementasikan afinitas sesi berdasarkan cookie ini.