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