HTTP/2 対応のWEBサーバを構築するには、ライブラリの依存関係を考慮してミドルウェアをインストールしたり、時にはソースからコンパイルしたりと、なかなかの手間がかかります。しかし Google Cloud Platform の Google Cloud Load Balancing を使うと、HTTP/2対応のWEB環境を簡単に構築することが出来ます。そこで今回は、 Google Cloud Load Balancing を使って、HTTP/2対応サイトを作る手順をまとめてみました。
Google Cloud Platform は HTTP/2 を標準サポート
仮想マシンの Google Compute Engine で、HTTP/2を有効にするには、Google Cloud Load Balancing の HTTPSロードバランサーを使うだけで実現できます。HTTP/2の原形を創ったGoogleとしては当然のことかもしれませんね。
HTTPS ロード バランサーを使用して、 TLS トンネルの終了と HTTP/2 のネゴシエーションを実行できます。Google App Engine と同様に、ロード バランサーはインバウンドのHTTP/2 ストリームを HTTP/1.1 リクエストに変換し、それをサーバーに転送します。Google Compute Engine や Google Container Engine を使用するアプリケーションでは、これが HTTP/2 を有効にする最も簡単ですばやい方法です。
設定概要
Google Cloud Load Balancing のバックエンドとなる、仮想マシンは、Google Compute Engine(もしくは Container Engine)である必要がありますので、Compute Engine で、WEBサーバを構築し、HTTPSロードバランサーのバックエンドとして登録します。ロードバランサー=負荷分散ですが、バックエンドのサーバは1台でもOKです。
準備するもの
HTTPSロードバランサーを設定するには、以下のものが必要になります。
- 独自ドメイン
- SSLサーバ証明書と秘密鍵
Compute Engine 仮想マシンの作成
まず始めに、Compute Engine で、仮想マシンを作成します。スペック等はご自分のサイトに合わせて、選択してください。
Google Cloud Platform のコンソールで「Compute Engine」をクリックします。
「インスタンスを作成」をクリック
適当な名前を入力し、ゾーン、マシンタイプ、ブートディスク(サーバOS)を選択します。(次に続きます)
ファイアウォール「HTTPトラフィックを許可する」をチェックして、「作成」をクリックします。
30秒くらいで、仮想マシンが作成されます。
WEBサーバのインストールと設定
作成した仮想マシンに、WEBサーバをインストールします。今回は、Apache HTTP Server をインストールしましたが、なんでも構いません。
接続「SSH」をクリックすると、作成した仮想マシンにログインできます。
WEBサーバのインストール
WEBサーバの設定(ServerNameは、ご自分が所有しているドメイン名に書き換えてください)
sudo vim /etc/httpd/conf/httpd.conf
↓
ServerName web01.apar.jp:80
起動
自動起動設定
インデックスページの配置
(これを配置しないと、後に設定するヘルスチェックがNGになるので注意です)
vim /var/www/html/index.html
ブラウザで「http://<外部IP>/」に接続し、「Hello world!」が表示されればOKです。
インスタンスグループの作成
続いて、インスタンスグループを作成し、作成した仮想マシンを所属させます。
Compute Engine →「インスタンスグループ」をクリックします。
「インスタンスグループを作成」をクリック
適当な名前を入力し、作成した仮想マシンと同じゾーンを選択します。(次に続きます)
作成方法「既存のインスタンスを選択」をクリック→VMインスタンスで、作成した仮想マシンを選択し、「作成」をクリックします。
インスタンスグループが作成されました。
ヘルスチェックの作成
ロードバランサーを設定する前に、ヘルスチェックを作成しておきます。
Compute Engine →「ヘルスチェック」をクリックします。
「ヘルスチェックを作成」をクリック
適当な名前を入力し、「作成」をクリックします。
ヘルスチェックが作成されました。
HTTPSロードバランサーの作成
下準備が長くなりましたが、いよいよ本題の、HTTPSロードバランサーの作成です。ここでは「バックエンドの設定」「ホストとパスのルール」「フロントエンドの設定」を行います。
左上の「≡」(ツールとサービス)→「ネットワーキング」をクリックします。
「負荷分散」をクリック
「ロードバランサーを作成」をクリック
HTTP(S)負荷分散の「設定を開始」をクリック
適当な名前を入力します。
バックエンドの設定
「バックエンドの設定」→「バックエンドサービスを作成」をクリックします。
適当な名前を入力し、作成したインスタンスグループを選択します。(次に続きます)
下にスクロールして、作成したヘルスチェックを選択します。(特に保存ボタンはないようです)
ホストとパスルール
「ホストとパスルール」をクリックし、作成したバックエンドサービスが表示されていることを確認します。
フロントエンドの設定
「フロントエンドの設定」をクリックします。
プロトコル→「HTTPS」を選択し、証明書→「新しい証明書の作成」をクリックします。今回はテストなのでIPアドレスはエフェメラル(動的)にしていますが、固定IPにすることもできます。
適当な名前を入力し、準備した「公開鍵証明書(SSLサーバ証明書)」「証明書チェーン(中間CA証明書)」「秘密鍵」の内容をコピペします。
証明書の情報が、正しく表示されていることを確認して「作成」をクリックします。
確認と完了
以上で入力完了です。「確認と完了」をクリックして、内容に間違えがないことを確認したら「作成」をクリックします。
30秒くらいで、ロードバランサーが作成されます。
DNSサーバの設定
最後に、独自ドメインのAレコードに、ロードバランサーのIPアドレスを設定すれば、設定完了です。
ロードバランサーの IPアドレスを確認
作成したロードバランサー名をクリックします。
フロントエンドの「IP:ポート」のところに、IPアドレスが表示されますので、こちらを独自ドメインのAレコードに設定します。
動作確認
ブラウザで「https://<独自ドメイン>/」に接続し、「Hello world!」が表示されればOKです。
Firefoxの開発ツールなどで、HTTP/2でアクセスしていることが確認できると思います。
エラーが表示される場合
ブラウザに、以下のようなエラーが表示される場合は、ドキュメントルートに index.html が配置されていない可能性があります。ご確認ください。
The server encountered a temporary error and could not complete your request.
Please try again in 30 seconds.
終わりに(費用について)
便利な Google Cloud Load Balancing ですが、気になるはお値段です。
●2016年6月15日時点の料金表
Load balancing pricing
All regions
Hourly service charge $0.025 (5 rules included) $0.010 per additional rule
Per GB of data processed $0.008
月間のデータ転送量が、100GBとすると、、、
$0.025 × 720時間 + $0.008 × 100GB = $18.8
為替レートが110円だとして、2,000円/月くらいになります。
別途、Compute Engine の仮想マシンの料金がかかりますが、HTTP/2対応のSSLアクセラレータが付いた世界最強(たぶん)のロードバランサーを、この価格で使えるのは、かなりお得ではないでしょうか。
また、AWSのElastic Load Balancingの料金と比較してみると、リージョンによっては Google Cloud Load Balancing の方が、すこ〜しだけお安くなってます。クラウド業界も価格競争が大変ですね(^^;)
コメント