高度なロード バランシングを設定する

このドキュメントでは、高度なロード バランシングの概要で説明されている高度なロード バランシング オプションの設定方法について説明します。このドキュメントは、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 CLI でも構成できます。

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 CLI でも構成できます。

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

次の例は、MIG1MIG2MIG3 の 3 つのバックエンドを示しています。

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

この機能は、gcloud CLI でも構成できます。

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 CLI でも構成できます。

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