Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Part-75: To Implement a Regional External Network Load balancer with TCP Pass through in GCP Cloud

2025年09月21日に「Dev.to」が公開したITニュース「Part-75: To Implement a Regional External Network Load balancer with TCP Pass through in GCP Cloud」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

GCPのリージョン外部ネットワークロードバランサー(NLB)は、TCP/UDPレベルで動作し、受信トラフィックを直接バックエンドVMへ転送するLayer 4のパススルー型ロードバランサーだ。アプリケーションデータは処理せず、VMが接続を終端する。インターネット公開するリージョン限定サービスの構築手順を解説。

ITニュース解説

システムエンジニアを目指す皆さんがクラウド環境でサービスを安定稼働させる上で、非常に重要な技術の一つが「ロードバランサー」だ。ロードバランサーは、大量のアクセスが集中するシステムにおいて、そのアクセスを複数のサーバー(これを「バックエンドVM」と呼ぶ)に効率よく分散させる役割を担う装置やサービスである。これにより、特定のサーバーに負荷が集中してシステムがダウンしてしまうことを防ぎ、常に安定したサービス提供を可能にする。

今回解説するテーマは、Google Cloud Platform (GCP) における「リージョナル外部ネットワークロードバランサー(TCPパススルー)」の実装だ。これは、インターネットからアクセスされるサービスに対して、特定のリージョン(地域)内で効率的にトラフィックを分散させる仕組みを提供する。

まず、この「ネットワークロードバランサー(NLB)」の最大の特徴は、それが「レイヤー4」で動作する点にある。インターネット通信は階層構造になっており、レイヤー4とはTCP(Transmission Control Protocol)やUDP(User Datagram Protocol)といった通信プロトコルが動作する層を指す。一般的なウェブサイトで使われるHTTPプロトコルはレイヤー7(アプリケーション層)で動作するが、NLBはより低位のレイヤーで機能するため、HTTPヘッダーのようなアプリケーション固有のデータの中身を読み取ったり、変更したりすることはない。

次に重要なのが「パススルー」という言葉の意味である。一般的なロードバランサーの中には、受け取った通信を一度自分自身で「終端」し、新たな通信としてバックエンドサーバーに送り出すものもある。しかし、このネットワークロードバランサーは「パススルー」型と呼ばれ、トラフィックをロードバランサー自体で終端せず、そのまま直接バックエンドのVM(仮想マシン)へと転送する。つまり、通信の最初の接続確立(TCPハンドシェイクなど)から、実際にデータをやり取りするまでの全てを、バックエンドのVMが直接処理する形となる。ロードバランサーは、単に受け取ったパケットを適切なバックエンドVMに振り分けることに特化しているため、高速で効率的な処理が可能になる。

このNLBの利用にあたっては、いくつか覚えておくべき点がある。 一つは「スコープ」だ。このネットワークロードバランサーは「リージョン限定」であり、グローバル(全世界)にまたがるトラフィック分散には対応していない。利用できるバックエンドVMも、ロードバランサーが配置されているのと同じリージョン内に限定される。 もう一つは「アクセシビリティ」についてだ。外部に公開されるサービスのために「外部NLB」として構成する場合、インターネットからアクセス可能になる。これに対し、「内部NLB」というものもあり、それはGCPのVirtual Private Cloud (VPC) ネットワーク内から、あるいはVPNやInterconnectといった専用回線経由でのみアクセス可能だ。

GCPでこのリージョナル外部ネットワークロードバランサーを実装する手順は、主に以下のような流れになる。

最初のステップは「ファイアウォールルールの作成」だ。これは、インターネットからの特定の通信(例えばTCPポート80番)をバックエンドVMに許可するための設定である。ロードバランサーがトラフィックを転送しても、VM側でその通信を受け入れる準備ができていなければサービスは機能しないため、この設定は不可欠だ。

次に、いよいよ「ロードバランサーの作成」だ。GCPコンソール(管理画面)の「ネットワークサービス」から「ロードバランシング」を選択し、設定を進めていく。 まず、ロードバランサーの種類として「ネットワークロードバランサー(TCP/SSL)」を選び、インターネットからのトラフィックを単一リージョンで「パススルー」する設定を行う。 ロードバランサーの核となる「バックエンド構成」では、「バックエンドサービス」と呼ばれる論理的なグループを作成する。このサービスには、実際にユーザーからのリクエストを処理する仮想マシンのグループ(インスタンスグループ)を登録する。例では「zmig1-us-1」と「zmig1-us-2」という二つのインスタンスグループがポート80でトラフィックを受け付けるように設定されている。また、バックエンドVMが正常に動作しているかを確認するための「ヘルスチェック」もここで設定する。ヘルスチェックは、定期的にVMの健康状態を確認し、異常のあるVMへのトラフィック転送を停止することで、サービスの信頼性を保つ重要な仕組みだ。 最後に「フロントエンド構成」を行う。これは、ユーザーがアクセスするためのインターネットに公開されるIPアドレスとポートを設定する部分だ。例では、新しく作成した静的IPアドレス「regional-lb-ip1」のポート80番で外部からのアクセスを受け付けるようにしている。

これら一連の設定が完了したら、設定内容を確認し、ロードバランサーを作成する。ロードバランサーが完全に稼働するまでには数分かかる場合があるため、その間は待機が必要だ。

実際に稼働を確認するには、作成したロードバランサーのIPアドレスにウェブブラウザからアクセスするか、curlコマンドを使って繰り返しリクエストを送信してみる。これにより、トラフィックが複数のバックエンドVMに適切に分散されていることを確認できる。

検証が終わった後は、不要な費用発生を防ぐためにも、作成したロードバランサーや関連する仮想マシングループなどのリソースを忘れずに削除することが推奨される。

GUI(グラフィカルユーザーインターフェース)での設定手順が示されているが、gcloudコマンドラインツールを使用しても同様のロードバランサーを構築できる。gcloud compute addresses createでIPアドレスを予約し、gcloud compute backend-services createでバックエンドサービスを定義し、gcloud compute forwarding-rules createで転送ルールを設定する、といった一連のコマンドを実行することで、自動化されたデプロイメントも可能になる。

このリージョナル外部ネットワークロードバランサー(TCPパススルー)は、特にHTTP/HTTPS以外のプロトコルを使用するサービスや、ロードバランサーでSSL終端を行わずバックエンドVMで直接SSL処理を行いたい場合など、特定のユースケースで非常に有効な選択肢となる。基本的なロードバランサーの概念と、GCPでの具体的な設定方法を理解することは、クラウド環境でのシステム構築において大きな助けとなるだろう。

関連コンテンツ

関連IT用語