すべてのプロダクト
Search
ドキュメントセンター

Global Accelerator:GAインスタンスのHTTP/2経由のオリジンルーティングの設定

最終更新日:Sep 14, 2024

Global Accelerator (GA) インスタンスで設定されているHTTPSサービスのパフォーマンスを向上させるためにHTTP/2を使用する場合は、GAインスタンスのHTTP/2経由のオリジンルーティングを設定できます。 HTTP/2経由のオリジンルーティングを有効にすると、HTTPSサービスはHTTP/2の利点を活用して、サービスパフォーマンスを大幅に向上させ、ネットワークの遅延とオーバーヘッドを削減し、アクセスエクスペリエンスを向上させることができます。

HTTP/2とは

HTTP/2はHTTP/2.0とも呼ばれます。 HTTP/1.1と比較して、HTTP/2は、多重化、ヘッダー圧縮、リクエストの優先順位付け、およびサーバープッシュをサポートします。 これらの機能は、HTTP/1.1の特定の問題を解決します。 HTTP/2はパフォーマンスを向上させ、HTTP/1.1セマンティクスと互換性があります。 HTTP/2は、Google Chrome、Microsoft Edge、Safari、Mozilla Firefoxなどの主要なブラウザでサポートされています。

HTTP/2の利点:

  • バイナリエンコーディング: 改行で区切られた平文HTTP/1.xプロトコルとは異なり、すべてのHTTP/2通信はより小さなメッセージとフレームに分割され、それぞれがバイナリ形式でエンコードされます。 バイナリ符号化メカニズムは、HTTP/2をより拡張可能にします。 例えば、フレームは、データおよび命令を送信するために導入されます。

  • 多重化: ブラウザーはリクエストの数を同じドメイン名に制限するため、HTTP/1.xではパフォーマンスを向上させるためにスプライトと複数のドメイン名が必要です。 ページ上の多数のリソースがクライアントによって要求された場合、ヘッドオブラインブロッキング (HOLブロッキング) が発生する可能性があります。 要求の数が上限に達すると、接続ごとに一度に1つの要求しか配信できないため、要求はキューで待機する必要があります。 HTTP/2は新しいフレーミングレイヤーで、双方向ストリーム (リクエストとレスポンス) を同じTCP接続で送信できます。 各ストリームは、一意の識別子およびヘッダを有し、これに基づいて、ストリームがクライアントとサーバとの間でカプセル化される。 このメカニズムはHOLブロッキングを排除し、伝送性能を改善します。

  • ヘッダー圧縮: 各HTTPメッセージには、転送されたリソースとプロパティを記述する多数のヘッダーが含まれます。 オーバーヘッドを減らすために、HTTP/2はHPACK圧縮を使用します。 HTTP/2では、クライアントとサーバーの両方がヘッダーフィールドのインデックス付きリストを維持および更新する必要があります。 このリストは、インデックス値を転送することによって以前に送信された値を符号化するための参照として使用されます。 これにより、データ伝送の効率とパフォーマンスが向上します。

HTTP/2接続ネゴシエーション

HTTPS接続のネゴシエーションプロセス中に、アプリケーションデータを送信する前に、クライアントとサーバー間でTLS接続を確立する必要があります。 HTTP/2は、アプリケーション層プロトコルネゴシエーション (ALPN) メカニズムを使用して、クライアントとサーバーが使用するプロトコルバージョンについてネゴシエーションできるようにします。

Global Acceleratorインスタンスに対してHTTP/2経由のオリジンルーティングを有効にすると、Global Acceleratorインスタンスは、クライアントから送信されたClientHelloメッセージのALPNフィールドのプロトコルバージョンとしてh2を指定します。 さらに、GAインスタンスは、サーバーから返されるServerHelloメッセージのALPNフィールドのプロトコルバージョンを無視します。 これにより、HTTP/2によるオリジンルーティングが強制的に有効になります。

次のシナリオは一例です。 米国 (シリコンバレー) リージョンに本社を置く企業は、仮想プライベートクラウド (VPC) のElastic Compute Service (ECS) インスタンスにHTTPS Webサイトをデプロイします。 アプリケーションのほとんどのユーザーは、中国 (香港) リージョンからアプリケーションにアクセスします。 不安定なクロスボーダーネットワークが原因で発生する可能性のあるネットワーク遅延、ネットワークジッタ、パケット損失などのネットワークの問題に対処するために、Global Acceleratorインスタンスを購入しました。

Webサイトのパフォーマンスをさらに向上させ、Webサイトへのアクセスを最適化するために、企業はGAインスタンスのHTTP/2リスナーを設定することを決定します。

Global AcceleratorインスタンスのバックエンドサービスがHTTPSを使用している場合、デフォルトではHTTP/1.1がオリジンルーティングに使用されます。 この場合、Global Acceleratorインスタンスの設定を変更して、オリジンルーティングにHTTP/2を使用する必要があります。 このようにして、企業はパフォーマンスの最適化におけるHTTP/2の利点から利益を得ることができます。

image

制限事項

GAインスタンスのHTTP/2経由のオリジンルーティングを設定する場合、次の制限が適用されます。

  • デフォルトでは、プロトコルバージョンの選択機能は無効になっています。 この機能を使用するには、アカウントマネージャーに連絡してください。

  • WebSocketはサポートされていません。

  • HTTP/2 Server Pushはサポートされていません。

  • HTTP/2を使用するGoogleリモートプロシージャコール (gRPC) リクエストは高速化できません。

前提条件

  • サーバー証明書は、証明書管理サービスコンソールで購入またはアップロードされます。 詳細については、「SSL証明書の購入」および「SSL証明書のアップロードと共有」をご参照ください。

  • 証明書がバックエンドサーバーにアップロードされます。 詳細については、「クラウドアシスタントを使用したECSインスタンスへのアップロード」をご参照ください。

  • ポート443を使用するHTTPSサービスがデプロイされ、HTTP/2が有効になっています。

    バックエンドサーバーが属するセキュリティグループがTCPポート443へのアクセスを許可していることを確認します。 詳細については、「セキュリティグループルールの追加」をご参照ください。

    ECSインスタンスにポート443を使用するHTTPS NGINXサービスをデプロイし、HTTP/2を有効にするためのサンプルコード:

    1. 次のコマンドを実行してNGINXをインストールし、テストアプリケーションをデプロイします。

      yum install -y nginx
      cd /usr/share/nginx/html/
      echo "Hello World !  This is ECS." > index.html
    2. 次のコマンドを実行して、証明書と秘密鍵を格納するディレクトリを作成します。

      mkdir -p /etc/pki/nginx/private/
    3. 次のコマンドを実行して、NGINX. confという名前のnginx構成ファイルを開きます。 プロトコル設定を変更します。 次に、変更を保存して終了します。

      vim /etc/nginx/nginx.conf

      設定の詳細:

      # For more information on configuration, see:
      #   * Official English Documentation: http://nginx.org/en/docs/
      #   * Official Russian Documentation: http://nginx.org/ru/docs/
      
      user nginx;
      worker_processes auto;
      error_log /var/log/nginx/error.log;
      pid /run/nginx.pid;
      
      
      events {
          worker_connections 1024;
      }
      
      http {
          log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                            '$status $body_bytes_sent "$http_referer" '
                            '"$http_user_agent" "$http_x_forwarded_for" "$server_protocol"';
          access_log  /var/log/nginx/access.log  main;
          sendfile            on;
          tcp_nopush          on;
          tcp_nodelay         on;
          keepalive_timeout   65;
          types_hash_max_size 4096;
      
          include             /etc/nginx/mime.types;
          default_type        application/octet-stream;
          server {
              # Enable HTTP/2.
              listen       443 ssl http2;
              listen       [::]:443 ssl http2;
              server_name  _;
              root         /usr/share/nginx/html;
      
              # Specify the path of the certificate file.
              ssl_certificate "/etc/pki/nginx/<cert-file-name>.pem";
              # Specify the path of the private key.
              ssl_certificate_key "/etc/pki/nginx/private/<cert-file-name>.key";
              ssl_session_cache shared:SSL:1m;
              ssl_session_timeout  10m;
              ssl_ciphers PROFILE=SYSTEM;
              ssl_prefer_server_ciphers on;
      
      
              error_page 404 /404.html;
                  location = /40x.html {
              }
      
              error_page 500 502 503 504 /50x.html;
                  location = /50x.html {
              }
          }
      
      }
    4. 次のコマンドを実行してNGINXサービスを再起動します。

      systemctl restart nginx.service
  • Global Acceleratorインスタンスが作成されました。 NGINXサービスがデプロイされているECSインスタンスは、GAインスタンスのエンドポイントとして指定されています。 バックエンドサービスプロトコルはHTTPSに設定されています。 詳細については、「標準GAインスタンスの作成と管理」をご参照ください。

  • 証明書に関連付けられたドメイン名は、Global Acceleratorによって割り当てられたCNAMEにマップされます。 詳細については、「ドメイン名のCNAMEレコードの追加」をご参照ください。

HTTP/2でのオリジンルーティングの設定

このセクションでは、主要なパラメータについてのみ説明します。 その他のエンドポイントグループパラメーターの詳細については、「インテリジェントルーティングリスナーのエンドポイントグループの作成と管理」をご参照ください。

  1. GAコンソールにログインします。

  2. インスタンス ページで、管理するGAインスタンスを見つけ、アクション 列の リスナーの設定 をクリックします。

  3. リスナー タブで、管理するリスナーを見つけ、操作 列の エンドポイントグループの編集 をクリックします。

  4. リスナーとプロトコルの設定 ステップで、[次へ] をクリックします。

  5. エンドポイントグループの設定 ステップで、[プロトコルバージョン][HTTP/2] を選択し、[次へ] をクリックします。

    选择HTTP2.png

  6. 設定の確認 ステップで、設定を確認し、送信 をクリックします。

検証

エンドポイントグループ設定でプロトコルバージョンをHTTP/2に設定する前後に、次の手順を実行して、HTTP/2経由のオリジンルーティングが有効かどうかを確認できます。

  1. 中国 (香港) リージョンのクライアントでブラウザーを開き、https://<Accelerated domain name> と入力します。 次に、Enterキーを押して、バックエンドサービスにアクセスできるかどうかを確認します。

  2. 米国 (シリコンバレー) リージョンのバックエンドサーバーにログインします。 CLIを開き、次のコマンドを実行して、最新の訪問のレコードを表示します。

    レコードの詳細で、バックエンドサーバーにリクエストを送信するために使用されたプロトコルバージョンを確認できます。

    tail -n 1 /var/log/nginx/access.log

    次の図は、プロトコルバージョンがHTTP/2に設定される前に返されるレコードを示しています。默认HTTP1.1回源.png次の図は、プロトコルバージョンがHTTP/2に設定された後に返されるレコードを示しています。

    HTTP2回源.png