問題タブ [aws-alb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
amazon-web-services - バックエンドとフロントエンドをサポートする Http/2 ベースのロード バランサー
私たちはエンタープライズ企業として、 http/2 に移行したいと考えています。以下は私たちのインフラストラクチャです。
インフラストラクチャ 現在、AWS ALB を、Apache Web サーバーを実行する EC2 インスタンスに支えられたロード バランサーとして使用しています。Apache Web サーバーは、mod_jk コネクターを介して tomcat サーブレット コンテナーに接続される http サーバーです。webapp は tomcat にあります。
Apache Web サーバーで http/2 を有効にしましたが、問題は、AWS ALB が http/2 をフロントエンドとのみ通信し、バックエンドと通信しないことです。AWS ALBをレイヤー 4 ロード バランサー (TCP モードまたは TCP パス スルー モード) として実行することで、この問題を克服するための解決策を読みました。クライアントを識別する x-forwarded-for ヘッダーのように、クライアントから http/2 形式で渡された情報がロード バランサーで TCP に変換されるときに失われるため、これにはいくつかの問題がある可能性があります。また、私は(そしていくつかのブログによると)セッションの粘着性もトスになると思います.これはレイヤー7でのみサポートされている機能の1つでもあるためです
問題は、セッションの固定性やクライアント識別などの機能を損なうことなく、フロントエンドとバックエンドの両方で AWS ALB で http/2 をサポートする方法です。AWS ALB でない場合、エンド ツー エンドの http/2 をサポートする他のロード バランサーがあります。
フロントエンドでのみ http/2 を有効にし、AWS ALB とバックエンド インスタンス (Apache Web サーバー) の間で http/1.1 を使用しても問題ありませんか。この質問に対する私の見解は、フロントエンドで http/2 を有効にすると、ブラウザと ALB の間の 1 つの TCP 接続を介してリクエストが多重化されますが、ロード バランサーと Apache Web サーバーの間のリクエストごとに 1 つの TCP 接続が存在することになります。したがって、本当にリクエストの多重化にはなりません。ここで私の理解が間違っている場合は修正してください。
インフラストラクチャ図に示されているように、AWS Cloudfront も CDN として使用します。クラウドフロントにも同様の問題があります。AWS クラウドフロントはクライアントと http/2 をやり取りしますが、バックエンドとは http/1.1 をやり取りします (ここでは、バックエンドは AWS ALB を指します)。AWS クラウドフロントでのサーバープッシュの状況は? 彼らのドキュメントでは明確に言及されていません。サーバー プッシュは、活用したい機能の 1 つです。