日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

在ASM網關中實現會話保持

會話保持(Session Affinity)又稱為粘性會話(Sticky Sessions),是一種負載均衡技術,能夠確保來自同一用戶(或會話)的所有請求均被發送到同一后端服務器。該技術適用于需要保持用戶狀態的應用,例如在線購物車、登錄會話和個性化設置等。

前提條件

功能介紹

本文演示的會話保持基于一致性哈希算法實現。Envoy目前支持RingHash和Maglev兩種一致性哈希算法。一致性哈希算法實現的負載均衡是一種軟會話保持(Soft Session Affinity),在有端點變化時會有一小部分請求的會話保持失效。基于一致性哈希算法的會話保持能實現更好的負載均衡,對分布式系統更加友好。關于一致性哈希負載均衡的配置介紹,請參見LoadBalancerSettings.ConsistentHashLB

步驟一:將httpbin應用擴容至多副本

使用數據面的KubeConfig,執行以下命令,將httpbin應用擴容至3個副本,用于測試會話保持功能。

kubectl scale deployment/httpbin --replicas 3

步驟二:查看未啟用會話保持的效果

  1. 在瀏覽器中訪問http://${ASM網關地址}/status/418,訪問成功后進行多次刷新。

    關于如何獲取ASM網關地址,請參見獲取入口網關地址

  2. 查看網關日志。

    1. 登錄ASM控制臺,在左側導航欄,選擇服務網格 > 網格管理

    2. 網格管理頁面,單擊目標實例名稱,然后在左側導航欄,選擇ASM網關 > 入口網關

    3. 入口網關頁面,單擊目標網關右側的日志中心,在網關日志頁簽的搜索框中加入and 418的搜索條件,單擊查詢 / 分析,在左下方的原始日志頁簽,展開upstream_addr索引。

      您可以看到請求較為均勻地分布在3個httpbin Pod上。

      image

步驟三:部署目標規則

使用以下內容,創建目標規則。具體操作,請參見管理目標規則

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

部署該目標規則后,通過網關訪問httpbin服務時,如果請求沒有攜帶該Cookie,網關就會根據請求來源和目的地的IP和端口得出一個哈希值,并且在請求返回時設置這個Cookie。之后的請求,如果攜帶這個Cookie,網關就不會重新生成這個值。這個Cookie會在一致性哈希算法中作為哈希函數的Key輸入,進而計算出最終要訪問的實際后端。

會話保持的有效性由具體的一致性哈希算法保證。本例中并沒有明確配置使用哪個一致性哈希算法,默認使用RingHash算法。ASM從1.16版本開始支持Maglev算法,您可以根據實際需求進行選擇。

步驟四:查看啟用會話保持的效果

  1. 在瀏覽器中訪問http://${ASM網關地址}/status/333,訪問成功后進行多次刷新。

    關于如何獲取ASM網關地址,請參見獲取入口網關地址

  2. 查看網關日志。

    1. 登錄ASM控制臺,在左側導航欄,選擇服務網格 > 網格管理

    2. 網格管理頁面,單擊目標實例名稱,然后在左側導航欄,選擇ASM網關 > 入口網關

    3. 入口網關頁面,單擊目標網關右側的日志中心,在網關日志頁簽的搜索框中加入and 333的搜索條件,單擊查詢 / 分析,在左下方的原始日志頁簽,展開upstream_addr索引。

      您可以看到所有的請求均被轉發給同一個后端httpbin Pod。

      image

  3. 打開瀏覽器的開發人員工具,單擊網絡,刷新頁面,查看并單擊發出的請求。

    您可以看到該網站有一個Cookie。Cookie的名稱即為DestinationRule中設置的名稱。ASM網關會根據該Cookie實現會話保持。

    image