Cloud Load Balancing とは
Google Cloud Japan Team
※この投稿は米国時間 2021 年 9 月 29 日に、Google Cloud blog に投稿されたものの抄訳です。
新しいアプリケーションがヒットしたとします。世界中で利用が増加する中、ユーザー満足度を維持しながら費用増加を回避する一方で、アプリに対してスケールアップ、最適化、セキュリティ確保をする方法を考えなければなりません。そこで登場するのが Cloud Load Balancing です。
Cloud Load Balancing とは
Cloud Load Balancing は、完全な分散型ロード バランシング ソリューションです。このソリューションはユーザーのトラフィック(HTTP(s)、HTTPS/2 with gRPC、TCP/SSL、UDP、QUIC)を複数のバックエンドにバランスさせ、輻輳の回避、レイテンシの低減、セキュリティの向上、コストの削減を実現します。Google と同じフロントエンド インフラストラクチャ上に構築されており、安定した高いパフォーマンスと低いレイテンシで 100 万以上の秒間クエリ数をサポートします。
ソフトウェア定義ネットワーキング (SDN) Cloud Load Balancing は、インスタンスやデバイスベースのソリューションではないため、物理的なインフラストラクチャに縛られることなく、HA、スケール、管理の課題に直面することもありません。
単一のグローバル エニーキャスト IP と自動スケーリング: Cloud Load Balancing は世界中のリージョンにあるすべてのバックエンド インスタンスのフロントエンドとなります。自動マルチリージョン フェイルオーバーを含むクロスリージョン ロード バランシングを提供し、バックエンドが不調になった場合にはトラフィックを分割して徐々に移動させ、より多くのリソースが必要になった場合には自動的にスケールアップします。
Cloud Load Balancing の仕組み
外部ロード バランシング
次のシナリオを考えてみます。カリフォルニアに Shen というユーザーがいます。そのリージョンにフロントエンド インスタンスをデプロイし、ロード バランシング用の仮想 IP(VIP)を構成します。ユーザーベースが他のリージョンに拡大しても、追加のリージョンにインスタンスを作成するだけです。VIP や DNS サーバーの設定に変更はありません。アプリがグローバル化しても、パターンは同じです。インドの Maya は、インドの彼女に近いインスタンスにルーティングされます。インドのインスタンスが過負荷になり、負荷を処理するために自動スケーリングを行っている場合、Maya はその間、他のインスタンスにシームレスにリダイレクトされ、インスタンスが負荷を処理するのに十分な規模になった時点でインドにルーティングされます。これは、レイヤ 7 での外部ロード バランシングの例です。
内部ロード バランシング
3 層構造のアプリでは、フロントエンドの後にミドルウェアとデータソースがあり、ユーザーのリクエストを満たすためにインタラクションします。そこで、フロントエンドと他の内部層との間でレイヤ 4 の内部ロード バランシングが必要になります。レイヤ 4 の内部ロード バランシングは、RFC1918 の VIP の背後にある TCP/UDP トラフィックが対象で、クライアント IP が保存されます。
ヘルスチェックが自動で行われ、中間プロキシはありません。ロード バランシングには SDN のコントロール プレーンとデータプレーンを使用しています。
グローバル HTTP(S) ロード バランシングの使い方
グローバル HTTP(s) ロード バランシングでは、グローバル エニーキャスト VIP(IPv4 または IPv6)が転送ルールに関連付けられ、ターゲット プロキシにトラフィックを誘導します。
ターゲット プロキシは、クライアントのセッションを終了させます。HTTP の場合は、この段階で証明書のデプロイ、バックエンド ホストの定義、パスルールの定義を行います。URL マップは、レイヤ 7 のルーティングを行い、クライアントのリクエストを適切なバックエンド サービスへ送信します。
バックエンド サービスには、コンピュート インスタンス用のマネージド インスタンス グループ(MIG)や、コンテナ化されたワークロード用のネットワーク エンドポイント グループ(NEG)などがあります。また、ここではサービス インスタンスの容量や健全性が判断されます。
Cloud CDN を有効にしてコンテンツをキャッシュに保存し、パフォーマンスを向上させます。ファイアウォールのルールを設定して、バックエンドとの間のトラフィックを制御できます。
内部ロード バランシングの設定も同様に、転送ルールはありますが、バックエンド サービスを直接指定します。転送ルールには、仮想 IP アドレス、プロトコル、最大 5 つのポートが設定されています。
Cloud Load Balancing でアプリケーションを保護する方法
ベスト プラクティスとして、すべての場所で SSL を実行します。HTTPS と SSL プロキシのロード バランシングでは、Google がプロビジョニングと SSL 証明書のライフサイクルの管理を行うマネージド証明書を使用できます。
Cloud Load Balancing は、複数の SSL 証明書をサポートしており、同じロードバランサの IP アドレスとポートを使って複数のドメインにサービスを提供できます。
Google のグローバルなロード バランシング インフラストラクチャを介して、レイヤ 3 およびレイヤ 4 のボリューム型攻撃を吸収し、消滅させます。
さらに Cloud Armor では、レイヤ 3 からレイヤ 7 のアプリケーション レベルの攻撃を防ぐことができます。
また Identity Aware Proxy と ファイアウォールを使って、バックエンド サービスへのアクセスを認証し、許可できます。
正しいロード バランシング オプションの選び方
お客様のユースケースに適したロード バランシング オプションを決定する際には、内部と外部、グローバルとリージョナル、トラフィックの種類(HTTP、TLS、UDP)などの要素を考慮します。
バックエンド システムのレイテンシ低減、パフォーマンス向上、セキュリティ強化、費用削減をご検討の場合は、Cloud Load Balancing をご活用ください。数回のクリックで簡単にデプロイできます。グローバル VIP に関連するフロントエンドとバックエンドを設定するだけで、すぐに使用できます。 サービスの詳細については、ドキュメントをご覧ください。
#GCPSketchnote をさらにご覧になるには、GitHub リポジトリをフォローしてください。同様のクラウド コンテンツについては、Twitter で @pvergadia をフォローしてください。thecloudgirl.dev もぜひご覧ください。
- Google デベロッパー アドボケイトPriyanka Vergadia