지역 가중치 분산

지역 가중치 분산 (Locality weighted distribution)

이 가이드를 따라 지역(locality) 간 트래픽 분산을 설정해 볼게요.

출처: Istio 문서

본문

이 가이드를 따라 지역(locality) 간 트래픽 분산을 설정해 볼게요.

진행하기 전에 시작하기 전에의 단계를 반드시 완료했는지 확인해요.

이 태스크에서는 region1의 zone1에 있는 curl pod를 HelloWorld 서비스로 요청을 보내는 소스로 사용할 거예요. Istio에 다음과 같은 지역 간 분산을 설정할 거예요:

Region Zone % of traffic
region1 zone1 70
region1 zone2 20
region2 zone3 0
region3 zone4 10

Istio는 pod가 실행 중인 노드에서 지역(locality)을 읽어요. topology locality 라벨을 사용하면 그것을 덮어쓸 수 있어요.

가중치 분산 구성 (Configure Weighted Distribution)

다음을 구성하는 DestinationRule을 적용해요:

$ kubectl --context="${CTX_PRIMARY}" apply -n sample -f - <<EOF
apiVersion: networking.istio.io/v1
kind: DestinationRule
metadata:
  name: helloworld
spec:
  host: helloworld.sample.svc.cluster.local
  trafficPolicy:
    loadBalancer:
      localityLbSetting:
        enabled: true
        distribute:
        - from: region1/zone1/*
          to:
            "region1/zone1/*": 70
            "region1/zone2/*": 20
            "region3/zone4/*": 10
    outlierDetection:
      consecutive5xxErrors: 100
      interval: 1s
      baseEjectionTime: 1m
EOF

분산 확인 (Verify the distribution)

curl pod에서 HelloWorld 서비스를 호출해요:

$ kubectl exec --context="${CTX_R1_Z1}" -n sample -c curl \
  "$(kubectl get pod --context="${CTX_R1_Z1}" -n sample -l \
  app=curl -o jsonpath='{.items[0].metadata.name}')" \
  -- curl -sSL helloworld.sample:5000/hello

이 명령을 여러 번 반복해서, 각 pod의 응답 수가 이 가이드 상단 표의 예상 비율과 일치하는지 확인해요.

축하해요! 지역 분산(locality distribution) 설정을 성공적으로 완료했어요!

다음 단계

이 태스크에서 사용한 리소스와 파일 정리를 진행해요.

더 알아보기 (Learn more)