簡単!Google Cloud Platform で HTTP/2対応サイトを作る

クラウド
クラウド
スポンサーリンク

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 Platform Japan Blog より引用

設定概要

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」をクリックします。

gcp-http2-02

「インスタンスを作成」をクリック

gcp-http2-03

適当な名前を入力し、ゾーン、マシンタイプ、ブートディスク(サーバOS)を選択します。(次に続きます)

gcp-http2-04

ファイアウォール「HTTPトラフィックを許可する」をチェックして、「作成」をクリックします。

gcp-http2-05

30秒くらいで、仮想マシンが作成されます。

gcp-http2-06

WEBサーバのインストールと設定

作成した仮想マシンに、WEBサーバをインストールします。今回は、Apache HTTP Server をインストールしましたが、なんでも構いません。

接続「SSH」をクリックすると、作成した仮想マシンにログインできます。

gcp-http2-07

WEBサーバのインストール

sudo yum -y install httpd-devel

WEBサーバの設定(ServerNameは、ご自分が所有しているドメイン名に書き換えてください)
sudo vim /etc/httpd/conf/httpd.conf

#ServerName www.example.com:80

ServerName web01.apar.jp:80

起動

sudo systemctl start httpd

自動起動設定

sudo systemctl enable httpd

インデックスページの配置
(これを配置しないと、後に設定するヘルスチェックがNGになるので注意です)
vim /var/www/html/index.html

<h1>Hello world!</h1>

ブラウザで「http://<外部IP>/」に接続し、「Hello world!」が表示されればOKです。

インスタンスグループの作成

続いて、インスタンスグループを作成し、作成した仮想マシンを所属させます。

Compute Engine →「インスタンスグループ」をクリックします。

gcp-http2-08

「インスタンスグループを作成」をクリック

gcp-http2-09

適当な名前を入力し、作成した仮想マシンと同じゾーンを選択します。(次に続きます)

gcp-http2-10

作成方法「既存のインスタンスを選択」をクリック→VMインスタンスで、作成した仮想マシンを選択し、「作成」をクリックします。

gcp-http2-11

インスタンスグループが作成されました。

gcp-http2-12

ヘルスチェックの作成

ロードバランサーを設定する前に、ヘルスチェックを作成しておきます。

Compute Engine →「ヘルスチェック」をクリックします。

gcp-http2-13

「ヘルスチェックを作成」をクリック

gcp-http2-14

適当な名前を入力し、「作成」をクリックします。

gcp-http2-15

ヘルスチェックが作成されました。

gcp-http2-16

HTTPSロードバランサーの作成

下準備が長くなりましたが、いよいよ本題の、HTTPSロードバランサーの作成です。ここでは「バックエンドの設定」「ホストとパスのルール」「フロントエンドの設定」を行います。

左上の「≡」(ツールとサービス)→「ネットワーキング」をクリックします。

gcp-http2-17

「負荷分散」をクリック

gcp-http2-18

「ロードバランサーを作成」をクリック

gcp-http2-19

HTTP(S)負荷分散の「設定を開始」をクリック

gcp-http2-20

適当な名前を入力します。

gcp-http2-21

バックエンドの設定

「バックエンドの設定」→「バックエンドサービスを作成」をクリックします。

gcp-http2-22

適当な名前を入力し、作成したインスタンスグループを選択します。(次に続きます)

gcp-http2-23

下にスクロールして、作成したヘルスチェックを選択します。(特に保存ボタンはないようです)

gcp-http2-24

ホストとパスルール

「ホストとパスルール」をクリックし、作成したバックエンドサービスが表示されていることを確認します。

gcp-http2-25

フロントエンドの設定

「フロントエンドの設定」をクリックします。

gcp-http2-26

プロトコル→「HTTPS」を選択し、証明書→「新しい証明書の作成」をクリックします。今回はテストなのでIPアドレスはエフェメラル(動的)にしていますが、固定IPにすることもできます。

gcp-http2-27

適当な名前を入力し、準備した「公開鍵証明書(SSLサーバ証明書)」「証明書チェーン(中間CA証明書)」「秘密鍵」の内容をコピペします。

gcp-http2-28

証明書の情報が、正しく表示されていることを確認して「作成」をクリックします。

gcp-http2-29

確認と完了

以上で入力完了です。「確認と完了」をクリックして、内容に間違えがないことを確認したら「作成」をクリックします。

gcp-http2-30

30秒くらいで、ロードバランサーが作成されます。

gcp-http2-31

DNSサーバの設定

最後に、独自ドメインのAレコードに、ロードバランサーのIPアドレスを設定すれば、設定完了です。

ロードバランサーの IPアドレスを確認

作成したロードバランサー名をクリックします。

gcp-http2-31

フロントエンドの「IP:ポート」のところに、IPアドレスが表示されますので、こちらを独自ドメインのAレコードに設定します。

gcp-http2-32

動作確認

ブラウザで「https://<独自ドメイン>/」に接続し、「Hello world!」が表示されればOKです。
Firefoxの開発ツールなどで、HTTP/2でアクセスしていることが確認できると思います。

gcp-http2-33

エラーが表示される場合

ブラウザに、以下のようなエラーが表示される場合は、ドキュメントルートに index.html が配置されていない可能性があります。ご確認ください。

Error: Server Error
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

https://cloud.google.com/compute/docs/load-balancing/ より引用

月間のデータ転送量が、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 の方が、すこ〜しだけお安くなってます。クラウド業界も価格競争が大変ですね(^^;)

コメント

タイトルとURLをコピーしました