고급 부하 분산 설정

이 문서에는 고급 부하 분산 개요에 설명된 고급 부하 분산 옵션을 설정하는 방법이 나와 있습니다. 이 문서는 Cloud Service Mesh 및 부하 분산 개념에 대해 중급 이상의 지식을 갖춘 사용자를 대상으로 작성되었습니다.

시작하기 전에

Google Cloud CLI를 업데이트하여 최신 버전인지 확인합니다.

gcloud components update

새 백엔드 서비스를 만들거나 고급 부하 분산에 사용할 기존 백엔드 서비스를 결정합니다.

hello-world-backend-service라는 새 백엔드 서비스를 만들려면 다음 명령어를 사용합니다.

gcloud compute backend-services create hello-world-backend-service \
    --global \
    --protocol=HTTP \
    --health-checks hello-world-health-check \
    --load-balancing-scheme=INTERNAL_SELF_MANAGED

YAML로 서비스 부하 분산 정책 만들기

YAML 파일에서 서비스 부하 분산 정책을 정의할 수 있습니다. 예를 들어 hello-world-lb-policy라는 파일에서 다음과 같이 자동 용량 드레이닝 기능을 사용 설정하는 정책을 설정합니다.

name: projects/${project-id}/locations/global/serviceLbPolicies/hello-world-lb-policy
autoCapacityDrain:
  enable: True

YAML 파일을 만든 후 가져옵니다.

gcloud network-services service-lb-policies import hello-world-lb-policy \
   --source=hello-world-lb-policy.yaml \
   --location=global

마지막으로 서비스 부하 분산 정책을 백엔드 서비스에 연결합니다.

gcloud compute backend-services update hello-world-backend-service \
  --service-lb-policy hello-world-lb-policy \
  --global

또는 백엔드 서비스를 만들 때 기존 서비스 부하 분산 정책을 백엔드 서비스와 연결할 수 있습니다.

gcloud compute backend-services create hello-world-backend-service \
    --global \
    --protocol=HTTP \
    --health-checks hello-world-health-check \
    --load-balancing-scheme=INTERNAL_SELF_MANAGED \
    --service-lb-policy hello-world-lb-policy

이 안내에서는 백엔드 서비스 리소스의 변경사항만 다룹니다. Cloud Service Mesh 배포에는 상태 점검 및 방화벽 규칙도 포함되어야 하며 필요에 따라 백엔드를 추가해야 합니다.

리전에 분무 알고리즘 구성

한 리전의 모든 영역에 트래픽을 분산하는 리전에 분무 알고리즘을 구성하려면 다음과 같이 hello-world-lb-policy.yaml파일에서 서비스 부하 분산 정책을 만듭니다.

name: projects/${project-id}/locations/global/serviceLbPolicies/hello-world-lb-policy
loadBalancingAlgorithm: SPRAY_TO_REGION

yaml 파일 가져오기:

gcloud network-services service-lb-policies import hello-world-lb-policy \
   --source=hello-world-lb-policy.yaml \
   --location=global

gcloud CL로 이 알고리즘을 구성할 수도 있습니다.

gcloud network-services service-lb-policies create hello-world-lb-policy \
    --load-balancing-algorithm=SPRAY_TO_REGION \
    --location=global

영역별 폭포 알고리즘 구성

트래픽을 다른 영역으로 스필링하기 전에 로컬 영역으로 트래픽을 전송하는 영역별 폭포 알고리즘을 구성하려면 hello-world-lb-policy.yaml라는 파일에서 서비스 부하 분산 정책을 만듭니다.

name: projects/${project-id}/locations/global/serviceLbPolicies/hello-world-lb-policy
loadBalancingAlgorithm: WATERFALL_BY_ZONE

yaml 파일 가져오기:

gcloud network-services service-lb-policies import hello-world-lb-policy \
   --source=hello-world-lb-policy.yaml \
   --location=global

gcloud CL로 이 알고리즘을 구성할 수도 있습니다.

gcloud network-services service-lb-policies create hello-world-lb-policy \
    --load-balancing-algorithm=WATERFALL_BY_ZONE \
    --location=global

선호 백엔드 구성

선호하는 백엔드를 구성하려면 다음과 같이 서비스 부하 분산 정책을 만듭니다.

name: projects/${project-id}/locations/global/backendServices/hello-world-service
...
backends:
...
  preference: PREFERRED

다음 예시에서는 3개의 백엔드 MIG1, MIG2, MIG3가 표시됩니다.

name: ..
...
- backends
name: MIG1
preference: PREFERRED
- backends
name: MIG2
preference: DEFAULT
- backends
name: MIG3
...

gcloud CL로 이 기능 구성할 수도 있습니다.

gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
      [...]
      --preference=PREFERRED \
      --global

선호하는 백엔드를 업데이트하려면 다음 안내를 따르세요.

gcloud compute backend-services update-backend BACKEND_SERVICE_NAME \
      [...]
      --preference=PREFERRED

자동 용량 드레이닝 구성

상태에 따라 백엔드를 자동으로 드레이닝하도록 Cloud Service Mesh를 구성하려면 다음과 같이 서비스 부하 분산 정책을 만듭니다.

name: projects/${project-id}/locations/global/serviceLbPolicies/hello-world-lb-policy
autoCapacityDrain:
  enable: True

gcloud CL로 이 기능 구성할 수도 있습니다.

gcloud network-services service-lb-policies create capacity-drain-policy \
    --auto-capacity-drain \
    --location=global

장애 조치 동작 맞춤설정

장애 조치 상태 기준의 특정 값에 대해 Cloud Service Mesh를 구성하려면 서비스 부하 분산 정책에 다음을 포함하고 여기서 VALUE를 1~99 사이의 값으로 바꿉니다. 기본값은 프록시리스 gRPC를 사용하는 Cloud Service Mesh의 경우 50이고 Envoy를 사용하는 Cloud Service Mesh의 경우 70입니다.

projects/${project-id}/locations/global/serviceLbPolicies/hello-world-lb-policy
failoverConfig:
  failoverHealthThreshold: VALUE

gcloud CLI로 장애 조치 동작을 맞춤설정하려면 다음 안내를 따르세요.

gcloud network-services service-lb-policies create failover-health-threshold--policy \
   --failover-health-threshold=VALUE \
   --location=global