この記事は [さくらインターネット Advent Calendar 2019][0] 20日目の記事です。
[0]:https://qiita.com/advent-calendar/2019/sakura
はじまり
とあるサイトにCDNを導入してほしいとの依頼があり、弊社サービスのウェブアクセラレータを導入することになりました。そのサイトは本番稼働中で今後トラフィックが増加するのでその前に対応したいとのことでした。引き受けたのは良いのですが、本番稼働中というのが気になります。。。
稼働中の環境
サイトはさくらのクラウド上で稼働していました。GSLBを使っておりサイトのドメインはGSLBへのCNAMEが設定されている状態です。(構成についてはGSLBの概要を参照ください。)
DNSは以下のような設定です。
サイトドメイン | レコード種別 | 設定 |
---|---|---|
www.example.com | CNAME | xxxx.gslb1.sakura.ne.jp. |
ウェブアクセラレータの導入方法
詳しくはマニュアルに記載されてるのですが、導入方法に3パターンあります。
- 独自ドメイン利用
- 独自ドメインに新しくサブドメインを作成して利用
- サブドメイン利用
2、3の方法ではキャッシュしたいファイルのURLが変更になり、コンテンツの修正が必要でした。このため、今回は1の方法で導入することになりました。1の方法だとコンテンツを修正する必要がありません。
導入テスト
本番サイトに導入する前にまずテストサイトで動作を試してみます。ウェブアクセラレータの設定は概ね以下の通り進めました。
1.オリジンサーバ(ウェブサーバ)でCache-controlヘッダを設定
2.コントロールパネルからサイトを追加
3.コントロールパネルからサイトを有効化
4.DNSの設定
(詳しくは初期設定(独自ドメイン利用)を参照ください。)
テストサイトでは以下のようにDNSを設定しました。
サイトドメイン | レコード種別 | 設定 |
---|---|---|
test.example.com | CNAME | xxxx.user.webaccel.jp. |
設定後にテストサイトへアクセスするとレスポンスヘッダに x-cache: HIT
と付与されています。無事にウェブアクセラレータを利用できてるようです。
本番への導入
テストドメインで無事動作確認できたので、続いて本番に導入していきます。しかし、ここで問題が発生しました。
テストドメインと同様にオリジンサーバの設定、コンパネからサイトを追加と行なって、コンパネからサイトを有効化しようとした時にサイトが有効化できません。この状態ではウェブアクセラレータにリクエストが到達しても、もちろんリクエストは処理されません。
サイトの有効化について
コンパネからサイトを追加するときに公開ドメイン名を登録するのですが、この公開ドメイン名の所有権を確認できた時に初めてサイトの有効化が行えるようになっていました。
所有権の確認は次のどちらかの方法で行えます。
- 公開ドメイン名のCNAMEレコードを設定する
- 公開ドメイン名のTXTレコードを設定する
テストサイトでは1の方法が使えたのですが、本番サイトはすでにCNAMEが設定されていてこの方法が使えません。またCNAMEを設定しているので2の方法も使えませんでした。
このままでは本番サイトへの導入時に数分のサイト断が発生してしまう状況です。やっぱり本番サイトの構成変更では何か起こりますよね。。。
解決
断を無くしたいなぁと考えていたところ、どこからともなく話を聞きつけたウェブアクセラレータの開発者が現れました。現在の構成を説明すると
開発者)あー、その構成だと断発生しちゃいますね
自分)そうですよねー
開発者)ちょっと待って他の開発メンバーと相談してみる
自分) お、お願いします。
開発者)有効にできるからサイト教えて
自分)これこれこのサイトです。(有効にできるだって?)
開発者)設定したから見てみて
自分)有効になってる!ありがとう
なんとも裏技的ですがサイトの有効化ができちゃいました、構成を説明しただけで解決までもっていってくれています。担当者が途中からまかせっきりですがいいんでしょうか?(今度何か奢っておこうと思います。)
その後
導入作業
無事サイトの有効化が行えたので、導入作業はDNSの設定変更を行えば完了です。実際に↓のように切り替えました。
サイトドメイン | レコード種別 | 設定 | |
---|---|---|---|
作業前 | www.example.com | CNAME | xxxx.gslb1.sakura.ne.jp. |
作業後 | www.example.com | CNAME | xxxx.user.webaccel.jp. |
キャッシュするファイルやコンテンツしだいですが、導入後のウェブサーバへのリクエスト数は1/3に減りました。(対象のサイトは静的コンテンツがメインのサイトで、キャッシュに設定したのは画像ファイルやjsファイルです。)このサイトでは結果としてウェブアクセラレータの導入でウェブサーバの数が減らせるようになりました。
話の続き
今回の件を受けて、CNAMEで運用されているサイトにも導入しやすいように所有者のチェックについて機能追加が行われることになりました。サイトのサブドメインにTXTレコードを設定して所有者の確認が行えるようになるそうです。近々リリースされる予定なので同じような構成で困っておられた方はぜひ利用してもらえればと思います。
2020年01月23日 追記
件の機能がリリースされていました!
公開ドメインに既に別の CNAME レコードが設定されている場合