しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

Windows Server Technical Preview 2 と ARR 3.0 を組み合わせて HTTP/2 対応のリバースプロキシにしてみた

URL Rewrite 2.0 や ARR 3.0 が Windows Server Technical Preview 2 の IIS 10.0 へのインストールに対応したので、今更ながらインストールして遊んでみました。

ARR などのアップデートに関しては以下の記事で紹介しています。

Windows Server TP 2 の IIS 10.0 というか http.sys は HTTP/2 への対応が行われているので、ARR 3.0 をインストールすれば HTTP/2 のリバースプロキシとして使えるのではないかと思い、実際に確認してみました。

とりあえず ARR 3.0 をインストールした Windows Server TP 2 マシンを用意しました。HTTP/2 の効果を分かりやすくするために、以下のサイトのように大量の細かい画像を読み込むコンテンツを用意します。

HTTP vs HTTPS — Test them both yourself

コンテンツを配信するサーバーは面倒だったので Azure Blob を使いました。Keep-Alive に対応しているので、ARR からでも余計なオーバーヘッドなしに使えるはずです。

コンテンツは 360 枚のだるやなぎ画像を読み込むものになります。ちょっと気が狂いそうになりますね。

ARR の設定としては、サーバーファームを作らずに URL Rewrite でリバースプロキシを作成するだけにしました。ロードバランシングが必要な場合はサーバーファームを作ればいいです。

これで準備できたので、HTTP/1.1 と HTTP/2 でアクセスして効果を確認してみます。

HTTP/1.1 でのアクセス

http でアクセスすると HTTP/2 は無効になるので、それで簡単に確認できます。

ページの読み込みに 3.13 秒かかりました。画像のダウンロード自体よりも待ち時間のが多くかかっているのは、同時接続数の制限があるので納得できる感じです。

HTTP/2 でのアクセス

同じページに https でアクセスすると HTTP/2 が有効になります。

ページの読み込みに 1.28 秒かかりました。http でアクセスした場合より 2 倍以上早くなりました。

IIS 10.0 と ARR 3.0 の組み合わせでも、ちゃんと HTTP/2 リバースプロキシとして使えることが分かったので、是非とも Azure Application Gateway は HTTP/2 に対応してもらいたいですね。