【ITニュース解説】Part-67: 🌍 Mastering Google Cloud Global Load Balancers: Regional MIG + Global HTTP Demo
2025年09月20日に「Dev.to」が公開したITニュース「Part-67: 🌍 Mastering Google Cloud Global Load Balancers: Regional MIG + Global HTTP Demo」について初心者にもわかりやすく解説しています。
ITニュース概要
Google Cloudで、複数の地域に分散したウェブサーバー群(MIG)にHTTPリクエストを効率よく振り分けるグローバルロードバランサーの構築法を解説。VPC、ファイアウォール、ヘルスチェックを設定し、ウェブサーバーをMIGにデプロイ。利用者からのアクセスを最適化する手順を学ぶ。
ITニュース解説
この解説は、Google Cloudで提供されるグローバルロードバランサーを使って、世界中に分散配置されたウェブアプリケーションを効率的に運用する方法をシステムエンジニアを目指す初心者に分かりやすく説明するものだ。複数の地域にウェブサーバーを配置し、ユーザーからのアクセスを最も近いサーバーへ自動的に振り分けることで、ウェブサイトの応答速度を向上させ、障害発生時にもサービスを継続できる堅牢なシステムを構築できる。
まず、基盤となるネットワークの準備から始める。クラウド上に自分専用の仮想ネットワークであるVPC(Virtual Private Cloud)を作成する。ここではvpc3-customという名前のVPCを構築し、このVPC内で全てのコンピューティングリソースが連携するように設定する。次に、このVPCのセキュリティを確保するためにファイアウォールルールを設定する。これにより、外部からの不正なアクセスを防ぎつつ、必要な通信だけを許可する。具体的には、システム管理用のSSH接続(ポート22)や、ウェブサーバーが正常に動作しているかを確認するためのヘルスチェックシステムからの通信(ポート80)、さらに診断目的で使用されるICMP通信などを許可するルールを作成する。また、VPC内部の仮想マシン同士の通信も許可することで、内部ネットワークでの連携をスムーズにする。このVPC内に、アメリカ中部(us-central1)とアメリカ東部(us-east1)の二つの異なる地域にus-central1-subnetとus-east1-subnetという名前のサブネットを作成する。サブネットはVPCをさらに細かく区切ったネットワークの範囲であり、各地域に独立したネットワーク空間を用意することで、地域ごとのリソース配置を可能にする。
次に、ウェブサーバーとなる仮想マシン(VM)群の準備を進める。まず、インスタンスのひな形となるインスタンステンプレートを作成する。これは、新しい仮想マシンを作る際の設定をテンプレートとして保存しておくものだ。今回はウェブサーバーとしてNginxをインストールし、ホスト名やIPアドレスなどを表示する簡単なHTMLページを提供するスクリプトを、このテンプレートに組み込む。これにより、テンプレートから作成される全ての仮想マシンが同じウェブサーバーとして機能するようになる。
ウェブサーバー群の管理には、MIG(Managed Instance Group:マネージドインスタンスグループ)という仕組みを利用する。MIGは、作成したインスタンステンプレートを基に、指定された数の仮想マシンを自動的に作成し、管理してくれる機能だ。また、MIGは仮想マシンがダウンした場合に自動的に再起動したり、トラフィックの増減に応じて仮想マシンの数を自動的に増減させたりする(オートスケーリング)機能も持つため、アプリケーションの可用性と信頼性を高める上で非常に重要となる。ここでは、us-central1地域にmig1-us-central1、us-east1地域にmig2-us-east1という二つのMIGをそれぞれ作成し、各MIG内に2台の仮想マシンを配置する。各MIGには、後述のロードバランサーがバックエンドのウェブサーバーと通信するために「webserver80:80」という名前付きポートを設定する。
MIGを構成する各仮想マシンが正常に動作しているかを監視するため、グローバルヘルスチェックを設定する。これは、定期的に仮想マシンにHTTPリクエストを送信し、正しく応答が返ってくるかを確認するものだ。異常が検知された場合、ロードバランサーはその仮想マシンへのトラフィックのルーティングを停止し、正常な仮想マシンにのみトラフィックを振り分けることで、ユーザーへのサービス提供を継続する。このヘルスチェックは、グローバルに設定されるため、世界中のどの地域のMIGに対しても適用される。
これらの準備が整ったら、いよいよグローバルロードバランサーの構築に取り掛かる。ここで構築するのは、HTTP/HTTPSのトラフィックを処理する「グローバル外部アプリケーションロードバランサー」だ。これはインターネットからのアクセスを受け付け、世界中のユーザーを最も近い地域の正常なウェブサーバーに効率的に振り分ける役割を担う。
ロードバランサーの設定は主に「フロントエンド」と「バックエンド」に分けられる。 まず「フロントエンド設定」では、ユーザーがアクセスするための窓口を設定する。ここでは、グローバルで一意となる外部静的IPアドレスを新規に取得し、それをロードバランサーの入り口として割り当てる。プロトコルはHTTP、ポートは標準の80番を設定する。ユーザーはこのIPアドレスにアクセスすることで、ロードバランサーを通じてウェブアプリケーションに到達できるようになる。
次に「バックエンド設定」では、ユーザーからのリクエストを受け取る実際のウェブサーバー群を設定する。今回はmybackend-svc1という名前のバックエンドサービスを作成し、このサービスに先ほど作成した二つのMIG、すなわちmig1-us-central1とmig2-us-east1を登録する。これにより、ロードバランサーはこれらのMIGに含まれる仮想マシンに対してトラフィックを分散できるようになる。バックエンドサービスには、各仮想マシンが正常であるかを確認するためのヘルスチェック(前述のグローバルHTTPヘルスチェック)も関連付けることで、異常なサーバーへのリクエストを防ぐ。
最後にルーティングルールを設定するが、今回はシンプルな「ホストとパスのルール」を使用し、全てのトラフィックを上記のバックエンドサービスに送るように設定する。これらの設定を確認し、ロードバランサーを作成する。
ロードバランサーの作成には数分かかる場合があるが、完了すれば取得したグローバルIPアドレスを使ってウェブブラウザからアプリケーションにアクセスできるようになる。この時、ロードバランサーは自動的にユーザーに最も近い地域のMIG内の仮想マシンにリクエストを転送する。例えば、日本からアクセスした場合、地理的に最も近いus-central1またはus-east1のMIG内の仮想マシンに応答が返されることになる。この多地域機能をテストするには、異なる地域の仮想マシンにSSHで接続し、そこからロードバランサーのIPアドレスに対してcurlコマンドを実行することで、リクエストがどの地域の仮想マシンによって処理されたかを確認できる。これにより、ロードバランサーが地理的な近接性を考慮してトラフィックをルーティングしていることがわかる。
この一連の作業で、地理的に分散されたウェブサーバー群に対して、高速かつ高可用性なアクセスを提供するグローバルロードバランサーが構築できる。不要になったリソースは、クラウドのコストを抑えるために、最後に作成したロードバランサーから順番に削除することが推奨される。これにより、システムエンジニアとして、大規模なウェブサービスを支えるための基本的なインフラ構築と運用スキルを習得できる。