ロードバランサへの Cloud Storage バケットの追加

ロードバランサ バックエンドとしての Cloud Storage バケットの使用

このドキュメントでは、静的コンテンツのリクエストを Cloud Storage バケットにルーティングするように HTTP(S) ロードバランサのサンプル構成を変更する方法について説明します。Cloud Storage バケットを使用してロードバランサを構成すると、/static で始まる URL パスへのリクエストがストレージ バケットに送信され、他のリクエストはすべて仮想マシン インスタンスに送信されます。このドキュメントでは、米国と EU のリージョンをサポートする 2 つのバックエンド バケット間でトラフィックをルーティングする設定も行います。

始める前に

  1. gcloud または gsutil ユーティリティを使用する場合は、クイックスタート: gsutil ツールの使用の手順に従って、これらのツールをインストールします。
  2. デフォルトのプロジェクトを設定します

    Console


    a. Google Cloud Platform Console の [ホーム] ページに移動します。
    Google Cloud Platform のホームページに移動

    b. Google Cloud Platform の右側にあるプルダウン メニューでプロジェクトを選択します。

    gcloud または gsutil


     gcloud config set project [PROJECT_ID]
    

    または

     gsutil config set project [PROJECT_ID]
    
    • [PROJECT_ID] - このガイドで使用するプロジェクトです。
  1. コンテンツ ベースおよびクロスリージョンの負荷分散のガイドを完了します。このドキュメントの手順を行うには、このガイドを使用して作成された構築するリソースが必要です。

Cloud Storage バケットと負荷分散サービスの構成

以下の手順は、1 つのオブジェクトを各 Cloud Storage バケットにアップロードし、オブジェクトの権限を設定していることを前提にしています。

Cloud Storage バケットのすべてのオブジェクトを公開するには、オブジェクトのグループを公開するの手順に従います。

ワイルドカード文字(globs)を使用して複数のオブジェクトのアップロードと権限の設定を行うには、ワイルドカード名をご覧ください。オブジェクトのアップロードの詳細については、オブジェクトのアップロードをご覧ください。

Cloud Storage バケットの構成

Cloud Storage バケットを 2 つ作成し、それぞれにオブジェクトをアップロードします。バケット名はグローバルに一意である必要があります。この例では、HTTP(S) 負荷分散のインスタンスと同じリージョンに 2 つのマルチリージョン バケットを作成します。

Console


Cloud Storage バケットを米国で作成します。

  • Google Cloud Platform Console で Cloud Storage ブラウザを開きます。
    Cloud Storage ブラウザを開く
  • [バケットの作成] をクリックします。
  • バケットの名前を入力します。
    • バケットの名前空間はグローバルであり、一般公開されるため、バケット名に機密情報を含めないでください。
  • [ストレージ クラス] で [標準] を選択します。
  • [場所] で [米国] を選択します。
  • [作成] をクリックします。
  • この手順を繰り返して 2 番目のバケットを作成します。今回は [ロケーション] で EU を選択します。

    us バケットを入力します。

    static フォルダを作成します

    1. バケットの中で、[フォルダを作成] をクリックします。
    2. フォルダ名として「static」と入力します。
    3. [作成] をクリックします。

    ローカル ディレクトリからオブジェクトをアップロードします。

    1. フォルダ内で、[ファイルをアップロード] をクリックします。
    2. ファイル システム内のオブジェクトを参照して選択します。
    3. [開く] をクリックします。

    負荷分散を通じて提供できるように、オブジェクトを公開します。

    1. 公開するオブジェクトのメニュー アイコンをクリックします。

      オブジェクト行の右端にある縦に並んだ 3 つの点がメニュー アイコンです。

    2. メニューから [権限を編集] を選択します。

    3. [項目を追加] をクリックします。

    4. allUsers の権限を追加します。

      • [エンティティ] で [ユーザー] を選択します。
      • [名前] に「allUsers」と入力します。
      • [アクセス] で [読み取り] を選択します。
    5. [保存] をクリックします。

    公開の状態で共有されると、[公開アクセス] 列にリンクアイコンが表示されます。このアイコンをクリックすると、オブジェクトの URL を取得できます。

    同じ手順を繰り返しますが、今回は eu バケットです。

    gsutil


    1. Cloud Storage バケットを作成します。

    2. ターミナル ウィンドウを開きます。
    3. gsutil mb コマンドと固有の名前を使用してバケットを作成します。
      gsutil mb gs://my-awesome-bucket/
      

      これは、「my-awesome-bucket」という名前のバケットを使用します。独自のグローバルに固有なバケット名を選択する必要があります。

      成功した場合、次の内容が返されます。

      Creating gs://my-awesome-bucket/...
      
    4. バケットが作成されたので、データを保存できます。

    同じ手順を繰り返します。今回は、gsutil mb -l eu gs://my-awesome-bucket/ を実行してロケーションに eu と指定します。

    us バケットを入力します。

    1. ローカル ディレクトリからオブジェクトをアップロードします。ファイルが別のディレクトリにある場合は、完全パスを指定します。

      gsutil cp [OBJECT_NAME] gs://[EXAMPLE_BUCKET]/static/[OBJECT_NAME]
      
      • [EXAMPLE_BUCKET] - 作成したバケット
      • [OBJECT_NAME] - アップロードするオブジェクトのファイル名
    2. 負荷分散を通じて提供できるように、オブジェクトを一般読み取り可能にします。

      gsutil acl ch -u AllUsers:R gs://[EXAMPLE_BUCKET]/static/[OBJECT_NAME]
      
      • [EXAMPLE_BUCKET] - 作成したバケット
      • [OBJECT_NAME] - アップロードしたオブジェクトのファイル名

    同じ手順を繰り返しますが、今回は eu バケットです。

    Cloud Storage バケットのバックエンド バケットの作成

    この手順は、HTTP(S) 負荷分散のサンプルが完成していることを前提としています。

    静的コンテンツ用のバックエンド サービスを作成するのではなく、動画コンテンツで行ったように、上で作成した Cloud Storage バケットを参照する新しいバックエンド バケットを 2 つ作成します

    Console


    1. Google Cloud Platform Console の [負荷分散] ページに移動します。
      [負荷分散] ページに移動
    2. web-map 行の [編集] をクリックします。
    3. [バックエンドの設定] の横にある右向き矢印をクリックします。
    4. [バックエンド バケットを作成または選択] をクリックし、[バックエンド バケットを作成] を選択します。
    5. 名前として「static-bucket-us」を入力します。
    6. [Cloud Storage バケット] の横の [参照] を選択します。
    7. 作成した us バケットを探して選択します。
    8. [選択] をクリックします。
    9. [作成] をクリックしてバックエンド バケットを作成します。
    10. ロードバランサの [更新] はまだクリックしないでください。

    この手順を繰り返して、2 番目のバックエンド バケットを作成します。今回は、[名前] フィールドに「static-bucket-eu」を入力し、以前に作成した eu バケットを選択します。

    gcloud


    gcloud compute backend-buckets create static-bucket \
        --gcs-bucket-name [EXAMPLE_BUCKET]
    
    • [EXAMPLE_BUCKET] - 作成した us バケット

    コマンドを繰り返します。EXAMPLE_BUCKET は、作成した eu バケットに置き換えます。

    web-map URL マップの変更

    上で作成したバックエンド バケットに /static/* をマップするルールを、既存の web-map URL マップに追加します。これによって、/static/* を含むすべてのリクエストが Cloud Storage バケットに転送されます。

    Console


    1. [ホストとパスのルール] の横にある右向き矢印をクリックします。
    2. 3 行目の [ホスト] フィールドに「*」と入力します。
    3. [パス] フィールドに「/static/us/*」と入力します。
    4. [バックエンド] フィールドに「static-bucket-us」と入力します。
    5. ロードバランサの [更新] をクリックします。

    [パス] フィールドに /static/eu/* と入力し、[バックエンド] フィールドに static-bucket-eu と入力します。

    gcloud


    US のパスルールを追加します。

    gcloud compute url-maps add-path-matcher web-map \
        --default-service web-map-backend-service \
        --path-matcher-name bucket-matcher \
        --backend-bucket-path-rules="/static/us/*=static-bucket-us"
    

    EU のパスルールを追加します。

    gcloud compute url-maps add-path-matcher web-map 
    --default-service web-map-backend-service
    --path-matcher-name bucket-matcher
    --backend-bucket-path-rules="/static/eu/*=static-bucket-eu"

    Cloud Storage バケットからのリソースの取得

    Console


    1. Google Cloud Platform Console で [アドレス] ページに移動します。
      [アドレス] ページに移動
    2. lb-ip-1 の行を探して、[外部アドレス] フィールドの IP アドレスを書き留めます。
    3. ロードバランサが使用しているプロトコルに応じて http://[IP_ADDRESS]/static/[REGION]/[OBJECT_NAME] または https://[IP_ADDRESS]/static/[REGION]/[OBJECT_NAME] とブラウザに入力し、Enter キーを押します。[REGION]useu の両方を入力してみてください。

    gcloud


    1. グローバル転送ルールの IP アドレスを検索します。

      gcloud compute forwarding-rules list
      
    2. 必要なアドレスは、HTTP(S) 負荷分散のサンプル作成した際のルールのアドレスです。curl を使用するか、ブラウザで URL を参照して、Cloud Storage バケットがトラフィックを受信していることを確認します。

      curl http://[IP_ADDRESS]/static/[REGION]/[OBJECT_NAME]
      

      または

      curl -k https://[IP_ADDRESS]/static/[REGION]/[OBJECT_NAME]
      
      • [IP_ADDRESS] - グローバル転送ルールの IP アドレス
      • [OBJECT_NAME] - アップロードしたサンプル オブジェクトの名前を使用します
      • [REGION] - us または eu。それぞれを試してみてください。

    このコマンドは、[EXAMPLE_BUCKET] Cloud Storage バケットからの [OBJECT_NAME] で応答します。

    オブジェクトを static/[FOLDER_NAME]/[FOLDER_NAME]/[OBJECT_NAME] という名前でバケットに保存した場合、そのオブジェクトは http://[IP_ADDRESS]/static/[FOLDER_NAME]/[FOLDER_NAME]/[OBJECT_NAME] の URL で取得できます。

    次のステップ