Compute Engine でのマルチリージョン デプロイ

Last reviewed 2024-02-20 UTC

このドキュメントでは、Google Cloud の複数のリージョンにある Compute Engine VM 上で実行される、多層アプリケーションのリファレンス アーキテクチャについて説明します。また、他の Google Cloud インフラストラクチャ サービスを使用するアーキテクチャの構築に役立つガイダンスも提供します。ここでは、クラウド アプリケーション用のマルチリージョン アーキテクチャを構築する際に考慮すべき設計要素について説明します。このドキュメントは、クラウド アーキテクトを対象としています。

アーキテクチャ

図 1 は、2 つの Google Cloud リージョンにまたがってデプロイされた分離スタックで、アクティブ / アクティブ モードで実行されるアプリケーションのアーキテクチャを示しています。各リージョンのアプリケーションは、3 つのゾーンで独立して実行されます。このアーキテクチャは、マルチリージョン デプロイ アーキタイプと一致します。これにより、Google Cloud トポロジがゾーンとリージョンの停止に対して堅牢になり、アプリケーション ユーザーにとってのレイテンシも短縮されます。

グローバル ロードバランサを使用したマルチリージョン アーキテクチャ

図 1: グローバル ロードバランサにより、リージョン間で分離されたアプリケーション スタックにユーザー リクエストがルーティングされる

このアーキテクチャは、Infrastructure as a Service(IaaS)クラウドモデルに基づいています。必要なインフラストラクチャ リソース(コンピューティング、ネットワーキング、ストレージ)を Google Cloud でプロビジョニングするのは、ユーザー側の作業となります。また、オペレーティング システム、ミドルウェア、アプリケーション スタックの上位レイヤについては、ユーザーが完全に制御し、責任を負います。IaaS やその他のクラウドモデルの詳細については、PaaS、IaaS、SaaS、CaaS の違いをご覧ください。

この図には、次のコンポーネントが含まれています。

コンポーネント 目的
グローバル外部ロードバランサ

グローバル外部ロードバランサは、ユーザーのリクエストを受信してアプリケーションに分散します。グローバル外部ロードバランサは単一のエニーキャスト IP アドレスをアドバタイズしますが、Google Front End(GFE)では多数のプロキシとして実装されます。クライアント リクエストは、クライアントに最も近い GFE に転送されます。

要件に応じて、グローバル外部アプリケーション ロードバランサまたはグローバル外部プロキシ ネットワーク ロードバランサを使用できます。詳細については、ロードバランサを選択するをご覧ください。

ウェブ階層のリージョン マネージド インスタンス グループ(MIG)

アプリケーションのウェブ階層は、リージョン MIG の一部である Compute Engine VM にデプロイされます。これらの MIG は、グローバル ロードバランサのバックエンドです。

各 MIG は、3 つの異なるゾーン内の Compute Engine VM で構成されています。これらの各 VM は、アプリケーションのウェブ階層の独立したインスタンスをホストします。

リージョン内部ロードバランサ

各リージョンの内部ロードバランサは、ウェブ階層 VM からのトラフィックを、このリージョンのアプリケーション階層 VM に分散します。

要件に応じて、リージョン内部アプリケーション ロードバランサまたはネットワーク ロードバランサを使用できます。詳細については、ロードバランサを選択するをご覧ください。

アプリケーション階層のリージョン MIG

アプリケーション階層は、リージョン MIG の一部である Compute Engine VM にデプロイされます。各リージョンの MIG は、そのリージョン内の内部ロードバランサのバックエンドです。

各 MIG は、3 つの異なるゾーン内の Compute Engine VM で構成されています。各 VM には、アプリケーション階層の独立したインスタンスがホストされます。

Compute Engine VM にデプロイされたサードパーティ データベース

サードパーティ データベース(PostgreSQL など)は、2 つのリージョンの Compute Engine VM にデプロイされます。データベースにクロスリージョン レプリケーションを設定し、各リージョンのデータベースが他のリージョンのデータベースにフェイルオーバーするように構成できます。レプリケーションとフェイルオーバーの機能は、使用するデータベースによって異なります。

サードパーティ データベースをインストールして管理するには、レプリケーション、更新の適用、モニタリング、可用性の確保のため、追加の労力と運用コストがかかります。マルチリージョンの Spanner インスタンスなどのフルマネージド データベースを使用することで、サードパーティ データベースのインストールと管理のオーバーヘッドを回避し、組み込みの高可用性(HA)機能を利用できます。

Virtual Private Cloud ネットワークサブネット アーキテクチャ内のすべての Google Cloud リソースは、2 つのリージョンにそれぞれサブネットを持つ、単一の VPC ネットワークを使用します。
Cloud Storage デュアルリージョン バケット アプリケーション データのバックアップは、デュアルリージョンの Cloud Storage バケットに保存されます。また、バックアップと DR サービスを使用して、データベースのバックアップを作成、保存、管理することもできます。

ユースケース

このセクションでは、Compute Engine のマルチリージョン デプロイが適切となるユースケースについて説明します。

オンプレミス アプリケーションの効率的な移行

このリファレンス アーキテクチャを使用すると、アプリケーションの変更を最小限に抑えながら、オンプレミス アプリケーションをクラウドに効率的に再ホスト(リフト&シフト)する Google Cloud トポロジを構築できます。このリファレンス アーキテクチャでは、アプリケーションのすべての階層が Compute Engine VM でホストされます。このアプローチでは、オンプレミスのアプリケーションをクラウドに効率的に移行でき、Google Cloud が実現する費用面のメリット、信頼性、パフォーマンス、運用の簡素化を活用できます。

地理的に分散したユーザーのための高可用性

ビジネス クリティカルで、リージョンの停止に対する高可用性と堅牢性が重要となるアプリケーションには、マルチリージョン デプロイをおすすめします。1 つのリージョンがなんらかの理由で利用できなくなった場合でも(自然災害による大規模な停止が発生した場合でも)、アプリケーションのユーザーにダウンタイムは発生しません。トラフィックは、使用可能な他のリージョンのアプリケーションにルーティングされます。データが同期的に複製される場合、目標復旧時間(RTO)はほぼゼロになります。

アプリケーション ユーザーに対する低レイテンシ

ユーザーが大陸などの特定の地域内にいる場合は、マルチリージョンのデプロイを使用して、可用性とパフォーマンスの最適なバランスを実現できます。いずれかのリージョンが停止すると、グローバル ロードバランサは、そのリージョンから送信されたリクエストを別のリージョンに送信します。これらのリージョンは 1 つの地域内にあるため、ユーザーはパフォーマンスに大きな影響が出ているとは感じません。

代替案の設計

グローバル ロードバランサを使用するアーキテクチャ(図 1)は、Cloud CDN を使用したエッジ キャッシングなど、デプロイの信頼性の向上に役立つ特定の機能をサポートしています。このセクションでは、図 2 に示すように、リージョン ロードバランサと Cloud DNS を使用する代替アーキテクチャについて説明します。この代替アーキテクチャは、次の追加機能をサポートします。

  • 指定したリージョンでの Transport Layer Security(TLS)終端。
  • 指定したリージョンからのコンテンツの提供。ただし、このリージョンは、その時点で最もパフォーマンスの高いリージョンではない可能性もあります。
  • パススルー ネットワーク ロードバランサを使用する場合の、幅広い種類の接続プロトコル。

リージョン ロードバランサとグローバル ロードバランサの違いについては、次のドキュメントをご覧ください。

リージョン ロードバランサと DNS を使用したマルチリージョン アーキテクチャ。

図 2.Cloud DNS がユーザー リクエストをリージョン ロードバランサに転送

図 1 のアーキテクチャと同様に、図 2 のアーキテクチャもゾーンとリージョンの停止に対して堅牢です。Cloud DNS 一般公開ゾーンは、ユーザー リクエストを適切なリージョンに転送します。リージョン外部ロードバランサは、受信したユーザー リクエストを、各リージョン内のアプリケーションのウェブ階層インスタンス全体に分散します。このアーキテクチャの他のコンポーネントは、グローバル ロードバランサ ベースのアーキテクチャのコンポーネントと同じです。

複数のリージョン ロードバランサと Cloud DNS を使用するマルチリージョン アーキテクチャの構築の詳細については、DNS ルーティング ポリシーを使用したグローバル ロードバランシング アーキテクチャをご覧ください。

設計上の考慮事項

このセクションでは、このリファレンス アーキテクチャを使用して、システム設計、セキュリティとコンプライアンス、信頼性、運用効率、費用、パフォーマンスに関する特定の要件を満たすアーキテクチャを開発するためのガイダンスを示します。

システム設計

このセクションでは、マルチリージョン デプロイでの Google Cloud リージョンの選択と、適切な Google Cloud サービスの選択に役立つガイダンスを示します。

リージョンの選択

アプリケーションをデプロイする Google Cloud リージョンを選択する場合は、次の要素と要件を考慮してください。

  • 各リージョンでの Google Cloud サービスの可用性。詳細については、ロケーション別のプロダクト提供状況をご覧ください。
  • 各リージョンで使用できる Compute Engine マシンタイプ。詳細については、リージョンとゾーンをご覧ください。
  • エンドユーザーのレイテンシ要件
  • Google Cloud リソースの費用
  • リージョン間でのデータ転送の費用
  • 規制要件

これらの要素や要件の中には、トレードオフを伴うものもあります。たとえば、費用対効果の最も高いリージョンが、温室効果ガス排出量が最も少ないリージョンとは限りません。詳細については、Google Cloud アーキテクチャ フレームワークの地理的ゾーンとリージョンを選択するをご覧ください。

コンピューティング サービス

このドキュメントのリファレンス アーキテクチャでは、アプリケーションのすべての階層に Compute Engine VM を使用します。アプリケーションの要件に応じて、他の Google Cloud コンピューティング サービスを選択できます。

  • Google Kubernetes Engine(GKE)クラスタでコンテナ化されたアプリケーションを実行できます。GKE は、コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動化するコンテナ オーケストレーション エンジンです。
  • インフラストラクチャ リソースの設定や運用ではなく、データとアプリケーションに労力を集中させたい場合は、Cloud RunCloud Functions などのサーバーレス サービスを使用します。

VM、コンテナ、サーバーレス サービスのどれを使用するかの決定には、構成の柔軟性と管理上の労力とのトレードオフが伴います。VM とコンテナは比較的柔軟に構成できますが、リソースの管理責任はユーザーにあります。サーバーレス アーキテクチャでは、必要となる管理作業が最も少ない事前構成されたプラットフォームにワークロードをデプロイします。Google Cloud のワークロードに適したコンピューティング サービスの選択について詳しくは、Google Cloud アーキテクチャ フレームワークのコンピューティングを選択して管理するをご覧ください。

ストレージ サービス

このドキュメントで紹介する各アーキテクチャでは、すべての階層でリージョン永続ディスク ボリュームを使用します。永続ディスクは、リージョン内の 2 つのゾーン間で、データの同期レプリケーションを行います。

マルチリージョン デプロイ用の他のストレージ オプションには、Cloud Storage デュアルリージョン バケット、マルチリージョン バケットがあります。デュアルリージョン バケットまたはマルチリージョン バケットに保存されるオブジェクトは、少なくとも 2 つの地理的な場所に冗長的に保存されます。メタデータはリージョン間で同期的に書き込まれ、データは非同期で複製されます。デュアルリージョン バケットの場合は、ターボ レプリケーションを使用できます。これにより、15 分の目標復旧時点(RPO)で、オブジェクトがリージョンペア間で複製されます。詳細については、データの可用性と耐久性をご覧ください。

ウェブ階層やアプリケーション階層のすべての VM など、リージョン内の複数の VM で共有されるデータを保存するには、Filestore エンタープライズ インスタンスを使用します。Filestore エンタープライズ インスタンスに格納されたデータは、リージョン内の 3 つのゾーンに同期的に複製されます。このレプリケーションにより、ゾーンの停止に対する高可用性と堅牢性が確保されます。共有する構成ファイル、一般的なツールとユーティリティ、一元化されたログを Filestore インスタンスに保存し、このインスタンスを複数の VM にマウントできます。

データベースが Microsoft SQL Server の場合は、フェイルオーバー クラスタ インスタンス(FCI)をデプロイし、フルマネージドの Google Cloud NetApp Volumes を使用することで、継続的可用性(CA)を備えた SMB ストレージをデータベースに提供できます。

マルチリージョン ワークロードのストレージを設計する場合は、ワークロードの機能特性、復元力の要件、パフォーマンスの期待値、費用目標を考慮します。詳細については、クラウド ワークロードに最適なストレージ戦略の設計をご覧ください。

データベース サービス

このドキュメントのリファレンス アーキテクチャでは、Compute Engine VM にデプロイされた PostgreSQL などのサードパーティ製データベースを使用しています。サードパーティ製データベースのインストールと管理には、更新の適用、モニタリングと可用性の確保、バックアップの実行、障害からの復旧などの運用に労力と費用がかかります。

フルマネージド データベース サービス(Cloud SQLAlloyDB for PostgreSQLBigtableSpannerFirestore など)を使用すると、サードパーティ製データベースをインストールして管理する労力とコストを回避できます。こうした Google Cloud データベース サービスには、稼働時間のサービスレベル契約(SLA)が用意されており、スケーラビリティとオブザーバビリティのためのデフォルト機能を備えています。ワークロードに Oracle データベースが必要な場合は、Google Cloud が提供する Bare Metal Solution を使用できます。各 Google Cloud データベース サービスに適したユースケースの概要については、Google Cloud データベースをご覧ください。

マルチリージョン デプロイ用にデータベースを選択して設定する場合は、リージョン間のデータ整合性に関するアプリケーションの要件を考慮し、パフォーマンスとコストのトレードオフに注意してください。

  • アプリケーションに強整合性が必要な場合は(常にすべてのユーザーが同じデータを読み取る必要がある場合)、アーキテクチャ内のすべてのリージョン間でデータを同期的に複製する必要があります。ただし、同期レプリケーションでは、書き込まれたすべてのデータが、リージョン間でリアルタイムに複製してからでないとデータの読み取りオペレーションに使用できないため、コストの上昇とパフォーマンスの低下につながる可能性があります。
  • 結果整合性を許容できるアプリケーションの場合は、データを非同期で複製できます。この場合は、データをリージョン間で同期的に複製する必要がないため、パフォーマンスを向上させることができます。しかし、リクエスト時にデータが完全に複製されていない可能性が生じるため、リージョンの異なるユーザーが異なるデータを読み込んでしまう可能性があります。

セキュリティとコンプライアンス

このセクションでは、このリファレンス アーキテクチャを使用して、ワークロードのセキュリティとコンプライアンスの要件を満たすマルチリージョン トポロジを Google Cloud で設計し、構築する際に考慮すべき要素について説明します。

脅威からの保護

分散型サービス拒否(DDoS)攻撃やクロスサイト スクリプティング(XSS)などの脅威からアプリケーションを保護するために、Google Cloud Armor セキュリティ ポリシーを使用できます。個々のポリシーは、評価すべき特定の条件と、その条件が満たされた場合に実行するアクションを指定する一連のルールです。たとえば、受信トラフィックの送信元 IP アドレスが特定の IP アドレスまたは CIDR 範囲と一致する場合に、このトラフィックを拒否するようにルールで指定できます。さらに、事前構成されたウェブ アプリケーション ファイアウォール(WAF)ルールを適用することもできます。詳細については、セキュリティ ポリシーの制限をご覧ください。

VM の外部アクセス

このドキュメントで説明するリファレンス アーキテクチャでは、アプリケーション層、ウェブ層、データベースをホストする VM に、インターネットからのインバウンド アクセスは必要ありません。これらの VM には、外部 IP アドレスを割り当てないでください。プライベートの内部 IP アドレスしか持たない Google Cloud リソースは、Private Service Connect または限定公開の Google アクセスを使用して、特定の Google API やサービスにアクセスできます。詳細については、サービスのプライベート アクセス オプションをご覧ください。

このリファレンス アーキテクチャの Compute Engine VM など、非公開 IP アドレスのみを持つ Google Cloud リソースからのアウトバウンド接続を保護するには、Cloud NAT を使用します。

VM イメージのセキュリティ

VM が承認済みのイメージ(ポリシーまたはセキュリティ要件を満たすソフトウェアを含むイメージ)のみを使用するようにするには、特定の公開イメージ プロジェクトでのイメージの使用を制限する組織のポリシーを定義します。詳細については、信頼できるイメージのポリシーの設定をご覧ください。

サービス アカウントの権限

Compute Engine API が有効になっている Google Cloud プロジェクトでは、デフォルトのサービス アカウントが自動的に作成されます。この動作が無効になっている場合を除き、デフォルトのサービス アカウントには編集者 IAM ロール(roles/editor)が付与されます。デフォルトでは、デフォルトのサービス アカウントは、Google Cloud CLI または Google Cloud コンソールを使用して作成するすべての VM に関連付けられます。編集者ロールには幅広い権限が含まれているため、デフォルトのサービス アカウントを VM に関連付けると、セキュリティ リスクが発生します。このリスクを回避するには、アプリケーションごとに専用のサービス アカウントを作成して使用します。サービス アカウントがアクセスできるリソースを指定するには、詳細なポリシーを使用します。詳細については、「サービス アカウントの使用に関するベスト プラクティス」のサービス アカウント権限を制限するをご覧ください。

データ所在地に関する検討事項

リージョン ロードバランサを使用すると、データ所在地の要件を満たすために役立つマルチリージョン アーキテクチャを構築できます。たとえば、ヨーロッパのある国では、ヨーロッパ内に物理的に設置されたデータセンターにすべてのユーザーデータを保存し、ここにアクセスすることが義務付けられているとします。この要件を満たすには、図 2 のリージョン ロードバランサに基づくアーキテクチャを使用します。このアーキテクチャでは、アプリケーションはヨーロッパの Google Cloud リージョンで実行されます。また、ジオフェンス ルーティング ポリシーとともに Cloud DNS を使用して、リージョン ロードバランサ経由でトラフィックをルーティングします。データベース階層のデータ所在地の要件を満たすには、リージョン間でレプリケーションするのではなく、シャーディング アーキテクチャを使用します。このアプローチでは、各リージョンのデータは分離されますが、データベースにリージョン間の高可用性とフェイルオーバーを実装することはできません。

セキュリティ上のその他の考慮事項

ご自身のワークロード用のアーキテクチャを構築する際には、セキュリティ基盤ブループリントに記載されているプラットフォーム レベルのセキュリティのベスト プラクティスと推奨事項を考慮してください。

信頼性

このセクションでは、このリファレンス アーキテクチャを使用して、Google Cloud でのマルチリージョン デプロイ用に信頼性の高いインフラストラクチャを構築して運用する際に考慮すべき設計要素について説明します。

MIG の自動スケーリング

複数のリージョン MIG でアプリケーションを実行すると、分離されたゾーンやリージョンが停止しても、アプリケーションを使用できます。ステートレス MIG の自動スケーリング機能を使用すると、アプリケーションの可用性とパフォーマンスを予測可能なレベルで維持できます。ステートレス MIG の自動スケーリングの動作を制御するには、CPU の平均使用率などの目標使用率の指標を指定します。ステートレス MIG にスケジュール ベースの自動スケーリングを構成することもできます。ステートフル MIG は自動スケーリングできません。詳細については、インスタンスのグループの自動スケーリングをご覧ください。

VM の自動修復

アプリケーションをホストする VM が動作しており利用可能な場合でも、アプリケーション自体に問題がある場合があります。アプリケーションがフリーズする、クラッシュする、またはメモリ不足になることがあります。アプリケーションが期待どおりに応答しているかどうかを確認するには、MIG の自動修復ポリシーの一部としてアプリケーション ベースのヘルスチェックを構成します。特定の VM 上のアプリケーションが応答しない場合、MIG はその VM を自動修復します。自動修復の構成について詳しくは、アプリケーションのヘルスチェックと自動修復を設定するをご覧ください。

VM の配置

このドキュメントで説明するアーキテクチャでは、アプリケーション階層とウェブ階層は、複数のゾーンに分散された Compute Engine VM で実行されます。このように分散することで、ゾーンの停止に対するアプリケーションの耐性が強化されます。この堅牢性をさらに改善するには、スプレッド プレースメント ポリシーを作成して MIG テンプレートに適用します。MIG は VM を作成する際、異なる物理サーバー(ホスト)の各ゾーンに VM を配置するため、VM は個々のホストの障害に対する耐性が強化されます。詳細については、VM にスプレッド プレースメント ポリシーを適用するをご覧ください。

VM のキャパシティ プランニング

必要なときに Compute Engine VM の容量を使用できるように、予約を作成できます。予約することで、選択したマシンタイプの指定した数の VM に対して、特定のゾーンでの容量が保証されます。予約は、プロジェクトに固有のものにすることも、複数のプロジェクトで共有することもできます。課金に関する考慮事項など、予約の詳細については、Compute Engine ゾーンリソースの予約をご覧ください。

永続ディスクの状態

アプリケーション設計におけるベスト プラクティスは、ステートフルなローカル ディスクを必要としないようにすることです。ただし、要件がある場合は、VM の修復や再作成時にデータが保持されるように、永続ディスクをステートフルに構成できます。とはいえ、ブートディスクをステートレスのままにして、新しいバージョンやセキュリティ パッチを使用して最新のイメージに簡単に更新できるようにすることをおすすめします。詳細については、MIG でのステートフル永続ディスクの構成をご覧ください。

データの耐久性

バックアップと DR を使用して、Compute Engine VM のバックアップを作成、保存、管理できます。バックアップと DR では、アプリケーションで読み取り可能な元の形式でバックアップ データが保存されます。必要であれば、長期バックアップのストレージから直接データを取得することで、データの移動や準備作業に時間をかけずにワークロードを本番環境に復元できます。

データベースのバックアップとトランザクション ログを保存するには、リージョンの Cloud Storage バケットを使用できます。これは、ゾーン間の冗長性を確保する、最も低コストのバックアップ ストレージとして使用できます。

Compute Engine には、Persistent Disk ボリュームに保存されているデータの耐久性を確保するために、次のオプションが用意されています。

  • 標準スナップショットを使用して、Persistent Disk ボリュームの特定の時点での状態をキャプチャできます。スナップショットは複数のリージョンに冗長的に保存されます。また、自動チェックサムによりデータの整合性が確保されます。デフォルトでは、スナップショットは増分になるため、使用するストレージ容量が少なく、費用を節約できます。スナップショットは、構成可能な Cloud Storage のロケーションに保存されます。スナップショットの使用と管理に関する推奨事項については、Compute Engine ディスク スナップショットのベスト プラクティスをご覧ください。
  • リージョン Persistent Disk ボリュームを使用すると、永続ディスクの障害の影響を受けない高可用性アプリケーションを実行できます。リージョン Persistent Disk ボリュームを作成すると、Compute Engine は同じリージョン内の別のゾーンにディスクのレプリカを保持します。データは、両方のゾーンのディスクに同期的に複製されます。2 つのゾーンのいずれかが停止しても、データは引き続き利用できます。

データベースの可用性

各リージョンのデータベースにゾーン間のフェイルオーバーを実装するには、プライマリ データベースの障害を識別するメカニズムと、スタンバイ データベースにフェイルオーバーするプロセスが必要です。フェイルオーバー メカニズムの詳細は、使用するデータベースによって異なります。オブザーバー インスタンスを設定して、プライマリ データベースの障害を検出し、フェイルオーバーをオーケストレートできます。スプリット ブレイン状態を回避し、不要なフェイルオーバーを防ぐには、フェイルオーバー ルールを適切に構成する必要があります。PostgreSQL データベースのフェイルオーバーの実装に使用できるアーキテクチャの例については、Compute Engine 上の PostgreSQL クラスタの高可用性アーキテクチャをご覧ください。

信頼性に関するその他の考慮事項

ご自身のワークロード用のクラウド アーキテクチャを構築する際には、次のドキュメントに記載されている信頼性関連のベスト プラクティスと推奨事項を確認してください。

費用の最適化

このセクションでは、このリファレンス アーキテクチャを使用して構築するマルチリージョン Google Cloud トポロジに対し、設定と運用の費用を最適化するためのガイダンスを示します。

VM マシンタイプ

VM インスタンスのリソース使用率を最適化できるように、Compute Engine には推奨のマシンタイプが用意されています。この推奨事項を参照して、ワークロードのコンピューティング要件と一致するマシンタイプを選択します。リソース要件を予測できるワークロードの場合は、ニーズに合わせてマシンタイプをカスタマイズし、カスタム マシンタイプを使用することで費用を節約できます。

VM プロビジョニング モデル

アプリケーションがフォールト トレラントである場合、Spot VM を使用すると、アプリケーション階層とウェブ階層で VM の Compute Engine にかかる費用を削減できます。Spot VM の費用は、通常の VM よりも大幅に低くなります。ただし、容量を再利用するために、Compute Engine が Spot VM を予防的に停止または削除する場合があります。Spot VM は、プリエンプションを許容でき、高可用性の要件がないバッチジョブに適しています。Spot VM は、通常の VM と同じマシンタイプ、オプション、パフォーマンスを提供します。ただし、ゾーンのリソース容量が制限されている場合は、必要な容量が再び使用可能になるまで、MIG が指定のターゲット サイズに自動的にスケールアウトできない可能性があります(つまり、VM を作成できない可能性があります)。

リソースの活用

ステートレス MIG の自動スケーリング機能により、アプリケーションはトラフィックの増加を適切に処理でき、リソースの必要性が低いときに費用を削減できます。ステートフル MIG は自動スケーリングできません。

サードパーティのライセンス

サードパーティのワークロードを Google Cloud に移行する場合は、お客様所有ライセンスの使用(BYOL)で費用を削減できる可能性があります。たとえば、Microsoft Windows Server VM をデプロイする場合、サードパーティ ライセンスの追加費用が発生するプレミアム イメージを使用する代わりに、カスタム Windows BYOL イメージを作成して使用できます。この場合、料金は Google Cloud で使用する VM インフラストラクチャにしか発生しません。この戦略により、サードパーティ ライセンスに対するこれまでの投資の価値を継続的に現金化できます。 BYOL の手法を使用する場合は、次のことをおすすめします。

  • カスタム マシンタイプを使用して、メモリとは別に必要な数のコンピューティング CPU コアをプロビジョニングします。これにより、サードパーティのライセンス費用を必要な CPU コア数に制限できます。
  • 同時マルチスレッディング(SMT)を無効にして、コアあたりの vCPU 数を 2 から 1 に減らし、ライセンス費用を 50% 削減します。

費用に関するその他の考慮事項

ご自身のワークロード用のアーキテクチャを構築する際には、Google Cloud Architecture Framework: 費用の最適化に記載されている一般的なベスト プラクティスと推奨事項も検討してください。

業務の効率化

このセクションでは、このリファレンス アーキテクチャを使用して、効率的に運用できるマルチリージョン Google Cloud トポロジを設計および構築する際に考慮すべき要素について説明します。

VM 構成の更新

MIG 内の VM の構成(マシンタイプやブートディスク イメージなど)を更新するには、必要な構成を持つ新しいインスタンス テンプレートを作成し、そのテンプレートを MIG に適用します。MIG は、選択した更新方法(自動または選択)を使用して VM を更新します。可用性と業務の効率化の要件に基づいて、適切な方法を選択してください。これらの MIG の更新方法について詳しくは、MIG で新しい VM 構成を適用するをご覧ください。

VM イメージ

MIG インスタンス テンプレートでは、Google 提供の公開イメージを使用するのではなく、アプリケーションに必要な構成とソフトウェアを含むカスタム イメージを作成して使用することをおすすめします。カスタム イメージは、カスタム イメージ ファミリーにまとめることができます。イメージ ファミリーは、そのファミリー内の最新のイメージを指すため、特定のイメージ バージョンへの参照を手動で更新しなくても、インスタンス テンプレートやスクリプトでそのイメージを使用できます。

確定的なインスタンス テンプレート

MIG に使用するインスタンス テンプレートに、サードパーティ ソフトウェアをインストールする起動スクリプトが含まれている場合は、そのスクリプトでソフトウェア バージョンなどのソフトウェア インストール パラメータを明示的に指定します。そうしないと、MIG が VM を作成するときに、VM にインストールされるソフトウェアに一貫性がなくなる可能性があります。たとえば、インスタンス テンプレートに Apache HTTP Server 2.0(apache2 パッケージ)をインストールする起動スクリプトが含まれている場合は、このスクリプトで、インストールする apache2 バージョン(バージョン 2.4.53 など)を正確に指定してください。詳細については、確定的なインスタンス テンプレートをご覧ください。

運用上のその他の考慮事項

ご自身のワークロード用のアーキテクチャを構築する際には、Google Cloud アーキテクチャ フレームワーク: オペレーショナル エクセレンスで説明されている運用効率に関する一般的なベスト プラクティスと推奨事項を検討してください。

パフォーマンスの最適化

このセクションでは、このリファレンス アーキテクチャを使用して、ワークロードのパフォーマンス要件を満たすマルチリージョン トポロジを Google Cloud で設計、構築する際に考慮すべき要素について説明します。

VM の配置

VM 間のネットワーク レイテンシを低くする必要があるワークロードの場合は、コンパクト プレースメント ポリシーを作成して MIG テンプレートに適用できます。MIG は VM を作成すると、互いに近くにある物理サーバーに VM を配置します。詳しくは、コンパクト プレースメント ポリシーを使用してレイテンシを短縮するをご覧ください。

VM マシンタイプ

Compute Engine には、費用とパフォーマンスの要件に応じて選択できる、事前定義済みのカスタマイズ可能なマシンタイプが幅広く用意されています。マシンタイプは、マシンシリーズとマシン ファミリーにまとめられています。次の表に、さまざまなワークロード タイプに推奨されるマシン ファミリーとマシンシリーズの概要を示します。

要件 推奨のマシン ファミリー マシンシリーズの例
さまざまなワークロードに対して最高のコスト パフォーマンスを実現する 汎用マシン ファミリー C3、C3D、E2、N2、N2D、Tau T2D、Tau T2A
コアあたりのパフォーマンスが最も高く、コンピューティング負荷の高いワークロード用に最適化されている コンピューティング最適化マシン ファミリー C2、C2D、H3
メモリ使用量の多いワークロードでメモリ対 vCPU 比が高い メモリ最適化マシンタイプ ファミリー M3、M2、M1
超並列ワークロード用の GPU アクセラレータ最適化マシン ファミリー A2、G2

詳細については、マシン ファミリーのリソースと比較ガイドをご覧ください。

VM のマルチスレッディング

Compute Engine VM に割り当てる各仮想 CPU(vCPU)は、単一のハードウェア マルチスレッドとして実装されます。デフォルトでは、2 つの vCPU が 1 つの物理 CPU コアを共有します。高度な並列ワークロードや浮動小数点計算を実行するワークロード(遺伝子配列分析や財務リスク モデリングなど)では、各物理 CPU コアで実行されるスレッド数を減らすことでパフォーマンスを改善できます。詳細については、コアあたりのスレッド数を設定するをご覧ください。

Network Service Tiers

Network Service Tiers を使用することで、ワークロードのネットワーク費用とパフォーマンスを最適化できます。以下のティアから選択できます。

  • プレミアム ティアは、信頼性の高い Google のグローバル バックボーンを使用して、パケットロスとレイテンシを最小限に抑える効果があります。トラフィックは、エンドユーザーの ISP に最も近いグローバル エッジ ポイント オブ プレゼンス(PoP)で Google ネットワークに出入りします。最適なパフォーマンスを得るには、デフォルトの階層としてプレミアム ティアを使用することをおすすめします。プレミアム ティアは、VM とロードバランサに対して、リージョン外部 IP アドレスとグローバル外部 IP アドレスの両方をサポートします。
  • スタンダード ティアは、リージョン外部 IP アドレスを使用するリソースでのみ使用できます。トラフィックは、Google Cloud ワークロードが実行されているリージョンに最も近いエッジ PoP で Google ネットワークに出入りします。スタンダード ティアの料金は、プレミアム ティアよりも低くなっています。スタンダード ティアは、パケットロスの影響を受けず、低レイテンシの要件がないトラフィックに適しています。

キャッシュ

アプリケーションが静的なウェブサイト アセットを提供し、アーキテクチャにグローバルな外部アプリケーション ロード バランサが含まれている場合(図 1 を参照)、Cloud CDN を使用して、定期的にアクセスされる静的コンテンツをユーザーの近くのキャッシュに保存できます。Cloud CDN は、ユーザー側のパフォーマンスの向上、バックエンドでのインフラストラクチャ リソース使用量の削減、ネットワーク配信費用の削減に役立ちます。詳細については、ロード バランシングのためのウェブ パフォーマンスの加速とウェブ保護の向上をご覧ください。

パフォーマンスに関するその他の考慮事項

ご自身のワークロード用のアーキテクチャを構築する場合は、Google Cloud アーキテクチャ フレームワーク: パフォーマンスの最適化に記載されている一般的なベスト プラクティスと推奨事項を検討してください。

次のステップ

協力者

著者: Kumar Dhanagopal | クロスプロダクト ソリューション デベロッパー

その他の関係者:

  • Ben Good | ソリューション アーキテクト
  • Carl Franklin | ディレクター、PSO エンタープライズ アーキテクチャ
  • Daniel Lees | クラウド セキュリティ アーキテクト
  • Gleb Otochkin | Cloud アドボケイト、データベース
  • Mark Schlagenhauf | テクニカル ライター、ネットワーキング
  • Pawel Wenda | グループ プロダクト マネージャー
  • Sean Derrington | グループ アウトバウンド プロダクト マネージャー、ストレージ
  • Sekou Page | アウトバウンド プロダクト マネージャー
  • Shobhit Gupta | ソリューション アーキテクト
  • Simon Bennett | グループ プロダクト マネージャー
  • Steve McGhee | 信頼性アドボケイト
  • Victor Moreno | プロダクト マネージャー、クラウド ネットワーキング