IDCFクラウド
活用マニュアル
〜コンテンツキャッシュを活用してWebサーバーの負荷を下げたい〜
コンテンツキャッシュを活用してWebサーバーの負荷を下げたい目次
(1) Webサーバー(オリジンサーバー)の作成と設定 ... 3 (2) DNSの設定 ... 9 (3) コンテンツキャッシュの設定 ... 15 Column:HTTPSを使用したコンテンツキャッシュ ... 21 最終更新日:2015/11/232
コンテンツキャッシュを作成して
Webサーバーの負荷を下げたい
コンテンツキャッシュは高速なキャッシュサーバーの機能を提供するサービスです。Webサーバー には予め用意してある画像などの静的なコンテンツが幾つかあると思います。この画像へのアクセ スについては、Webサーバーが応答を返してコンテンツを渡すだけですので、画像のデータを高速 なキャッシュサーバーに置いて、応答をキャッシュサーバーからにすることにより、Webサーバー 側は応答処理をする必要がなくなり、その分負荷を下げながら高速なレスポンスを得る事ができま す。 コンテンツキャッシュを含めた形で構築するには、キャッシュしたコンテンツをコンテンツキャッ シュから読み出すように指定する必要があります。IDCFクラウドのオブジェクトストレージを使用 してキャッシュ連携させる方法もありますが、今回は独自ドメインを取得したWebサーバーにオリ ジナルのファイルを置いて、コンテンツキャッシュにキャッシュさせる形で構築します。 本書の中で一部Webサーバーを「オリジンサーバー」、コンテンツキャッシュを「キャッシュサー バー」と記載しています。またDNSの設定を行いますので、独自ドメインを取得している前提で記 載しております。3
(1) Webサーバー(オリジンサーバー)の作成と設定
Webサーバー (オリジンサーバー)の作成は、「Webサイトの本番環境を構築したい(Web1台構成)」 を参照して行います。以降の手順は「Webサイトの本番環境を構築したい(Web1台構成)」のP.9 まで完了した状態からの手順となります。(http://www.idcf.jp/cloud/document.html#manual) 今回は画像をキャッシュさせる目的で構築しますので、画像ディレクトリを作成し、そのディレ クトリのルールにキャッシュヘッダ情報を追加します。 ① Web公開領域にImgディレクトリを作成し、ディレクトリができた事を確認します。[root@web01 ~]# mkdir /var/www/html/img [root@web01 ~]# ls -ld /var/www/html/img
drwxr-xr-x 2 root root 4096 11月 23 13:28 2015 /var/www/html/img
② テスト用のインデックスファイルを作成し、ファイルができた事を確認します。
[root@web01 ~]# echo "test" > /var/www/html/img/index.html [root@web01 ~]# ls -l /var/www/html/img/index.html
-rw-r--r-- 1 root root 5 11月 23 13:38 2015 /var/www/html/img/index.html
③ curlコマンドでヘッダ情報を確認し、「Cache-Control」の情報が無い事を確認します。
[root@web01 ~]# curl --head http://IPアドレス/img/ HTTP/1.1 200 OK
Date: Mon, 23 Nov 2015 04:43:52 GMT Server: Apache
Last-Modified: Mon, 23 Nov 2015 04:38:03 GMT ETag: "5-5252dca67197c" Accept-Ranges: bytes Content-Length: 5 Connection: close Content-Type: text/html [root@web01 ~]# ④ apacheのコンフィグファイルを作成し、ヘッダ情報を追加します。
[root@web01 ~]# cat >> /etc/httpd/conf.d/cache.conf << EOF <Directory "/var/www/html/img">
Header always set Cache-Control "public" </Directory>
EOF
4
⑤ コンフィグチェックを行い設定を反映します。[root@web01 ~]# apachectl configtest Syntax OK
[root@web01 ~]# service httpd restart
httpd を停止中: [ OK ] httpd を起動中: [ OK ]
⑥ curlコマンドでヘッダ情報を確認し、「Cache-Control」の情報が有る事を確認します。
[root@web01 ~]# curl --head http://IPアドレス/img/ HTTP/1.1 200 OK
Date: Mon, 23 Nov 2015 05:01:12 GMT Server: Apache
Cache-Control: public
Last-Modified: Mon, 23 Nov 2015 04:38:03 GMT ETag: "5-5252dca67197c" Accept-Ranges: bytes Content-Length: 5 Connection: close Content-Type: text/html [root@web01 ~]# ⑦ キャッシュ指定ディレクトリに画像ファイルをアップロードします。 ここではwinscpを使用して説明します ホスト名に「IPアドレス」を記入します。ユーザ名に「root」を記入し、「設定」をク リックします。
5
⑧ 高度なサイトの設定画面で左メニューより「SSH-認証」をクリックします。認証条件の秘密鍵にsshログインする際の秘密鍵を選択します。
⑨ 秘密鍵をPuTTY形式の鍵に変換するか確認のウィンドウが出ますので、OKをクリックし ます。(その後、noticeの画面が上がる場合がありますがOKをクリックします。)
6
⑩ ⑧の工程を再度実施します。鍵に今回作成したPuTTY形式の鍵を選択して「OK」をクリ ックします。 ⑪ ログインをクリックします。(初回アクセスの場合、警告の画面が出ますが、「はい」 をクリックします。) ⑫ 左側にローカル、右側にサーバーのディレクトリが表示されます(通常インストールの 場合)。右側のサーバーから「/root」のディレクトリ表示をダブルクリックします。7
⑬ 「ディレクトリを開く」テキストボックスに、①で設定したキャッシュさせるimgディ レクトリ「/var/www/html/img」を入力し、「開く」をクリックします。 ⑭ アップロードしたいファイルを右側サーバーの部分にドラッグアンドドロップしてア ップロードします。アップロードできたら×を押してウィンドウを閉じます。(終了し てもよいか確認のウィンドウが上がりますのでOKをクリックします。)8
⑮ サーバー上でアップロードできている事を確認します。 (本マニュアルではMORIO.jpgというファイルをアップロードしました。以降、 MORIO.jpgという部分は自身のアップロードしたファイルと読み替えて下さい。) [root@web01 ~]# ls -l /var/www/html/img/ 合計 16-rw-r--r-- 1 root root 12097 11月 20 21:52 2015 MORIO.jpg -rw-r--r-- 1 root root 5 11月 23 13:38 2015 index.html
⑯ アップロードしたファイルに対してHTTPのヘッダ情報を確認し、Cache-Controlのヘッ ダ情報が付与されている事を確認します。
[root@web01 ~]# curl --head http://IPアドレス/img/MORIO.jpg HTTP/1.1 200 OK
Date: Mon, 23 Nov 2015 06:45:48 GMT Server: Apache
Cache-Control: public
Last-Modified: Fri, 20 Nov 2015 12:52:35 GMT ETag: "2f41-524f85976cac0" Accept-Ranges: bytes Content-Length: 12097 Connection: close Content-Type: image/jpeg 以上でWebサーバー(オリジンサーバー)側の作業は完了です。次にDNSを設定して独 自ドメインでレコードの指定を行います。
9
(2) DNSの設定
コンテンツキャッシュを独自ドメインで使用する為には、IDCFクラウドが提供するキャッシュサ ーバーを独自ドメインで解決できるように、CNAMEレコードを追加する必要があります。今回は(1) で作成したWebサーバー(オリジンサーバー)にAレコードを作成し、コンテンツキャッシュ用に CNAMEレコードを作成します。 ① 「IDCF Cloud」のロゴマークをクリックしてトップ画面に戻り、グローバルセクション から「DNS」をクリックします。(初回アクセスの場合、サービス規約に同意してサー ビスを申し込む画面になります。サービスに申し込む事でDNSのコントロールパネルを 表示させる事が可能となります。) ② 「DNSゾーン作成」をクリックしてゾーン作成画面を表示します(契約後の初回アクセ スの場合、本画面は表示されずにDNSゾーン作成画面が直接表示される場合がありま す)。10
③ DNSゾーン作成画面で以下のように設定して「作成する」をクリックします。 項目 設定内容 ゾーン名 独自ドメイン名 テンプレート 選択なし メールアドレス 管理者のメールアドレスを指定 TTL初期値 600 説明 任意にゾーンの説明を追加 ④ 確認画面が表示されますので[はい]をクリックしてDNSゾーンを新規に作成します。 ⑤ DNSゾーン一覧に作成したDNSゾーンが追加されます。 ⑥ 作成したDNSゾーン名をクリックしてレコード設定画面を表示します。11
⑦ ゾーンは登録しただけでは利用できるようになりません。DNSサービスに認証させる必 要があります。[認証する]をクリックして認証の登録を行います。 ⑧ 認証方法は2種類ありますが、今回は新しいDNSゾーンの場合を説明します。Whois情 報に指定するネームサーバー情報の1行目~4行目までを指定の内容でレジストラへ登 録します。登録したら時間を置いて[認証する]をクリックして認証の確認を行います。 (確認画面で[はい]をクリックします。)※1時間~最大で1日程度かかる場合があり ます。12
⑨ 認証処理が成功し、DNSゾーン登録が完了すると、認証結果画面でその後の作業指示が 出ます(失敗した場合は再度認証するように認証ボタンが表示されます)。レジストラ のネームサーバー情報から認証の為に設定したレコードを削除します。内容を確認した ら[閉じる]をクリックして画面を閉じます。 ⑩ 次にオリジンサーバーとキャッシュサーバーのレコードを登録する為、レコード設定画 面で[+レコード登録]をクリックします。13
⑪ 先ず、オリジンサーバーを登録します。必要な内容を記入して[登録する]をクリック します。(確認メッセージが出るので、[はい]をクリックします。) 項目 設定内容 レコード名 任意(ここではwwwを指定) タイプ A 値 Web01のグローバルIPアドレス TTL 600 ⑫ 同じように[+レコード登録]からレコード登録画面を表示して、キャッシュサーバー (cdn001.idcfcloud.com)を登録します。必要な内容を記入して[登録する]をクリッ クします。(確認メッセージが出るので、[はい]をクリックします。) 項目 設定内容 レコード名 任意(ここではcacheを指定) タイプ CNAME 値 cdn001.idcfcloud.com TTL 60014
⑬ 追加されたレコードに間違いが無いか確認します。⑰ DNS反映の時間(10分~1時間程度)を待って、コマンド(今回はhostコマンド)でDNS が反映された事を確認します。
[root@web01 ~]# host www.ドメイン名 www.ドメイン名 has address IPアドレス [root@web01 ~]# host cache.ドメイン名
cache.ドメイン名 is an alias for cdn001.idcfcloud.com. cdn001.idcfcloud.com is an alias for idcf.g.yimg.jp.
idcf.g.yimg.jp has address キャッシュサーバーのIPアドレス(可変)
⑭ 次に、Webサーバーにドメイン名でブラウザからアクセスをして表示できる事を確認し ます。(IDCFクラウド上からコマンド実行をした場合、IDCフロンティアのDNSサーバ ーに問合せに行くため、解決が早くなります。できる限りローカル環境にて、ブラウザ 確認ができてから作業を進めるようにしてください。) 以上でDNSの設定は完了です。次にコンテンツキャッシュを設定して独自ドメインでキ ャッシュさせるように指定を行います。
15
(3)コンテンツキャッシュの設定
コンテンツキャッシュの設定を行います。DNSで設定を行っていれば、あとはコントロールパ ネルだけで設定が完結します。 ※コンテンツキャッシュについての詳細やキャッシュ時間の調整などは、「コンテンツキ ャッシュスタートアップガイド」(http://www.idcf.jp/network/cache/faq/)を参照して ください。 ① 「IDCF Cloud」のロゴマークをクリックしてトップ画面に戻り、グローバルセクション から「コンテンツキャッシュ」をクリックします。(初回アクセスの場合、サービス規 約に同意してサービスを申し込む画面になります。サービスに申し込む事でコンテンツ キャッシュのコントロールパネルを表示させる事が可能となります。) ② キャッシュサーバー一覧画面にて「新規登録」をクリックします。16
③ キャッシュサーバーの欄に必要事項を記入します。 項目 設定内容 利用ドメイン 独自ドメイン 通信プロトコル HTTP 利用キャッシュサーバー名 CNAMEレコードで指定したドメイン名(ここでは cache.ドメイン名) ディレクトリ名 作成したキャッシュ領域(ここでは/img/) 有効化希望日時 指定なし ④ 次にオリジンサーバーの必要事項を記入して[確認画面へ]をクリックします。 項目 設定内容 利用ドメイン 独自ドメイン 通信プロトコル HTTP 利用キャッシュサーバー名 CNAMEレコードで指定したドメイン名(ここでは cache.ドメイン名) ディレクトリ名 作成したキャッシュ領域(ここでは/img/) 有効化希望日時 指定なし17
⑤ 入力内容確認画面で内容を確認し、[キャッシュサーバーを作成]をクリックします。 ⑥ 登録完了のメッセージが出るので×で閉じ、キャッシュサーバー一覧画面に戻ります。 ⑦ ブラウザでキャッシュサーバーにアクセスしてみて表示される事を確認します(表示さ れない場合は少し待ってから再度アクセスしてみて下さい)。10回程度ブラウザの更新 をかけて表示される事を確認します(ブラウザキャッシュにならないように、更新をか けます)。18
⑧ HTTPのヘッダにてキャッシュされているか確認します。キャッシュされていない場合、 cMsSfと表示されます。キャッシュされている場合、cHsfと表示されます。 ※キャッシュサーバーは複数台で分散されている為、キャッシュされていないサーバー が見受けられる場合があります。その場合は数回同じコマンドを打ってcHsfが表示され るサーバーがある事を確認します。[root@web01 ~]# curl --head http://cache.ドメイン名.info/img/MORIO.jpg HTTP/1.1 200 OK
Date: Mon, 23 Nov 2015 13:48:46 GMT Server: ATS
Cache-Control: public
Last-Modified: Fri, 20 Nov 2015 12:52:35 GMT ETag: "2f41-524f85976cac0" Accept-Ranges: bytes Content-Length: 12097 Content-Type: image/jpeg Age: 365 Connection: keep-alive
Via: http/1.1 cdn2005.idcf.djm.yahoo.co.jp (ATS [cHs f ]) [root@haproxy ~]#
⑨ 最後にコントロールパネルでもキャッシュされているか確認します。キャッシュサーバ ー一覧画面から対象のキャッシュサーバーをクリックします。
19
⑩ キャッシュサーバー詳細メニューが表示されます。[キャッシュ確認]をクリックします。