概要

Cloud CDN と HTTP(S) 負荷分散

Cloud CDN コンテンツ配信ネットワークは、HTTP(S) 負荷分散と連携してユーザーにコンテンツを配信します。HTTP(S) 負荷分散の構成では、フロントエンドのどの IP アドレスとポートで Cloud CDN がリクエストを受け取り、どのバックエンドからそのリクエストへのレスポンスが送信されるかが指定されています。

Cloud CDN コンテンツの送信元となるバックエンドには、次の 2 種類があります。

ユーザーがサイトのコンテンツをリクエストすると、そのリクエストは Google のネットワークのエッジにあるロケーションの 1 つに到着します。このロケーションは通常、バックエンドよりもはるかにユーザーに近い場所にあります。Cloud CDN は、バックエンドで生成されたレスポンスを、これらのロケーションにあるキャッシュに保存します。レスポンスを生成するバックエンドを送信元サーバーといいます。

次の図は、VM インスタンス上で稼働している送信元サーバーからのレスポンスがどのように HTTP(S) ロードバランサを通過して Cloud CDN によって配信されるかを示しています。

送信元サーバーから Cloud CDN を通過してクライアントに送信されるレスポンスのフロー
Cloud CDN レスポンス フロー

キャッシュのヒット、ミス、フィル、下り

コンテンツが初めてリクエストされたときに、キャッシュにはリクエストの処理に必要な情報がありません。この状態を「キャッシュミス」といいます。この場合、近くにあるキャッシュからコンテンツを取得しようとします。付近のキャッシュにコンテンツが保存されていると、キャッシュ間のフィルで最初のキャッシュにコンテンツが送信されます。保存されていない場合には、HTTP(S) ロードバランサにリクエストが転送されます。ロードバランサは、このリクエストをバックエンドの 1 つに転送します。このバックエンドが、このコンテンツの送信元サーバーです。

コンテンツがキャッシュに到着すると、キャッシュからユーザーにコンテンツが転送されます。そのコンテンツがキャッシュ可能である場合、将来のリクエストに備えてそのコンテンツをキャッシュに保存できます。キャッシュが新しいコンテンツの保存を拒否することもあります。そのコンテンツを保存した結果として、それよりも人気が高いコンテンツを追い出すことになってしまう場合や、その新しいコンテンツの人気度がわからない場合です。たとえば、大きなコンテンツの初回アクセス時にキャッシュがコンテンツの保存を拒否することがあります。

ユーザーがリクエストしたコンテンツが、すでにキャッシュに保存されている場合は、キャッシュがそのキャッシュキーでコンテンツを見つけて直接ユーザーにレスポンスを返すので、ラウンドトリップ時間が短くなり、送信元サーバーがリクエストを処理する必要はなくなります。これを「キャッシュ ヒット」といいます。

最初のレスポンスは送信元サーバーから配信されますが、以降のレスポンスはキャッシュから配信されます。
キャッシュミスとキャッシュ ヒット

キャッシュからクライアントへのデータ転送をキャッシュ下りといいます。キャッシュへのデータ転送を「キャッシュ フィル」といいます。次の図に示すように、キャッシュ フィルの送信元は別の Cloud CDN キャッシュのことも、送信元サーバーのこともあります。

キャッシュ フィルとは、送信元サーバーからキャッシュへの、またはキャッシュから別のキャッシュへのデータ転送です。キャッシュ下りとは、キャッシュからクライアントへのデータ転送です。
キャッシュ フィルとキャッシュ下り

キャッシュ ヒットの場合、キャッシュ下りの帯域幅に対して課金されます。キャッシュミスの場合はキャッシュ フィルの帯域幅に対しても課金されます。キャッシュミスでキャッシュ フィルが発生した場合も同様です。他の条件がすべて同じ場合、キャッシュ ヒットの費用はキャッシュミスよりも低くなります。料金の詳細については、料金ページをご覧ください。

キャッシュへのコンテンツの保存

あるオブジェクトが特定のキャッシュに保存されるのは、リクエストがそのキャッシュを通過し、かつレスポンスがキャッシュ可能な場合だけです。このような条件を満たす必要があることから、キャッシュへの保存は事後対応になります。キャッシュに保存されたオブジェクトが他のキャッシュに自動的に複製されることはありません。キャッシュ フィルは、クライアントが作成したリクエストに応じて実行されます。個々のキャッシュがリクエストに応答する場合を除いて、キャッシュを事前に読み込むことはできません。

送信元サーバーがバイト範囲リクエストをサポートしている場合、Cloud CDN が単一のクライアント リクエストに対して複数のキャッシュ フィル リクエストを作成することがあります。キャッシュ フィル リクエストの詳細については、Cloud CDN によって作成されるリクエストをご覧ください。

キャッシュから提供されたコンテンツ

Cloud CDN を有効にすると、キャッシュ可能なすべてのコンテンツが自動的にキャッシュに保存されます。送信元サーバーは、どのレスポンスをキャッシュし、どれをキャッシュしてはならないかを、HTTP ヘッダーを使用して指示します。バックエンド バケットを使用するときは、送信元サーバーは Cloud Storage です。VM インスタンスを使用するときは、送信元サーバーはそのインスタンスを実行しているウェブサーバー ソフトウェアです。 Cloud CDN がキャッシュに保存する内容や保存期間などについては、キャッシュの詳細をご覧ください。

Cloud CDN は、世界各地の多数のロケーションにあるキャッシュを使用します。キャッシュの特性上、特定のリクエストがキャッシュから提供されるかどうかを予測することはできません。ただし、キャッシュ可能なコンテンツに対するリクエストが多い場合は、そのリクエストへのレスポンスがキャッシュから返される可能性が高くなり、レイテンシの大幅な短縮やコストの削減と、送信元サーバーへの負荷の軽減が期待できます。

ログを表示すると、Cloud CDN がどのコンテンツをキャッシュから配信しているかがわかります。キャッシュからコンテンツを削除するには、キャッシュの無効化を実行します。

エビクションと有効期限

コンテンツをキャッシュから配信するには、コンテンツをキャッシュに保存し、コンテンツの削除や期限切れを防ぐ必要があります。

エビクションと有効期限は異なるコンセプトです。いずれも提供されるコンテンツに影響を及ぼしますが、相互に直接影響を与えることはありません。

  • エビクション: キャッシュに保存されるコンテンツの量には上限があります。Cloud CDN は、キャッシュがいっぱいになった後もコンテンツを追加します。保存量の上限に達しているキャッシュにコンテンツを挿入する場合、キャッシュ内のデータを削除して空き領域を確保します。この処理をエビクションといいます。キャッシュは常にいっぱいになっているため、常にエビクションが行われています。通常はコンテンツの有効期限に関係なく、最近アクセスされていないコンテンツが削除されます。削除されるコンテンツは期限切れの場合もあれば、そうでない場合もあります。有効期限を設定してもエビクションに影響はありません。

    人気のないコンテンツとは、しばらくアクセスされていないコンテンツのことです。「しばらく」と「人気のない」は、どちらもキャッシュ内の他のアイテムと比較した場合の相対的な基準になります。キャッシュに送信されるトラフィックが増加するにつれ、エビクションで削除されるコンテンツも増加します。

    サイズの大きなキャッシュも同様です。エビクションでコンテンツが予期せず削除される可能性があるため、リクエストがキャッシュから処理されるとは限りません。

  • 有効期限: HTTP(S) キャッシュ内のコンテンツには有効期限を構成できます。有効期限により、コンテンツ内の古いコンテンツが処理されなくなります。エビクションで削除されていないコンテンツも同様です。

    たとえば、撮影されて 1 時間以内の写真を保存する URL の場合、レスポンスの有効期限を 1 時間以内に設定します。このような設定を行わないと、キャッシュから古い写真が提供される可能性があります。

Cloud CDN によって作成されるリクエスト

送信元サーバーがバイト範囲リクエストをサポートしている場合、単一のクライアント リクエストに対して Cloud CDN から複数のリクエストが送信元サーバーに送信されることがあります。バイト範囲リクエストのサポートで説明しているように、Cloud CDN が作成できるリクエストの種類には、検証リクエストとバイト範囲リクエストの 2 つがあります。バイト範囲リクエストについて詳しくは、上述のドキュメントをご覧ください。

他の Cloud Platform サービスのデータ ロケーションの設定

Cloud CDN を使用すると、送信元サーバーのリージョンやゾーンとは別のロケーションにデータが保存される場合があります。これは正常な状態であり、HTTP キャッシュはこのようにしてインターネット上で機能します。Google Cloud Platform 利用規約のサービス固有の規約により、他の Google プロダクトやサービス(この場合は Cloud CDN サービス)と併用する場合、特定の Cloud Platform サービスで使用可能なデータ ロケーションの設定は、それぞれの Cloud Platform サービスの主要お客様データに適用されません。この条件に承諾できない場合には、Cloud CDN サービスを使用しないでください。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud CDN のドキュメント