チェックポイント
Create and populate a Cloud Storage bucket
/ 50
Create the HTTP Load Balancer with Cloud CDN
/ 50
Cloud CDN
GSP217
概要
このラボでは、バックエンド バケットの Google Cloud CDN(コンテンツ配信ネットワーク)を構成し、キャッシュへの画像の保存を検証します。Cloud CDN は、世界各地に分散している Google のエッジ拠点を使用して、HTTP(S) の負荷分散コンテンツをユーザーの近くでキャッシュに保存します。Google のネットワーク エッジのキャッシュにコンテンツを保存すると、コストを削減しながら、ユーザーにより速くコンテンツを配信できます。
Google Cloud CDN キャッシュ サイトの最新のリストについては、ドキュメント(https://cloud.google.com/cdn/docs/locations)をご覧ください。
目標
このラボでは、次のタスクの実行方法について学びます。
-
Cloud Storage バケットを作成してデータを入力する
-
Cloud CDN を使用して HTTP ロードバランサを作成する
-
キャッシュへのバケット コンテンツの保存を検証する
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
- ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウでリンクを開く] を選択します)。
ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。 -
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}} [ラボの詳細] パネルでも [ユーザー名] を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}} [ラボの詳細] パネルでも [パスワード] を確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。 -
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
Cloud Shell をアクティブにする
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
- Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン
をクリックします。
接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
-
[承認] をクリックします。
-
出力は次のようになります。
出力:
- (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
出力:
出力例:
gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
Cloud Storage バケットを作成してデータを入力する
Cloud CDN コンテンツの送信元となるバックエンドには、次の 2 種類があります。
- Compute Engine 仮想マシン(VM)インスタンス グループ
- Cloud Storage バケット
このラボでは、Cloud Storage バケットをバックエンドとして構成します。
一意の Cloud Storage バケットを作成する
-
Cloud Console のナビゲーション メニューから [Cloud Storage] > [ブラウザ] をクリックします。
-
[バケットを作成] をクリックします。
-
以下のフィールドの値を設定します。その他のフィールドはデフォルト値のままにします。
プロパティ 値(値を入力するか、指定されたオプションを選択) 名前 グローバルに一意の名前を入力します。
入力した名前が一意でない場合、別の名前を試すように促すメッセージが表示されます。ロケーション タイプ Multi-region ロケーション お客様の所在地から非常に遠い場所を選択します。
-
[作成] をクリックします。
-
ストレージ バケットの名前をメモしておきます(次のステップで使用します)。これ以降は、この名前を
[your-storage-bucket]
と呼びます。
バケットに画像ファイルをコピーする
Cloud Storage の公開バケットから自分のバケットに画像をコピーします。
-
Cloud Shell で次のコマンドを実行します。
[your-storage-bucket]
の部分は自分のバケットの名前に置き換えてください。
gsutil cp gs://cloud-training/gcpnet/cdn/cdn.png gs://[your-storage-bucket]
[承認] をクリックします。
- [バケットの詳細] ページで [更新] をクリックして、画像がバケットにコピーされたことを確認します。
バケットを公開する
公開オブジェクト専用の Cloud Storage バケットを作成することをおすすめします。
- [バケットの詳細] ページで、[権限] タブをクリックします。
- [追加] をクリックします。
- [新しいメンバー] に「allUsers」と入力して、プルダウン メニューからそれを選択します。
- ロールとして [Cloud Storage] > [Storage オブジェクト閲覧者] を選択します。
- [保存] をクリックします。
- [一般公開アクセスを許可] をクリックします。
- [オブジェクト] タブをクリックします。
- [公開アクセス] の [URL をコピー] をクリックし、新しいブラウザタブを開いて URL を貼り付け、画像にアクセスできることを確認します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Cloud CDN を使用して HTTP ロードバランサを作成する
HTTP(S) 負荷分散は、Cloud Storage バケット(バックエンド)への静的コンテンツの HTTP(S) リクエストに対してグローバルな負荷分散を行います。バックエンドで Cloud CDN を有効にすることにより、Google ネットワークのエッジにあるロケーションのキャッシュにコンテンツが保存されるようになります。このロケーションは通常、バックエンドよりもはるかにユーザーに近い場所にあります。
HTTP ロードバランサの構成を開始する
-
Cloud Console のナビゲーション メニュー(
)から [ネットワーク サービス] > [Cloud Load Balancing] を選択し、[ロードバランサを作成] をクリックします。
-
[HTTP(S) 負荷分散] で [構成を開始] をクリックします。
-
[インターネットから自分の VM へ] をオンにし、[続行] をクリックします。
-
[名前] を
cdn-lb
に設定します。
バックエンドを構成する
- [バックエンドの構成] をクリックします。
- [バックエンド サービスとバックエンド バケット] の [バックエンド サービスとバックエンド バケットの作成または選択] プルダウン メニューをクリックして、[バックエンド バケット]、[バックエンド バケットを作成] の順にクリックします。
- [名前] を
cdn-bucket
に設定します。 - [Cloud Storage バケット] で、[参照] をクリックします。
- バケットをクリックして、[選択] をクリックします。
- [Cloud CDN を有効にする] をオンにします。
- [静的コンテンツをキャッシュする] がデフォルトでオンになっています。このラボでは [クライアント有効期間]、[デフォルトの有効期間]、[最大有効期間] をすべて [1 分] に設定します。
- [作成] をクリックします。
フロントエンドを構成する
-
[フロントエンドの構成] をクリックします。
-
以下のように設定します。その他の値はデフォルト値のままにします。
プロパティ 値(値を入力するか、指定されたオプションを選択) プロトコル HTTP IP バージョン IPv4 IP アドレス エフェメラル ポート 80 -
[完了] をクリックします。
HTTP ロードバランサを確認して作成する
-
[確認と完了] をクリックします。
-
バックエンド バケットとフロントエンドを確認します。
-
[作成] をクリックし、ロードバランサが作成されるのを待ちます。
-
ロードバランサの名前(cdn-lb)をクリックします。
-
ロードバランサの IP アドレスをメモします(次のタスクで使用します)。これ以降は、これを
[LB_IP_ADDRESS]
と呼びます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
キャッシュへのバケット コンテンツの保存を検証する
バケットの HTTP ロードバランサを作成し、Cloud CDN を有効にしたところで、今度は Google のネットワークのエッジで画像がキャッシュに保存されることを確認します。
画像の HTTP リクエストの時間を計測する
画像がキャッシュに保存されたことを確認する 1 つの方法は、画像の HTTP リクエストの時間を計測することです。初回リクエストにかかる時間は長くなります。コンテンツはエッジ ロケーションから初めてアクセスされたときに、そのロケーションのキャッシュに保存されるからです。
-
Cloud Shell でロードバランサの IP アドレスを環境変数に保存します。
export LB_IP_ADDRESS=<ロードバランサの IP アドレスを入力します>
-
次のコマンドを実行して、連続する 3 つの HTTP リクエストの時間を計測します。
for i in {1..3};do curl -s -w "%{time_total}\n" -o /dev/null http://$LB_IP_ADDRESS/cdn.png; done
出力は次のようになります(これは出力例ですのでコピーしないでください)。
1.234357
0.009600
0.006652
-
ログを得るために、コマンドを数回繰り返し実行します。
for i in {1..3};do curl -s -w "%{time_total}\n" -o /dev/null http://$LB_IP_ADDRESS/cdn.png; done
Cloud CDN ログを調べる
前のステップで画像がキャッシュに保存されたことを確認するもう一つの方法は、Cloud CDN ログを調べることです。これらのログには、コンテンツがキャッシュに保存された日時と、キャッシュがアクセスされた日時に関する情報が含まれています。
-
Cloud Console のナビゲーション メニューから [ロギング] > [ログ エクスプローラ] を選択します。
-
[リソース] フィルタから [Cloud HTTP ロードバランサ] > [cdn-lb-forwarding-rule] > [cdn-lb] の順に選択し、[追加] をクリックします。
-
[クエリを実行] をクリックします。
-
最初のログエントリ(最上部)を展開します。
-
エントリ内で httpRequest を展開し、cacheLookup が
true
になっていて、cacheHit フィールドが存在しないことを確認します。これは、この最初のリクエストではキャッシュに画像が含まれていなかったことを示しています。 -
jsonPayload を展開し、statusDetails フィールドに
response_sent_by_backend
が含まれていることを確認します。これもまた、最初のリクエストでは、画像がバックエンド バケットから取得されたことを示しています。 -
展開したログエントリを閉じて、クエリ結果の最下部のログエントリを展開します。
-
そのエントリ内で httpRequest を展開し、cacheLookup と CacheHit が
true
になっていることを確認します。 これは、このリクエストではキャッシュに画像が含まれていたことを示しています。 -
jsonPayload を展開し、statusDetails フィールドに
response_from_cache
が含まれていることを確認します。これもまた、このリクエストでは画像がバックエンドではなくキャッシュから取得されたことを示しています。
お疲れさまでした
このラボでは、HTTP ロードバランサを構成し、チェックボックスをオンにするだけで Cloud CDN を有効にすることにより、バックエンド バケットの Cloud CDN を構成しました。画像に数回アクセスして、Cloud CDN ログを調べることにより、キャッシュへのバケット コンテンツの保存を確認しました。画像への初回アクセス時は、エッジ ロケーションのキャッシュにまだ画像が含まれていないため、長めの時間がかかりました。他のすべてのリクエストでは、Cloud Shell インスタンスに最も近いエッジ ロケーションのキャッシュから画像が供給されたため、時間が短縮されました。
Google Cloud CDN キャッシュ サイトの最新のリストについては、ドキュメント(https://cloud.google.com/cdn/docs/locations)をご覧ください。
クエストを完了する
このセルフペース ラボは、Qwiklabs の「Network Performance and Optimization」クエストの一部です。クエストとは学習パスを構成する一連のラボのことで、完了すると成果が認められて上のようなバッジが贈られます。バッジは公開して、オンライン レジュメやソーシャル メディア アカウントにリンクできます。このラボの修了後、次のクエストに登録すれば、すぐにクレジットを受け取ることができます。受講可能なその他の Qwiklabs のクエストもご確認ください。
次のラボを受講する
「Network Tiers - Optimizing Netwok Spend」に進んでクエストを続けるか、以下のおすすめのラボをご確認ください。
次のステップと詳細情報
Cloud CDN の基本コンセプトについては、Cloud CDN のドキュメントをご覧ください。
マニュアルの最終更新日: 2021 年 5 月 26 日
ラボの最終テスト日: 2021 年 5 月 26 日
Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。