このガイドでは、既存の外部パススルー ネットワーク ロードバランサをターゲット プール バックエンドからリージョン バックエンド サービスに移行する手順について説明します。
リージョン バックエンド サービスに移行すれば、非レガシー ヘルスチェック(TCP、SSL、HTTP、HTTPS、HTTP/2 向け)、マネージド インスタンス グループ、コネクション ドレイン、フェイルオーバー ポリシーなどの機能を利用できます。
このタスクを Google Cloud コンソールで直接行う際の順を追ったガイダンスについては、「ガイドを表示」をクリックしてください。
このガイドでは、次のサンプル ターゲット プールベースの外部パススルー ネットワーク ロードバランサを移行して、代わりにリージョン バックエンド サービスを使用する手順について説明します。
バックエンド サービスベースの外部パススルー ネットワーク ロードバランサをデプロイした結果は次のようになります。
この例では、従来のターゲット プールベースの外部パススルー ネットワーク ロードバランサを使用し、ゾーン us-central-1a
とゾーン us-central-1c
にそれぞれ 2 つのインスタンスがあることを前提としています。
このような移行に必要な大まかな手順は次のとおりです。
ターゲット プール インスタンスをインスタンス グループにグループ化します。
バックエンド サービスは、マネージド インスタンス グループまたは非マネージド インスタンス グループでのみ動作します。1 つのターゲット プールに配置できるインスタンスの数に上限はありませんが、インスタンス グループには最大サイズがあります。ターゲット プールのインスタンスがこの最大数を超えている場合は、複数のインスタンス グループにバックエンドを分割する必要があります。
既存のデプロイにバックアップ ターゲット プールが含まれている場合は、それらのインスタンスに別々のインスタンス グループを作成します。このインスタンス グループは、フェイルオーバー グループとして構成されます。
リージョン バックエンド サービスを作成します。
バックアップ ターゲット プールがデプロイに含まれている場合、バックエンド サービスを作成するとともにフェイルオーバー率を指定する必要があります。これは、以前ターゲット プールのデプロイ用に構成したフェイルオーバー率と一致する必要があります。
バックエンド サービスにインスタンス グループ(事前に作成したもの)を追加します。
デプロイにバックアップ ターゲット プールが含まれている場合は、バックエンド サービスに追加する際に、対応するフェイルオーバー インスタンス グループに
--failover
フラグを設定します。新しいバックエンド サービスを参照する転送ルールを構成します。
次のいずれかの方法を選択できます。
バックエンド サービスを参照するように既存の転送ルールを更新します(推奨)。
バックエンド サービスを参照する新しい転送ルールを作成します。この場合、ロードバランサのフロントエンドに新しい IP アドレスを作成する必要があります。次に、DNS 設定を変更して、以前のターゲット プールベースのロードバランサの IP アドレスを新しい IP アドレスにシームレスに移行します。
始める前に
Google Cloud CLI をインストールします。ツールの完全な概要については、gcloud ツールガイドをご覧ください。ロード バランシングに関連するコマンドは、gcloud compute
コマンド グループにあります。
これまで Google Cloud CLI を実行したことがない場合は、最初に gcloud init
を実行して認証します。
このガイドは、bash の知識があることを前提としています。
移行するバックエンドと転送ルールを特定する
すべてのターゲット プールを一覧表示するには、Cloud Shell で次のコマンドを実行します。
gcloud compute target-pools list
移行元のターゲット プールの名前をメモします。この名前は後で TARGET_POOL_NAME として参照されます。
ターゲット プール TARGET_POOL_NAME 内のすべての VM インスタンスを一覧表示するには、Cloud Shell で次のコマンドを実行します。
gcloud compute target-pools describe TARGET_POOL_NAME \ --region=us-central1
VM インスタンスの名前をメモします。これらの名前は、後で BACKEND_INSTANCE1、BACKEND_INSTANCE2、BACKEND_INSTANCE3、BACKEND_INSTANCE4 として参照されます。
外部パススルー ネットワーク ロードバランサの転送ルールを一覧表示するには、Cloud Shell で次のコマンドを実行します。
gcloud compute forwarding-rules list --filter="target: ( TARGET_POOL_NAME )"
転送ルールの名前をメモします。この名前は後で FORWARDING_RULE として参照されます。
ゾーン非マネージド インスタンス グループの作成
バックエンドのあるゾーンごとにゾーン非マネージド インスタンス グループを作成します。設定によっては、必要に応じて複数のインスタンス グループにインスタンスを分割できます。たとえば、2 つのインスタンス グループ(ゾーンごとに 1 つ)を使用し、関連付けられたインスタンス グループの特定のゾーンにすべてのバックエンド VM を配置します。
この例では、2 つのインスタンス グループ(uc-central1-a
ゾーンと us-central1-c
ゾーンに 1 つずつ)を作成します。
インスタンス グループを設定する
コンソール
- Google Cloud コンソールで、[インスタンス グループ] ページに移動します。
- [インスタンス グループを作成] をクリックします。
- 左側のペインで [新しい非マネージド インスタンス グループ] を選択します。
- [名前] に「
ig-us-1
」と入力します。 - [リージョン] で、
us-central1
を選択します。 - [ゾーン] で、[
us-central1-a
] を選択します。 - インスタンスを配置する場所に応じて、ネットワークとサブネットワークを選択します。この例の場合、既存のターゲット プール インスタンスは
default
ネットワークとサブネットワークにあります。 - インスタンス グループにインスタンスを追加するには、[VM インスタンス] セクションで 2 つのインスタンス BACKEND_INSTANCE1 と BACKEND_INSTANCE2 を選択します。
- [作成] をクリックします。
これらの手順を繰り返して、次の仕様で 2 つ目のインスタンス グループを作成します。
- 名前:
ig-us-2
- リージョン:
us-central1
- ゾーン:
us-central1-c
us-central1-c
ゾーンの 2 つのインスタンス BACKEND_INSTANCE3 と BACKEND_INSTANCE4 をこのインスタンス グループに追加します。- 名前:
既存のロードバランサのデプロイにバックアップ ターゲット プールもある場合は、以上の手順を繰り返して、これらのインスタンスに別々のフェイルオーバー インスタンス グループを作成します。
gcloud
gcloud compute instance-groups unmanaged create
コマンドを使用して、us-central1-a
ゾーンに非マネージド インスタンス グループを作成します。gcloud compute instance-groups unmanaged create ig-us-1 \ --zone us-central1-a
us-central1-c
ゾーンに 2 つ目の非マネージド インスタンス グループを作成します。gcloud compute instance-groups unmanaged create ig-us-2 \ --zone us-central1-c
ig-us-1
インスタンス グループにインスタンスを追加します。gcloud compute instance-groups unmanaged add-instances ig-us-1 \ --instances BACKEND_INSTANCE_1,BACKEND_INSTANCE_2 \ --zone us-central1-a
ig-us-2
インスタンス グループにインスタンスを追加します。gcloud compute instance-groups unmanaged add-instances ig-us-2 \ --instances BACKEND_INSTANCE_3,BACKEND_INSTANCE_4 \ --zone us-central1-c
既存のロードバランサのデプロイにバックアップ ターゲット プールもある場合は、以上の手順を繰り返して、これらのインスタンスに別々のフェイルオーバー インスタンス グループを作成します。
ヘルスチェックの作成
インスタンス グループ内のインスタンスの状態を判断するためのヘルスチェックを作成します。既存のターゲット プールベースの外部パススルー ネットワーク ロードバランサには、従来の HTTP ヘルスチェックが関連付けられている可能性があります。
ロードバランサが配信するトラフィックのプロトコルに一致する新しいヘルスチェックを作成できます。バックエンド サービスベースの外部パススルー ネットワーク ロードバランサは、TCP、SSL、HTTP(S)、HTTP/2 ヘルスチェックを使用できます。
コンソール
- Google Cloud コンソールで、[ヘルスチェック] ページに移動します。
- [ヘルスチェックを作成] をクリックします。
- [名前] フィールドに「
network-lb-health-check
」と入力します。 - [スコープ] を [リージョン] に設定します。
- [リージョン] で、
us-central1
を選択します。 - [プロトコル] で [HTTP] を選択します。
- [ポート] に「
80
」と入力します。 - [作成] をクリックします。
gcloud
この例では、バックエンド サービスで使用する非レガシー HTTP ヘルスチェックを作成します。
gcloud compute health-checks create http network-lb-health-check \ --region us-central1 \ --port 80
バックエンド サービスの構成
次のいずれかのセクションを使用して、バックエンド サービスを作成します。既存の外部パススルー ネットワーク ロードバランサにバックアップ ターゲット プールがある場合は、バックエンド サービスを作成するとともにフェイルオーバー率を構成する必要があります。
また、バックエンド サービスにバックエンドを追加する場合、フェイルオーバー インスタンス グループに --failover
フラグを指定する必要があります。
バックアップ ターゲット プールのないデプロイ
gcloud
us-central1
リージョンにリージョン バックエンド サービスを作成します。gcloud compute backend-services create network-lb-backend-service \ --region us-central1 \ --health-checks network-lb-health-check \ --health-checks-region us-central1 \ --protocol TCP
バックエンド サービスに、2 つのインスタンス グループ(
ig-us-1
とig-us-2
)をバックエンドとして追加します。gcloud compute backend-services add-backend network-lb-backend-service \ --instance-group ig-us-1 \ --instance-group-zone us-central1-a \ --region us-central1
gcloud compute backend-services add-backend network-lb-backend-service \ --instance-group ig-us-2 \ --instance-group-zone us-central1-c \ --region us-central1
バックアップ ターゲット プールのあるデプロイ
gcloud
us-central1
リージョンにリージョン バックエンド サービスを作成します。バックエンド サービスのフェイルオーバー率を、ターゲット プールに構成したフェイルオーバー率に合わせて構成します。gcloud compute backend-services create network-lb-backend-service \ --region us-central1 \ --health-check network-lb-health-check \ --failover-ratio 0.5
バックエンド サービスに、2 つのインスタンス グループ(
ig-us-1
とig-us-2
)をバックエンドとして追加します。gcloud compute backend-services add-backend network-lb-backend-service \ --instance-group ig-us-1 \ --instance-group-zone us-central1-a \ --region us-central1
gcloud compute backend-services add-backend network-lb-backend-service \ --instance-group ig-us-2 \ --instance-group-zone us-central1-c \ --region us-central1
フェイルオーバー インスタンス グループを作成した場合は、それをバックエンド サービスに追加します。バックエンド サービスに追加するときに、このバックエンドを
--failover
フラグに指定します。gcloud compute backend-services add-backend network-lb-backend-service \ --instance-group FAILOVER_INSTANCE_GROUP \ --instance-group-zone ZONE \ --region us-central1 \ --failover
転送ルールの構成
トラフィックを新しいバックエンド サービスに送信するように転送ルールを構成する方法は 2 つあります。既存の転送ルールを更新する方法か、新しい IP アドレスで新しい転送ルールを作成する方法です。
既存の転送ルールを更新する(推奨)
set-target
フラグを使用して、新しいバックエンド サービスを参照するように既存の転送ルールを更新します。
gcloud compute forwarding-rules set-target FORWARDING_RULE \ --backend-service network-lb-backend-service \ --region us-central1
FORWARDING_RULE
は、既存の転送ルールの名前に置き換えます。
新しい転送ルールを作成する
既存の転送ルールを更新しない場合は、新しい IP アドレスで新しい転送ルールを作成できます。特定の IP アドレスは一度に複数の転送ルールに関連付けることはできません。このため、受信トラフィックが古い IP アドレスではなく、新しい IP アドレスに送信されるように、DNS 設定を手動で変更する必要があります。
次のコマンドを使用して、新しい IP アドレスを持つ新しい転送ルールを作成します。us-central1
リージョンですでに予約されている IP アドレスを指定する場合は、--address
フラグを使用します。
gcloud compute forwarding-rules create network-lb-forwarding-rule \ --load-balancing-scheme external \ --region us-central1 \ --ports 80 \ --backend-service network-lb-backend-service
ロードバランサをテストする
ロードバランサをテストして、転送ルールが期待どおりの受信トラフィックを配信していることを確認します。
ロードバランサの外部 IP アドレスを調べる
gcloud
次のコマンドを入力して、ロードバランサが使用する network-lb-forwarding-rule
転送ルールの外部 IP アドレスを表示します。
gcloud compute forwarding-rules describe network-lb-forwarding-rule --region us-central1
nc
コマンドを使用して外部 IP アドレスにアクセスする
この例では、セッション アフィニティにデフォルトのハッシュ処理を使用しているため、nc
コマンドからのリクエストは、オペレーティング システムによって割り当てられた送信元ポートに基づいてバックエンド VM にランダムに分散されます。
接続をテストするには、まず次のコマンドを実行して Linux に Netcat をインストールします。
$ sudo apt install netcat
すべてのバックエンド VM が応答するまで、次のコマンドを数回繰り返します。
$ nc IP_ADDRESS 80
古いロードバランサに関連付けられたリソースを削除する
新しい外部パススルー ネットワーク ロードバランサが想定どおりに動作していることを確認したら、古いターゲット プール リソースを削除できます。
- Google Cloud コンソールの [ロード バランシング] ページに移動します。
- ターゲット プールに関連付けられた古いロードバランサを選択し、[削除] をクリックします。
- 作成したヘルスチェックを選択し、[ロードバランサと選択したリソースを削除] をクリックします。
次のステップ
- 外部パススルー ネットワーク ロードバランサがバックエンド サービスでどのように動作するか確認する。バックエンド サービスベースの外部パススルー ネットワーク ロードバランサの概要をご覧ください。
- バックエンド サービスを使用して外部パススルー ネットワーク ロードバランサを構成する。バックエンド サービスを使用して外部パススルー ネットワーク ロードバランサを設定するをご覧ください。
- ターゲット プールを使用して外部パススルー ネットワーク ロードバランサを構成する。ターゲット プールを使用して外部パススルー ネットワーク ロードバランサを設定するをご覧ください。