Blog

[Google Cloud Platform]マルチリージョン対応のGCPのロードバランシング機能を試してみた


こんにちは、アドテク本部でネットワークエンジニアをしている菊地です。
マルチリージョン対応のロードバランシングは現時点でGCPのみ可能という点に興味を持ち、実際に設定をして動作検証も試しました。
今記事では、マルチリージョン対応のロードバランシングで実現可能なことを紹介します。

記事の流れはこのよう以下のようになっております。

  • GCPのロードバランシングの特徴
  • GCPのロードバランシングの設定方法
  • 動作検証をして分かったこと
  • まとめ

このような流れで説明していきたいと思います。

 

★GCPでのロードバランシングの特徴

GCPのロードバランシングの特徴についていくつか挙げておきます。

  • L4とL7両方のロードバランシングが可能
  • 各リージョンごとにインスタンスグループを作成し、各インスタンスグループ配下には同じリージョンのVMインスタンスが所属
  • マルチリージョン対応のロードバランシングを実現したい場合、バックエンドサービスにバランシング対象となるインスタンスグループを設定
  • 1つのグローバルIPアドレスで複数のリージョン間を跨ぐ負荷分散や障害時の切り替えが可能

これらの特徴のうち、特に複数リージョンをまたぐ負荷分散や障害時の切り替えについて正しく動作するのか気になりました。

 

★GCPのロードバランシングの設定(マルチリージョン対応の場合)

 

1.ファイアウォールルールの作成

作成手順:
– ネットワーキング→ファイアウォール ルール→ファイアウォール ルールの作成

今回はHTTP通信をバランシングしたいため、全ての宛先からのHTTP通信を許可するルールを作成
ターゲットタグの名前も忘れずに設定

%e3%83%95%e3%82%a1%e3%82%a4%e3%82%a2%e3%82%a6%e3%82%a9%e3%83%bc%e3%83%ab%e3%83%ab%e3%83%bc%e3%83%ab%e3%81%ae%e4%bd%9c%e6%88%90

2.ロードバランス用の新たな静的アドレスを予約

予約手順:
– ネットワーキング→外部IPアドレスの静的アドレス予約を押す→名前を入力、タイプはグローバルを指定

%e9%9d%99%e7%9a%84%e3%82%a2%e3%83%88%e3%82%99%e3%83%ac%e3%82%b9%e4%ba%88%e7%b4%84

3.ヘルスチェックの設定

作成手順:
– Compute Engine→ヘルスチェック→ヘルスチェックの作成

ヘルスチェックの作成の設定項目

設定項目 設定内容
名前 任意の名前
プロトコル 今回はHTTPを選択
ポート 今回は80番を選択
リクエストパス 任意のパスを記述
ヘルスチェックの条件 チェック間隔(秒)、タイムアウト(秒)、正常しきい値、異常しきい値

%e3%83%98%e3%83%ab%e3%82%b9%e3%83%81%e3%82%a7%e3%83%83%e3%82%af

4.バランシング対象となるインスタンスを作成

作成手順:
– Compute Engine→VMインスタンス→インスタンスの作成

新しいVMインスタンスの作成画面の設定項目

設定項目 設定内容
名前 任意の名前
ゾーン 任意のゾーンを選択
マシンタイプ 任意のマシンタイプを選択

※ファイアウォールルールでhttp通信を許可するルールを割り当てる必要あり

5.インスタンスグループを作成する(各リージョンごと)

作成手順:
– Compute Engine→インスタンス グループ→インスタンス グループを作成

新しいインスタンス グループの作成画面の設定項目

設定項目 設定内容
名前 任意の名前
場所 シングルゾーン
ゾーン バランシング対象のVMインスタンスと同じゾーンを選択
作成方法 既存のインスタンスを選択
ネットワーク バランシング対象のVMのインスタンスの設定を参考に
VMインスタンス バランシング対象のVMインスタンスを指定(同じリージョンであれば複数指定可)

※マルチリージョンに対応したい場合、リージョンの種類ごとにインスタンスグループを作成する必要があります

%e6%96%b0%e8%a6%8f%e3%82%a4%e3%83%b3%e3%82%b9%e3%82%bf%e3%83%b3%e3%82%b9%e3%82%af%e3%82%99%e3%83%ab%e3%83%bc%e3%83%95%e3%82%9a

6.ロードバランシングの設定

設定手順:
– ネットワーキング→負荷分散→ロードバランサを作成
– 今回はHTTP(S)負荷分散を選択(設定の開始を選択)
– HTTP(S)負荷分散の編集

6-1.バックエンドの設定

– バックエンドをインスタンスグループごとに作成(マルチリージョン対応の場合、複数選択)

設定項目

設定項目 設定内容
インスタンスグループの選択 手順4で作成したインスタンスグループを選択
ポート番号 今回は80番を選択
分散モード 使用率(CPU使用率を選択)
最大CPU使用率 数値は自由選択
ヘルスチェックの選択 手順3で作成したヘルスチェックを選択

%e3%83%8f%e3%82%99%e3%83%83%e3%82%af%e3%82%a8%e3%83%b3%e3%83%88%e3%82%99%e3%81%ae%e8%a8%ad%e5%ae%9a

6-2.ホストとパスのルール

6.1で作成したバックエンドを指定

6-3.フロントエンドの設定

 

設定項目 設定内容
プロトコル HTTP
IP 手順2で予約したIPアドレス
ポート 今回は80番を指定

最後に更新を選択

7.ロードバランシング設定後

設定後、ロードバランサの詳細と監視の図は以下のようになります

ロードバランサの詳細画面
lb%e8%a9%b3%e7%b4%b0

ロードバランサの監視画面
lb%e7%9b%a3%e8%a6%96

以上で設定完了です

 

★マルチリージョン対応のロードバランシング検証結果・分かった事

設定終了後、動作確認を行いました。その際に分かったことについてまとめてみました。

●動作検証結果

 

    • ロードバランサの外部用IPアドレス宛てにHTTP通信を行った場合

– ローカルのクライアントからロードバランサへのHTTP通信
Asiaリージョン用のインスタンスグループ下の対象インスタンスに対して常に通信する

– USリージョンのインスタンスからロードバランサへのHTTP通信
USリージョン用のインスタンスグループ下の対象インスタンスに対して常に通信する

    • 1つのリージョンのインスタンスグループ下のインスタンスが全て落ちた場合

動作確認環境が所属する地域に関わらず、もう片方の他のリージョンのインスタンスグループへの通信に切り替わることが分かりました

    • インスタンスグループはシングルゾーンとマルチゾーン選択式

各ゾーンにおけるバランシング対象となるVMインスタンスの選択方法が異なります
– シングルゾーンの場合
バランシング対象の決め方:インスタンステンプレートの利用と既存のVMを両方選択可能です

– マルチゾーンの場合
バランシング対象の決め方:インスタンステンプレートの利用はできます
ただし、既存のVMを選択をすることはできません

 

●動作検証結果から分かった事

これらの動作結果により

  • 動作確認を行うクライアントの場所(地域:リージョン)に、より近い場所に存在するリージョンのVMインスタンスと通信を行う事
  • リクエストパスに応じてどのインスタンスにリクエストを送信するのか決定することも可能である事
  • インスタンスグループ内のVMインスタンスが全て落ちた場合、別のリージョンの異なるインスタンスグループ配下のVMインスタンスに切り替え可能である事

 

★まとめ

今回、GCPのマルチリージョン対応のロードバランシングに触れるよい機会でした。動作環境のリージョンに応じて、より近いリージョンのVMインスタンスと通信を行う仕組みになっており、レスポンス速度を向上させることが可能です。また障害時にリージョンが異なるVMインスタンスへの切り替える事が可能であると分かりました。これらのマルチリージョン対応のロードバランシングの強みを実感しました。

Author

アバター
kaori