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