Tüm Ürünler
Search
Belge Merkezi

Alibaba Cloud Service Mesh:Implement session affinity in an ASM ingress gateway

Son Güncelleme:Oct 07, 2026

Alışveriş sepetleri, oturum açma işlemleri ve kişiselleştirilmiş panolar gibi durum bilgisi tutan uygulamalar, aynı istemciden gelen tüm isteklerin arka uçtaki aynı pod'a ulaşmasını gerektirir. ASM'deki oturum benzeşimi (yapışkan oturumlar), bir Istio hedef kuralında tutarlı karma uygulama yoluyla istekleri tutarlı bir arka uca yönlendirir.

Tutarlı karma, her isteği çerez, HTTP üstbilgisi, kaynak IP veya sorgu parametresi gibi bir karma anahtarına göre bir arka uca eşler. Bu yöntem yumuşak oturum benzeşimi sağlar: Aynı istemciden gelen istekler genellikle aynı pod'a ulaşır ancak arka uçlar eklendiğinde veya kaldırıldığında benzeşim bozulabilir.

Nasıl çalışır

Karma algoritmaları

Envoy iki tutarlı karma algoritmasını destekler:

Algoritma Varsayılan Ne zaman kullanılır
HashRing Evet Orta düzeyde arka uç değişimi olan genel amaçlı oturum benzeşimi senaryoları
Maglev Hayır Arama hızının önemli olduğu yüksek aktarım hızı senaryoları. ASM v1.16 veya sonraki sürümler gerektirir

Önkoşullar

Başlamadan önce şunlara sahip olduğunuzdan emin olun:

Çerez tabanlı oturum benzeşimini yapılandırın

Bu öğretici çerez tabanlı oturum benzeşimini gösterir. Aynı DestinationRule yapısı diğer karma anahtarı türleri için de geçerlidir; ilgili alanla değiştirmek için httpCookie bloğunu kullanın.

Adım 1: HTTPBin dağıtımını üç çoğaltmaya ölçeklendirin

İsteklerin pod'lar arasında nasıl dağıldığını gözlemlemek için üç çoğaltma gerekir. kubectl ile ACK kümesi veri düzlemine bağlanın ve aşağıdaki komutu çalıştırın:

kubectl scale deployment/httpbin --replicas 3

Adım 2: Oturum benzeşimi olmadan istek dağıtımını doğrulayın

  1. Bir tarayıcıda http://<ingress-gateway-ip>/status/418 adresini açın ve sayfayı birkaç kez yenileyin.

    Giriş ağ geçidi IP'sini alma talimatları için bkz. Istio kaynaklarını kullanarak trafiği bir hizmetin farklı sürümlerine yönlendirme konusundaki Adım 3'ün alt adımı 1.

  2. İsteklerin üç pod'un tamamına dağıtıldığını onaylamak için ağ geçidi günlüklerini kontrol edin:

    1. ASM konsolu üzerinde oturum açın. Sol gezinme bölmesinde Service Mesh > Mesh Management seçeneğini belirleyin.

    2. Mesh Management sayfasında ASM örneğinin adına tıklayın. Sol gezinme bölmesinde ASM Gateways > Ingress Gateway seçeneğini belirleyin.

    3. Ingress Gateway sayfasında hedef giriş ağ geçidini bulun ve Log Center seçeneğine tıklayın. Gateway Logs sekmesinde arama kutusuna and 418 ifadesini ekleyin ve Search & Analyze seçeneğine tıklayın. Sol alt köşedeki Raw Logs sekmesinde upstream_addr dizinini genişletin.

    Günlükler, isteklerin üç HTTPBin pod'u arasında yaklaşık olarak eşit dağıldığını gösterir.

    Request distribution without session affinity

Adım 3: Çerez tabanlı oturum benzeşimi için bir hedef kuralı oluşturun

Aşağıdaki DestinationRule öğesini uygulayın. Hedef kurallarını yönetme hakkında ayrıntılı bilgi için bkz. Hedef kurallarını yönetme.

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
Alan Değer Açıklama
host httpbin.default.svc.cluster.local Bu kuralın uygulanacağı tam nitelikli hizmet ana bilgisayar adı
consistentHash.httpCookie.name sticky-session-key Karma anahtarı olarak kullanılan çerez adı
consistentHash.httpCookie.ttl 0s Çerez ömrü

Bu kuralı uyguladıktan sonra:

  1. İlk istekte (çerez yokken) ağ geçidi, kaynak ve hedef IP adreslerinden ve bağlantı noktalarından bir karma oluşturur, isteği bir arka uca yönlendirir ve yanıtta sticky-session-key çerezini ayarlar.

  2. Sonraki isteklerde istemci bu çerezi geri gönderir. Ağ geçidi arka ucu belirlemek için çerez değerini karmalar ve isteği aynı pod'a yönlendirir.

Bu örnekte varsayılan HashRing algoritması kullanılır. Maglev'i kullanmak için (ASM v1.16 veya sonraki sürümler gereklidir) gereksinimlerinize bağlı olarak trafik ilkenize hashAlgorithm alanını ekleyin.

Adım 4: Oturum benzeşiminin çalıştığını doğrulayın

  1. Bir tarayıcıda http://<ingress-gateway-ip>/status/333 adresini açın ve sayfayı birkaç kez yenileyin.

    Giriş ağ geçidi IP'sini alma talimatları için bkz. Istio kaynaklarını kullanarak trafiği bir hizmetin farklı sürümlerine yönlendirme konusundaki Adım 3'ün alt adımı 1.

  2. Tüm isteklerin aynı poda ulaştığını onaylamak için ağ geçidi günlüklerini kontrol edin:

    1. ASM konsolu üzerinde oturum açın. Sol gezinme bölmesinde Service Mesh > Mesh Management seçeneğini belirleyin.

    2. Mesh Management sayfasında ASM örneğinin adına tıklayın. Sol gezinme bölmesinde ASM Gateways > Ingress Gateway seçeneğini belirleyin.

    3. Ingress Gateway sayfasında hedef giriş ağ geçidini bulun ve Log Center seçeneğine tıklayın. Gateway Logs sekmesinde arama kutusuna and 333 ifadesini ekleyin ve Search & Analyze seçeneğine tıklayın. Sol alt köşedeki Raw Logs sekmesinde upstream_addr dizinini genişletin.

    Günlükler, tüm isteklerin aynı arka uç pod'una yönlendirildiğini gösterir.

    Request distribution with session affinity

  3. Tarayıcıdaki çerezi onaylayın: Geliştirici araçlarını açın, Network sekmesine tıklayın, sayfayı yenileyin ve bir isteği inceleyin. Yanıt, DestinationRule içindeki adla eşleşen bir sticky-session-key çerezi içerir. Ağ geçidi oturum benzeşimini korumak için bu çerezi kullanır.