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