このガイドに進む前に、インターネット NEG の概要(制限事項を含む)を理解しておいてください。
次のアーキテクチャ図は、外部バックエンドを使用するリージョン内部プロキシ ネットワーク ロードバランサのフロントエンドを示しています。権限
このガイドを使用する前に、インターネット NEG を作成し、プロジェクトでプロキシ ネットワーク ロードバランサを作成または変更する必要があります。そのためには、プロジェクトのオーナーまたは編集者(roles/owner
または roles/editor
)であるか、次の Compute Engine IAM のロールがすべて必要です。
タスク | 必要なロール |
---|---|
ロードバランサ コンポーネントの作成と変更 | Compute ネットワーク管理者 ( roles/compute.networkAdmin ) |
NEG の作成と変更 | Compute インスタンス管理者 ( roles/compute.instanceAdmin ) |
Google Cloud の外部で外部バックエンド環境を設定する
外部バックエンド環境を設定するには、次のセクションをご覧ください。
ネットワーク エンドポイントを構成する
外部バックエンドを Google Cloud に公開するようにネットワーク エンドポイントを構成します。IP:Port の組み合わせ、または完全修飾ドメイン名(FQDN)とポートのいずれかが、インターネット経由で到達可能であることを確認します。このエンドポイントは、後でインターネット NEG から参照されます。
インターネット NEG エンドポイントの構成要件の詳細については、インターネット NEG の概要をご覧ください。
外部バックエンドに Google Cloud からのトラフィックの受信を許可する
この手順は、プロキシ専用サブネットを作成し、Cloud NAT ゲートウェイを設定してから完了できます。
Google Cloud からのリクエストが外部バックエンドに到達できるようにするには、次の操作を行う必要があります。
- Google Cloud からの下り(外向き)トラフィックに使用される IP アドレスを使用して Cloud NAT ゲートウェイを構成します。ゲートウェイは、プロキシ専用サブネットの範囲を外部 IP アドレスにマッピングします。手順については、Cloud NAT ゲートウェイを設定するをご覧ください。
- Google Cloud からのトラフィックが外部バックエンドに到達できるように、外部バックエンド環境が構成されていることを確認します。たとえば、NAT ゲートウェイに事前予約した IP アドレスを使用した場合は、外部環境でこれらの IP アドレスを許可リストに登録します。この設定を行うには、外部環境のネットワーク管理者またはセキュリティ管理者との連携が必要になる場合があります。
Google Cloud 環境を設定する
2 つのサブネット(ロードバランサ コンポーネント用のサブネットと、リージョンのプロキシ専用サブネット)を持つ VPC ネットワークが必要です。次に、インターネット NEG バックエンドを使用するロードバランサを作成します。
VPC ネットワークとサブネットを作成する
このサブネットは、ロードバランサのコンポーネントの作成に使用されます。
Cloud コンソール
- Google Cloud コンソールの [VPC ネットワーク] ページに移動します。
[VPC ネットワーク] に移動 - [VPC ネットワークを作成] をクリックします。
- 名前(LB_NETWORK)を入力します。
- [サブネット] セクションで次の設定を行います。
- [サブネット作成モード] を [カスタム] に設定します。
- [新しいサブネット] セクションに、次の情報を入力します。
- 名前: LB_SUBNET_NAME
- リージョン: REGION
- IP アドレス範囲: LB_SUBNET_RANGE
- [完了] をクリックします。
- [作成] をクリックします。
gcloud
gcloud compute networks create
コマンドを使用して、カスタム VPC ネットワークを作成します。gcloud compute networks create LB_NETWORK \ --subnet-mode=custom
LB_NETWORK ネットワークにサブネットを作成します。
gcloud compute networks subnets create LB_SUBNET_NAME \ --network=LB_NETWORK \ --range=LB_SUBNET_RANGE \ --region=REGION
プロキシ専用サブネットを構成する
このプロキシ専用サブネットは、REGION リージョン内のすべてのリージョン Envoy ベースのロードバランサに使用されます。
コンソール
- Google Cloud コンソールの [VPC ネットワーク] ページに移動します。
[VPC ネットワーク] に移動 - リストからネットワークを選択します。
- [サブネットを追加] をクリックします。
- 名前(PROXY_ONLY_SUBNET_NAME)を入力します。
- リージョン(REGION)を選択します。
- [目的] を [リージョン マネージド プロキシ] に設定します。
- IP アドレス範囲(PROXY_ONLY_SUBNET_RANGE)を入力します。
- [追加] をクリックします。
gcloud
gcloud compute networks subnets
create
コマンドを使用して、プロキシ専用サブネットを作成します。
gcloud compute networks subnets create PROXY_ONLY_SUBNET_NAME \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=REGION \ --network=LB_NETWORK \ --range=PROXY_ONLY_SUBNET_RANGE
Cloud NAT ゲートウェイを設定する
Cloud NAT ゲートウェイを構成する前に、関連する制限事項と料金に関する考慮事項を確認してください。詳細については、リージョン NEG: Cloud NAT ゲートウェイを使用するをご覧ください。次のコマンドは、Cloud NAT ゲートウェイを設定する方法を示しています。Cloud NAT ゲートウェイは、自動 NAT の外部 IP アドレス(オンデマンドで割り当て)を使用するか、手動で事前予約された一連の外部 IP アドレスを使用するように構成できます。ゲートウェイは、プロキシ専用サブネットの範囲を外部 IP アドレスにマッピングします。
自動 NAT 割り振り IP アドレスを設定する
NAT IP アドレスの自動割り振りを使用して Cloud NAT ゲートウェイを作成する場合、Cloud NAT ゲートウェイが IP アドレスを割り振る Network Service Tiers(プレミアム ティアまたはスタンダード ティア)を指定できます。
コンソール
Google Cloud コンソールで、[Cloud NAT] ページに移動します。
[開始] または [Cloud NAT ゲートウェイを作成] をクリックします。
ゲートウェイ名 LB_NAT_CONFIG を入力します。
[NAT タイプ] で [公開] を選択します。
[ネットワーク] リストで、[LB_NETWORK] を選択します。
[リージョン] リストで [REGION] を選択します。
リージョンに Cloud Router を作成します。
[送信元エンドポイントのタイプ] で、[マネージド プロキシ ロードバランサ] を選択します。
[ソース] リストで [カスタム] を選択します。
- [サブネット] で [PROXY_ONLY_SUBNET_NAME] を選択します。
[Cloud NAT IP アドレス] リストで、[自動(推奨)] を選択します。
[ネットワーク サービス ティア] で、[プレミアム] と [スタンダード] のどちらかを選択します。
[作成] をクリックします。
gcloud
外部バックエンド環境でトラフィックを外部バックエンドに送信できる特定の Google Cloud IP アドレスを許可リストに登録する必要がない場合は、動的に割り振られる IP アドレスを使用します。
Cloud Router を作成します。
gcloud beta compute routers create ROUTER_NAME \ --network=LB_NETWORK \ --region=REGION
Cloud NAT ゲートウェイを設定します。
gcloud beta compute routers nats create LB_NAT_CONFIG \ --router=ROUTER_NAME \ --endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \ --nat-custom-subnet-ip-ranges=PROXY_ONLY_SUBNET_NAME \ --auto-allocate-nat-external-ips \ --region=REGION
次のように置き換えます。
LB_NAT_CONFIG
: NAT 構成の名前。ROUTER_NAME
: Cloud Router の名前。REGION
: 作成する NAT のリージョン。指定しない場合、リージョンの選択を求められる場合があります(インタラクティブ モードのみ)。PROXY_ONLY_SUBNET_NAME
: プロキシ専用サブネットの名前。
手動で割り振られた IP アドレスを設定する
手動で割り振られた IP アドレスは、外部バックエンド環境で特定の Google Cloud IP アドレスの許可リストを使用する必要がある場合にのみ使用します。外部バックエンド環境で許可リストが必要ない場合は、前述のように動的割り振りを使用します。
Cloud NAT ゲートウェイを作成するときに、特定の条件に応じて、プレミアム ティア、スタンダード ティア、またはその両方から NAT IP アドレスの手動割り当てを選択できます。
コンソール
Google Cloud コンソールで、[Cloud NAT] ページに移動します。
[開始] または [Cloud NAT ゲートウェイを作成] をクリックします。
ゲートウェイ名 LB_NAT_CONFIG を入力します。
[ネットワーク] リストで、[LB_NETWORK] を選択します。
[リージョン] リストで [REGION] を選択します。
リージョンの Cloud Router を選択または作成します。
[送信元エンドポイントのタイプ] で、[マネージド プロキシ ロードバランサ] を選択します。
[ソース] リストで [カスタム] を選択します。
- [サブネット] で [PROXY_ONLY_SUBNET_NAME] を選択します。
[Cloud NAT IP アドレス] リストで、[手動] を選択します。
[ネットワーク サービス ティア] で、[プレミアム] と [スタンダード] のどちらかを選択します。
NAT に使用する予約された静的外部 IP アドレスを選択または作成します。
追加の IP アドレスを指定する場合は、[IP アドレスを追加] をクリックし、予約した静的外部 IP アドレスを選択または作成します。
[作成] をクリックします。
gcloud
IP アドレスを作成します。ゲートウェイは 1 対 1 の NAT 変換を行うため、予約された IP アドレスのプールが予想されるトラフィック量の処理に十分な大きさであることを確認する必要があります。NAT IP アドレスの割り振りが不十分な場合、トラフィックが失われる可能性があります。
gcloud compute addresses create IP_ADDRESS_NAME_1 IP_ADDRESS_NAME_2 [IP_ADDRESS_NAME_3 ...] \ --region=REGION
Cloud Router を作成します。
gcloud compute routers create ROUTER_NAME \ --network=LB_NETWORK \ --region=REGION
Cloud NAT ゲートウェイを設定します。
gcloud beta compute routers nats create LB_NAT_CONFIG \ --router=ROUTER_NAME \ --endpoint-types=ENDPOINT_TYPE_MANAGED_PROXY_LB \ --nat-custom-subnet-ip-ranges=PROXY_ONLY_SUBNET_NAME \ --nat-external-ip-pool=IP_ADDRESS_NAME_1,IP_ADDRESS_NAME_2,[IP_ADDRESS_NAME_3 ...] \ --region=REGION
次のように置き換えます。
LB_NAT_CONFIG
: NAT 構成の名前。ROUTER_NAME
: Cloud Router の名前。PROXY_ONLY_SUBNET_NAME
: プロキシ専用サブネットの名前。REGION
: 作成する NAT のリージョン。指定しない場合、リージョンの選択を求められる場合があります(インタラクティブ モードのみ)。
詳細については、Cloud NAT のドキュメントの NAT のサブネット範囲を指定するをご覧ください。
外部バックエンドが Google Cloud からのトラフィックを受信できるように、外部バックエンド環境で NAT IP アドレス範囲の許可リストを使用してください。
ロードバランサの IP アドレスを予約する
ロードバランサの内部 IP アドレスを予約します。
コンソール
Google Cloud コンソールを使用してスタンドアロンの内部 IP アドレスを予約できます。
- [VPC ネットワーク] ページに移動します。
- 環境間のハイブリッド接続の構成に使用したネットワークをクリックします。
- [静的内部 IP アドレス] をクリックして、[静的アドレスを予約] をクリックします。
- 名前(LB_IP_ADDRESS)を入力します。
- [サブネット] で [LB_SUBNET_NAME] を選択します。
- 予約する IP アドレスを指定する場合は、[静的 IP アドレス] の下で、[自分で選択] を選択し、[カスタム IP アドレス] に入力します。それ以外の場合、サブネットの IP アドレスは自動的に割り当てられます。
- この IP アドレスを複数の転送ルールで使用する場合は、[目的] で [共有] を選択します。
- [予約] をクリックして、プロセスを終了します。
gcloud
gcloud CLI を使用して
compute addresses create
コマンドを実行します。gcloud compute addresses create LB_IP_ADDRESS \ --region=REGION \ --subnet=LB_SUBNET_NAME \
割り振られた IP アドレスを表示するには、
compute addresses describe
コマンドを使用します。gcloud compute addresses describe LB_IP_ADDRESS \ --region=REGION
インターネット NEG を設定する
インターネット NEG は、INTERNET_FQDN_PORT
エンドポイントまたは INTERNET_IP_PORT
エンドポイントを使用して作成できます。
コンソール
INTERNET_FQDN_PORT
エンドポイントを含む NEG を作成する
Google Cloud コンソールで、[ネットワーク エンドポイント グループ] ページに移動します。
[ネットワーク エンドポイント グループを作成] をクリックします。
インターネット NEG の INTERNET_NEG_NAME を指定します。詳しくは、リソースの命名規則をご覧ください。
[ネットワーク エンドポイント グループの種類] リストで、[ネットワーク エンドポイント グループ(インターネット)] を選択して、次の操作を行います。
- [範囲] リストで、[リージョン] を選択します。
- 省略可: [リージョン] リストで、この NEG の REGION を変更します。
- [ネットワーク] リストで、[LB_NETWORK] を選択します。
- [デフォルト ポート] ボックスに「DEFAULT_PORT_NUMBER」と入力します。
- [エンドポイントの追加] リストで、[完全修飾ドメイン名とポート] を選択します。
- [作成] を選択します。
INTERNET_FQDN_PORT
エンドポイントを NEG に追加します。
Google Cloud コンソールで、[ネットワーク エンドポイント グループ] ページに移動します。
- [INTERNET_NEG_NAME] をクリックします。
完全修飾ドメイン名を入力します(
myorg.example.com
など)。FQDN オブジェクトは、標準の FQDN 構文で指定する必要があります。省略可: [ポートタイプ] で [カスタム] を選択します。[ポートタイプ] が
Default
の場合、NEG のデフォルト ポートが使用されます。- [ポート番号] ボックスに「PORT_NUMBER_1」と入力します。
- [作成] を選択します。
INTERNET_IP_PORT
エンドポイントを含む NEG を作成する
Google Cloud コンソールで、[ネットワーク エンドポイント グループ] ページに移動します。
[ネットワーク エンドポイント グループを作成] をクリックします。
インターネット NEG の名前 INTERNET_NEG_NAME を指定します。詳しくは、リソースの命名規則をご覧ください。
[ネットワーク エンドポイント グループの種類] リストで、[ネットワーク エンドポイント グループ(インターネット)] を選択して、次の操作を行います。
- [範囲] リストで、[リージョン] を選択します。
- 省略可: [リージョン] リストで、この NEG の REGION を変更します。
- [ネットワーク] リストで、[LB_NETWORK] を選択します。
- [デフォルト ポート] ボックスに「DEFAULT_PORT_NUMBER」と入力します。
- [エンドポイントの追加] リストで、[IP とポート] を選択します。
- [作成] を選択します。
INTERNET_IP_PORT
エンドポイントを NEG に追加します。
Google Cloud コンソールで、[ネットワーク エンドポイント グループ] ページに移動します。
- [INTERNET_NEG_NAME] をクリックします。
- [IP アドレス] フィールドに「IP_ADDRESS_1」と入力します。
省略可: [ポートタイプ] リストで、[カスタム] を選択します。[ポートタイプ] が
Default
の場合、NEG のデフォルト ポートが使用されます。- [ポート番号] フィールドに「PORT_NUMBER_1」と入力します。
- [作成] を選択します。
gcloud
INTERNET_FQDN_PORT
エンドポイントを含む NEG を作成するには:
NEG リソースを作成します。
gcloud beta compute network-endpoint-groups create INTERNET_NEG_NAME \ --network-endpoint-type=INTERNET_FQDN_PORT \ --default-port=DEFAULT_PORT_NUMBER \ --network=LB_NETWORK \ --region=REGION
エンドポイントを NEG に追加します。ポートが指定されていない場合は、NEG のデフォルト ポートが使用されます。
gcloud beta compute network-endpoint-groups update INTERNET_NEG_NAME \ --add-endpoint="fqdn=FULLY_QUALIFIED_DOMAIN_NAME_1,port=PORT_NUMBER_1" \ [--add-endpoint="fqdn=FULLY_QUALIFIED_DOMAIN_NAME_2,port=PORT_NUMBER_2" \] --region=REGION
次のように置き換えます。
FULLY_QUALIFIED_DOMAIN_NAME
: エンドポイントの完全修飾ドメイン名PORT_NUMBER
: エンドポイントのポート番号
NEG ごとに最大 256 個のエンドポイントを追加できます。
ドメインがインターネット経由で解決できる場合は、DNS の設定に他の構成は必要ありません。ただし、プライベート FQDN を使用している場合は、DNS の解決が容易になるように Cloud DNS を構成する必要があります。この名前は Cloud DNS でホストされているか、Cloud DNS からオンプレミス DNS への DNS 転送によって解決できる必要があります。
まず、プロジェクトで DNS レコードをホストする Cloud DNS ゾーンを作成します。次に、DNS レコードを追加します。具体的な構成手順については、Cloud DNS のドキュメントをご覧ください。
INTERNET_IP_PORT
エンドポイントを含む NEG を作成するには:
NEG リソースを作成します。
gcloud beta compute network-endpoint-groups create INTERNET_NEG_NAME \ --network-endpoint-type=INTERNET_IP_PORT \ --default-port=DEFAULT_PORT_NUMBER \ --network=LB_NETWORK \ --region=REGION
エンドポイントを NEG に追加します。ポートが指定されていない場合は、NEG のデフォルト ポートが使用されます。
gcloud beta compute network-endpoint-groups update INTERNET_NEG_NAME \ --add-endpoint="ip=IP_ADDRESS_1,port=PORT_NUMBER_1" \ [--add-endpoint="ip=IP_ADDRESS_2,port=PORT_NUMBER_2" \] --region=REGION
次のように置き換えます。
IP_ADDRESS
: エンドポイントの IP アドレスPORT_NUMBER
: エンドポイントのポート番号
この手順を繰り返して、NEG ごとに最大 256 個のエンドポイントを追加できます。
ロードバランサを作成する
コンソール
構成を開始する
Google Cloud コンソールで、[ロード バランシング] ページに移動します。
- [ロードバランサを作成] をクリックします。
- [ロードバランサの種類] で [ネットワーク ロードバランサ(TCP / UDP / SSL)] を選択し、[次へ] をクリックします。
- [プロキシまたはパススルー] で [プロキシ ロードバランサ] を選択し、[次へ] をクリックします。
- [インターネット接続または内部] で [内部] を選択し、[次へ] をクリックします。
- [クロスリージョンまたはシングル リージョンのデプロイ] で [リージョン ワークロードに最適] を選択し、[次へ] をクリックします。
- [構成] をクリックします。
基本構成
- ロードバランサ名を入力します。
- [リージョン] で REGION を選択します。
- [ネットワーク] で LB_NETWORK を選択します。
プロキシ専用サブネットを予約する
プロキシ専用サブネットを予約するには:
- [サブネットを予約] をクリックします。
- [名前] に「PROXY_ONLY_SUBNET_NAME」と入力します。
- [IP アドレス範囲] に「PROXY_ONLY_SUBNET_RANGE」と入力します。
- [追加] をクリックします。
フロントエンドの構成
- [フロントエンドの構成] をクリックします。
- [名前] を入力します。
- [サブネットワーク] で、[LB_SUBNET_NAME] を選択します。
- [IP アドレス] で、以前に予約した IP アドレスを選択します。 LB_IP_ADDRESS
- [ポート番号] には、1~65535 の範囲のポート番号を 1 つ指定します。転送ルールは、宛先ポートが一致するパケットのみを転送します。
- [完了] をクリックします。
バックエンドの構成
- [バックエンドの構成] をクリックします。
- バックエンド サービスとバックエンド バケットをクリックします。
- [バックエンド サービスを作成] をクリックします。
- 名前を入力します。
- [バックエンド タイプ] で [インターネット ネットワーク エンドポイント グループ] を選択します。
- [プロトコル] で、[TCP] を選択します。
- [バックエンド] の [新しいバックエンド] ウィンドウで、前の手順で作成したリージョン インターネット ネットワーク エンドポイント グループを選択します。
- [完了] をクリックします。
- ヘルスチェックを構成します。
- [ヘルスチェック] で [ヘルスチェックを作成] を選択します。
- ヘルスチェックの名前を TCP_HEALTH_CHECK_NAME に設定します。
- [プロトコル] で、[TCP] を選択します。
- [ポート] を
80
に設定します。 - 残りのデフォルト値は変更せずに、[保存] をクリックします。
- [作成] をクリックします。
確認と完了
- [確認と完了] をクリックします。
- 設定に問題がない場合は、[作成] をクリックします。
gcloud
- 省略可: ヘルスチェックを作成します。外部バックエンドのヘルスチェック プローブは分散 Envoy ヘルスチェックを使用し、後で NAT 変換されます。
gcloud compute health-checks create tcp TCP_HEALTH_CHECK_NAME \ --region=REGION \ --use-serving-port
- バックエンド サービスを作成します。
gcloud compute backend-services create BACKEND_SERVICE \ --load-balancing-scheme=INTERNAL_MANAGED \ --health-checks=TCP_HEALTH_CHECK_NAME \ --health-checks-region=REGION \ --region=REGION
- インターネット NEG をバックエンド サービスに追加します。
gcloud compute backend-services add-backend BACKEND_SERVICE \ --network-endpoint-group=INTERNET_NEG_NAME \ --network-endpoint-group-region=REGION \ --region=REGION
gcloud compute backend-services add-backend BACKEND_SERVICE \ --network-endpoint-group=INTERNET_NEG_NAME \ --network-endpoint-group-region=REGION \ --region=REGION
リクエストをバックエンド サービスに転送するターゲット TCP プロキシを作成します。
gcloud compute target-tcp-proxies create TARGET_TCP_PROXY_NAME \ --backend-service=BACKEND_SERVICE \ --region=REGION
受信リクエストをプロキシにルーティングする転送ルールを作成します。--ports には、1~65535 の範囲内のポート番号を 1 つ指定します。転送ルールは、宛先ポートが一致するパケットのみを転送します。
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network-tier=PREMIUM \ --network=LB_NETWORK \ --subnet=LB_SUBNET_NAME \ --address=LB_IP_ADDRESS \ --target-tcp-proxy=TARGET_TCP_PROXY_NAME \ --target-tcp-proxy-region=REGION \ --region=REGION \ --ports=PORT_NUMBER
ロードバランサをテストする
ロードバランサを構成したので、ロードバランサの IP アドレスにトラフィックを送信できるようになりました。
クライアント VM を作成する
この例では、ロードバランサと同じリージョンにクライアント VM を作成しています(vm-client
)。クライアントを使用するのは、ロードバランサの構成を検証し、想定される動作を示すためです。
gcloud
クライアント VM はロードバランサと同じ REGION 内の任意のゾーンにあり、同じ VPC ネットワーク内の任意のサブネットを使用できます。
gcloud compute instances create vm-client \ --image-family=debian-10 \ --image-project=debian-cloud \ --tags=allow-ssh \ --network=LB_NETWORK \ --subnet=LB_SUBNET_NAME \ --zone=ZONE
ロードバランサにトラフィックを送信する
ロードバランサの構成が最初にデプロイされた後、構成が反映されるまでには数分かかることがあります。
SSH 経由でクライアント インスタンスに接続します。
gcloud compute ssh vm-client \ --zone=ZONE
ロードバランサがバックエンドのホスト名を想定どおりに処理していることを確認します。
ロードバランサの IP アドレスを表示するには、
compute addresses describe
コマンドを使用します。gcloud compute addresses describe LB_IP_ADDRESS \ --region=REGION
IP アドレスをメモしておきます。
curl
を使用すると、ロードバランサ転送ルールの作成時に指定した IP アドレスとポートで、ロードバランサにトラフィックを送信できます。インターネット NEG バックエンドがリクエストに応答しているかどうかのテストは、外部エンドポイントで実行されているサービスによって異なります。
追加の構成オプション
グローバル アクセス(クライアントが別のリージョンにある場合)など、リージョン内部プロキシ ネットワーク ロードバランサでさらに多くの機能を有効にするには、VM インスタンス グループのバックエンドを使用して内部アプリケーション ロードバランサを設定する: 追加の構成を参照してください。
次のステップ
- リージョン内部プロキシ ネットワーク ロードバランサのモニタリングを設定する。モニタリングの使用をご覧ください。
- ロードバランサの設定をクリーンアップする。