操作场景
购物车服务由多个 Pod 副本运行,需要会话保持功能,以保证同一用户请求被路由至同一个 Pod,保证同一用户的购物车信息不会丢失。
会话保持如下图所示:
?
?操作步骤
会话保持功能可通过设置 cart 服务 DestinationRule 的负载均衡策略实现,以请求 header 中的 UserID 做一致性 hash 负载均衡。
apiVersion: networking.istio.io/v1alpha3kind: DestinationRulemetadata:name: cartnamespace: basespec:host: carttrafficPolicy:loadBalancer:consistentHash:httpHeaderName: UserIDexportTo:- '*'
配置完成后,可在登录状态多次点击 “Your Cart” 或点击 “ADD TO CART” 调用 cart 服务验证会话保持功能,同一用户的多次请求会被路由至同一个 Pod,左下角悬浮窗可查看提供 cart 服务的 pod name。同一用户多次请求的 pod name 不会变化。来自同一用户的多次请求被负载均衡至相同 Pod 如下图所示:
?
?