GCP Cloud CDN 試してみた

GCP

はじめに

Cloud CDNを知識として知っていても、どういったものかが不明瞭だったので試してみた。

あくまでも試してみた個人的なメモ

外部 HTTP 負荷分散

CDNを理解するために、まずは外部HTTP負荷分散を構築してみる。

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

まずは振り分け先のWebサーバをグルーピングする必要がある。
そのためにはインスタンスグループを作成する必要がある。

インスタンスグループには大別して以下の種類がある。

項目内容
マネージドインスタンスグループGoogleが管理してくれるインスタンスグループ。
インスタンステンプレートを用いて同一のVMを複数台並べる。
CPU使用率等によってVM台数をスケールアウトしてくれたりする。
Googleが管理するため、既存のVMを追加したりとかはできない。
非マネージドインスタンスグループ手動で管理するインスタンスグループ。
手動管理なので、既存VMをグルーピングしたりできる。
グルーピングするには同一ゾーン、サブネットである必要がある。

今回は既存のGCEインスタンスをバランシングしたいので、非マネージドを用意する。

負荷分散の作成

Cloud CDN

Cloud CDNの設定を行う。
設定方法はCloud CDNの送信元にHTTP ロードバランサを追加する。

キャッシュされない!!!

Apache側の設定が原因だった。
Cloud CDNではCache Controlヘッダをレスポンスに付与する必要がある。
そのためにはApacheのDirectory Directiveに追加する必要がある。

### モジュールがロードされているかの確認
$ grep 'mod_expires' /etc/httpd/conf.modules.d/00-base.conf
LoadModule expires_module modules/mod_expires.so
### Apacheのコンフィグ修正
# vi /etc/httpd/conf/httpd.conf

<Directory "/var/www/html">
(snip)
    ExpiresActive On
    ExpiresByType image/png "access plus 1 month"
</Directory>

サーバ側のキャッシュ期間とCloud CDNのキャッシュ期間では短いほうが優先される。

Cloud CDN の概要

エニーキャストアーキテクチャとあるので、単一のIPでも地域によってノードが異なる。
それがHTTP-LBにつながっているイメージの認識でよいとは思う。

ノード間でもキャッシュのやりとりを行っているらしいけど、内部的な仕組みは不明。
(誰か教えて)

コメント

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