ByeongHunKim / Cloudclub-istio-skyline

☁️ Cloud Club's collaborative journey exploring Istio and service mesh technologies 🚀
https://www.cloudclub.kr/
2 stars 0 forks source link

[Question] Istio에서 Weighted Routing, LB, Curcuit breaking 같은 트레픽 제어를 위하여 무엇을 하는가? #21

Closed opp-13 closed 2 weeks ago

opp-13 commented 1 month ago

Question / 질문 내용 Istio에서 트레픽 제어를 위하여 어떤 설정을 하는지 궁금합니다.

Context / 상황 설명 Udemy 강의에서 "Weighted Routing과 Stickyness가 동시에 적용이 안되는 문제가 있고 envoy가 지원을 해주지 않아서 LB보다 Weighted Routing이 먼저 적용되는 문제로 인하여 발생한다. "라고 나왔습니다. 여기서 정확히 어디에서 Weighted Routing과 Stickyness가 적용이 되는지 궁금합니다.

What I've Tried / 시도한 방법 질문에 대한 답을 찾기 위해 시도해본 방법이 있다면 설명해주세요

아마도 config.cluster.v3.Cluster이 API로 하는 듯 합니다. https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto

이게 맞다면 아래의 질문을 할 수 있을 것 같습니다.

Resources / 관련 자료 질문과 관련된 문서, 링크, 코드 등이 있다면 여기에 첨부해주세요

Additional context / 추가 사항 기타 추가적인 정보나 생각이 있다면 여기에 작성해주세요

ByeongHunKim commented 1 month ago

@opp-13

Weighted Routing에서 xDS API가 직접 사용되지 않고 동적 설정 업데이트 시 xDS API가 호출되는 게 아닌건가요?

실제 트래픽 제어는 Envoy 프록시 내부에서 이루어지고, xDS API는 설정을 전달하는 역할만 수행하는 걸로 알고 있어서요

ByeongHunKim commented 1 month ago

@opp-13 강의 부분을 보니까 Weighted routing에 따라 트래픽을 분배한 후에, 선택된 Subset 내에서 Consistent Hashing을 적용하는 구조여서 위에서 언급하신 "Weighted Routing과 Stickyness가 동시에 적용이 안되는 문제" 가 발생되는 게 아닌가라고 생각되네요. 왜냐하면 istio 비슷한 이슈 에도 나와 있듯이, vs에 weight 값이 명시되어있고 Stickiness 설정은 dr에 명시되어있어서요

요약하자면

Weighted Routing이 먼저 적용되어 서브셋 선택 -> 선택된 서브셋 내에서 Stickiness 적용 위와 같이 Stickiness가 서브셋 선택 이후에 적용되므로, Weighted Routing과 완전히 호환되지 않음

제가 아직 해결하지 못한 Istio의 Custom Resource들이 mesh logic으로 변환된 이후 적용 순서가 어떻게 보장 되는가? 문제가 해결되면 왜 안되는 지 이해가 더 될 것 같네요

ByeongHunKim commented 1 month ago

참고 블로그 링크

https://seungjuitmemo.tistory.com/218

https://github.com/istio/istio/issues/9764

https://inspirit941.tistory.com/441

opp-13 commented 1 month ago

Envoy의 내부 처리 구성도입니다.

https://istio-insider.mygraphql.com/en/latest/ch2-envoy/envoy-istio-conf-eg.html