はじめに
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につながっているイメージの認識でよいとは思う。
ノード間でもキャッシュのやりとりを行っているらしいけど、内部的な仕組みは不明。
(誰か教えて)

コメント