-
Istio Session Affinity 정리K8S 2021. 6. 22. 15:15
이스티오에서는 Consistent hashing을 이용하여 session을 유지할 수 있다.
consistent hasing이란?
공식문서를 참고해보면 다음과 같다.
로드밸런서에서는 hash 알고리즘을 이용하여 client로부터 받은 데이터를 hashing한 후 데이터를 포드로 전송한다.
이 때 해쉬된 값을 이용하여 sticky session을 유지한다.
이스티오에서는 다음과 같이 consistent hasing에 대한 속성들을 제공한다.
※ 참고
이스티오에서 stickey session과 카나리를 위한 virtual service의 weighted 옵션을 동시에 사용할 수 없다.
weight 옵션과 consistentHash가 설정된 virtual service에서는 weighted 옵션만 적용되어 나타나며
이는 다음과 같은 구조로 로드 밸런싱되기 때문이다.
다음은 Consistent hash의 useSourceIp를 이용하여 sticky session를 유지한 경우이다.
destination rule에 trafficPolicy를 참고하자.
kind: VirtualService apiVersion: networking.istio.io/v1alpha3 metadata: name: a-set-of-routing-rules-we-can-call-this-anything # "just" a name for this virtualservice namespace: default spec: hosts: - fleetman-staff-service.default.svc.cluster.local # The Service DNS (ie the regular K8S Service) name that we're applying routing rules to. http: - route: - destination: host: fleetman-staff-service.default.svc.cluster.local # The Target DNS name subset: all-staff-service-pods # The name defined in the DestinationRule # weight: 100 not needed if there's only one. --- kind: DestinationRule # Defining which pods should be part of each subset apiVersion: networking.istio.io/v1alpha3 metadata: name: grouping-rules-for-our-photograph-canary-release # This can be anything you like. namespace: default spec: host: fleetman-staff-service # k8s Service dns trafficPolicy: # useSourceIP로 loadbalancing하기 loadBalancer: consistentHash: useSourceIp: true subsets: - labels: # SELECTOR app: staff-service # find pods with label "app: staff-service" name: all-staff-service-pods
반응형'K8S' 카테고리의 다른 글
Istio Ingress Gateway 정리2 (Prefix based routing, Header based routing) (0) 2021.06.24 Istio Ingress gateway 정리(Weighted routing, Canary) (0) 2021.06.22 Istio kiali를 이용한 카나리 구성과 virtual service, destination rule 정리 (0) 2021.06.21 K8S Operating System Upgrade (0) 2021.06.17 Istio Automation Injection (0) 2021.06.17