-
Notifications
You must be signed in to change notification settings - Fork 0
DNET_CDN
-
戻る
- HTTPキャッシュのコントロール
- CDN(Content Delivery Network)
-
大手Akamaiが1990年代に提唱したといわれているコンテンツを配信するためのネットワーク。
-
単なるスケールアウトではなく、距離的に一番近い場所にあるサーバを自動で選択できる。
このページでは、主に、主流のプル型のCDNについて説明する。
配信したいファイルをアップロードして配信。
(オリジン・サーバがストレージのプル型は≒プッシュ型)
キャッシュ・サーバが、オリジン・サーバから
ファイルを取得し自分の中に一定時間キャッシュする。
P2P型ファイル共有ソフトみたいな仕組み。
主にパフォーマンスの向上
- サーバのCPU負荷を低減できる
- LBからのOUTトラフィックがボトルネックとならない構成。
- 月間転送容量、1日の転送容量などの制限の影響を受けない。
- 転送容量の従量課金が無い(出力は無課金、入力のみの課金)
回線、ロードバランサーが冗長化された構成で、DDoSにも強い。
機能を参照。
個人情報が表示されたページをキャッシュするなど、誤キャッシュの事故は継続的に発生
クライアント側でキャッシュされると、ファイル更新が反映されない
ものによってはキャッシュサーバからファイルを削除するのに時間がかかる場合がある
- 障害点が増える。
- キャッシュしない場合は効率が悪くなる。
CDNによっては、機能を提供している。
┌─> DNSで名前解決。
│
クライアント ─> キャッシュ・サーバ ─> オリジン・サーバ
(DNSとの関係を参照)
元のデータが入っているサーバ
- データを代わりに配信してくれるサーバで、エッジ・サーバと呼ぶ場合もある。
- リバース・プロキシ(リバース・プロキシ・キャッシュ)的に動作する。
CDNはDNSの仕組みを上手く利用し
アクセス元から一番近いエッジ・サーバのIPアドレスを応答後、
最終的にネットワーク的に近い場所にあるエッジ・サーバへ誘導
CDNベンダーが提供するサブドメインに
CNAMEレコードを定義する方式が必須になる。
-
以下のようなCNAMEレコードは設定ができない。
- 同じドメイン名で複数CNAME設定すること
- CNAME以外のレコード(Aレコード)との同居
- MXレコードとの同居
- NSレコードとの同居
- Apexドメイン
ホスト部が無いドメインでNSレコードが存在するため。
-
上記の回避策
- Aliasレコード(あくまでDNSベンダー独自実装)
- CNAME Flattening対応DNSサービス
Webサイトと配信用のドメインを分けた場合
- 既存のWebサイトには一切影響がないため切り分けや導入が楽。
- 配信用ドメインだけ書き換える必要があるため手間が発生する。
※ ≒ プッシュ型
-
Webサイトと配信は同じドメインで運用できる。
-
Webサイトが複雑で特殊な構造だと動作を理解した上で
キャッシュさせる・させないというハンドリングを実施する必要がある。
※ ≒ プル型
-
オリジン・サーバはキャッシュ・サーバのHTTPヘッダの値によって、
- キャッシュする・しない。
- HTTPヘッダ値毎にキャッシュしたり、
をコントロールする。
-
キャッシュ・サーバが、参照するHTTPヘッダ
-
HTTP Method
多くは、GETとHEADメソッド
コレ以外のメソッドはキャッシュしない。 -
パス別
- 特定のパスのコンテンツはキャッシュする・しない。
- 特定の拡張子(JPG・PNG・MP4)のコンテンツはキャッシュする・しない。
-
Cookie別
認証Cookieが付与されている場合はキャッシュしない。 -
クエリ別
クエリ毎にキャッシュ -
User-Agent別
User-Agent毎にキャッシュ -
, etc.
-
キャッシュ・サーバがキャッシュする時間の制御。
- 既定値は、最大XX(e.g.24)時間キャッシュ
- 別途、オリジン・サーバのHTTPヘッダの値に従う。
動的コンテンツ配信を静的コンテンツ配信に近づけるには、
- パス別
- クエリ別
- Cookie別
のHTTPヘッダ値、毎にキャッシュするようにする(プル型)。
-
CDN「で」制御する方法
CDNベンダーが用意している管理画面からキャッシュの設定を行う方法。-
メリット
Webサーバの設定変更が不要 -
デメリット
- 設定の工数が発生
- テストの工数が発生
-
-
CDN「を」制御する方法
オリジン・サーバのHTTPヘッダで制御する方法。-
メリット
- そのままCDN化出来てしまう可能性がある。
- ほとんどのCDNベンダはRFC7234に準拠しているため。
-
デメリット
- CDNベンダによっては独自のルールを設けている場合があり、
これらを確認しないと意図した動作とならず大惨事になるケースがある。 - WordPressやDrupalなど人気CMSの場合、
管理者が意図しないヘッダをレスポンスしてしまうケースがある。
- CDNベンダによっては独自のルールを設けている場合があり、
-
キャッシュ削除方法がある。
- シングルパージ(単一ファイルのキャッシュ削除)
- 正規表現パージ(正規表現で細かく指定可能)
- タグパージ(レスポンスヘッダにタグでグループ化されたキャッシュ削除)
動画配信をCDNで負荷分散する
ダウンロードによる配信
ダウンロードしつつ再生できる配信。
初期のTCP ベースのストリーミング・プロトコル
現在主流のAppleが提唱したストリーミング・プロトコル
CDNには、DDos対策機能が組み込まれていることが多い。
CDNには、WAF 機能が組み込まれていることが多い。
- 裏に、WAFをかますことで、セキュリティ対策が可能。
- WAF単体では難しいDDos攻撃も防御できる。
-
オリジン・サーバの仕組みを流用できないので、
(認証認可されたコンテンツはキャッシュできないので) - CDN毎に別途、使用できる認証の仕組みがある。
HTTP圧縮ではGzip圧縮が一般的
BrotliはGzipよりも圧縮率が高い。
(元 Wiki では見出しのみで本文が無い。)
非可逆圧縮のJPEGや可逆圧縮のGIF、PNGの置き換えを意図する規格
- 非可逆圧縮モードでJPEGと比較して25-34%小さくなり、
- 可逆圧縮モードでPNGと比較して28%小さくなる。
プッシュ配信(HTTP/2について調べてみた。を参照)
-
コンテンツデリバリネットワーク - Wikipedia
https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84%E3%83%87%E3%83%AA%E3%83%90%E3%83%AA%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF -
CDN とは?| Akamai JP
https://www.akamai.com/jp/ja/cdn/what-is-a-cdn.jsp
- 〜Web制作/運営の幅が広がるCDNを知ろう〜
- 第1回:CDNってそもそも何?なんかサーバの負荷が下がるって聞いたんだけど!
https://knowledge.sakura.ad.jp/19191/ - 第2回:CDNのメリットとデメリット
https://knowledge.sakura.ad.jp/19825/ - 第3回:知らないと怖いキャッシュ対象の選び方
https://knowledge.sakura.ad.jp/19831/ - 第4回:とっつきにくいCDNの課金方法を攻略!
https://knowledge.sakura.ad.jp/20217/ - 第5回:実際にCDNを使ってみよう!
DNS設定からキャッシュ配信まで一連の設定をご紹介
https://knowledge.sakura.ad.jp/20370/ - 第6回:レンタルサーバで提供されるキャッシュ機能の違い
https://knowledge.sakura.ad.jp/20648/
- 第1回:CDNってそもそも何?なんかサーバの負荷が下がるって聞いたんだけど!
-
CDN カテゴリ
https://blog.redbox.ne.jp/category/cdn-
CDNの仕組み
-
構成
- CDN とCNAME Apexドメインの制限
https://blog.redbox.ne.jp/cdn-cname-apex.html - CDNとWAFが選ばれる理由(セキュリティ対策)
https://blog.redbox.ne.jp/cdn-waf.html
- CDN とCNAME Apexドメインの制限
-
キャッシュ
- HTTPヘッダチューニング Etag・Last-Modified
https://blog.redbox.ne.jp/http-header-tuning.html - HTTPヘッダチューニング Expiresヘッダについて
https://blog.redbox.ne.jp/http-header-expires.html - CDN の設定 キャッシュコントロールする手段 メリット・デメリット
https://blog.redbox.ne.jp/cdn-cache-control.html
- HTTPヘッダチューニング Etag・Last-Modified
-
圧縮・変換
- CDN でWEB高速化 コンテンツ圧縮(gzip)の設定と注意点
https://blog.redbox.ne.jp/cdn-gzip-compress.html - WEBスピード向上・転送量削減する Brotli 圧縮と CDN の連携
https://blog.redbox.ne.jp/category/cdn - 画像変換 サービスの仕組み転送量削減と WebP
https://blog.redbox.ne.jp/image-optimize-service.html - オンライン学習動画をCDNで負荷分散(テレワーク対策)
https://blog.redbox.ne.jp/online-movie-cdn-education.html
- CDN でWEB高速化 コンテンツ圧縮(gzip)の設定と注意点
-
デバッグ・チューニング
- CDN で高いHIT率にするチューニングとは
https://blog.redbox.ne.jp/cdn-high-hitrate-cookie-query.html - CDN のデバッグ方法 ツールとレスポンス測定
https://blog.redbox.ne.jp/cdn-debg-tool.html
- CDN で高いHIT率にするチューニングとは
-
プロトコル
- TCP FAST OPENとは?
https://blog.redbox.ne.jp/tcp-fast-open-cdn.html - HTTP/2の特徴 HTTP/1.1との違いについて
https://blog.redbox.ne.jp/http2-cdn.html - HTTP/2 Server Pushとは?(CDN サーバープッシュでWeb高速化)
https://blog.redbox.ne.jp/http2-server-push-cdn.html
- TCP FAST OPENとは?
-
CMS
- DrupalをCDNで爆速にする方法
https://blog.redbox.ne.jp/drupal-advent-calendar2016-cdn.html - CDNでWordPressを安全にHTTPS化する方法
https://blog.redbox.ne.jp/wordpress-ssl-cdn.html
- DrupalをCDNで爆速にする方法
-
その他
- CDN 料金 一覧2017年(高いCDNと安いCDNの違い)
https://blog.redbox.ne.jp/cdn-price.html
- CDN 料金 一覧2017年(高いCDNと安いCDNの違い)
-
移行メモ
- さくらのナレッジの連載で「第5回」が 2 つ並んでいたため、 後者を「第6回」に修正した。
- 元 Wiki では見出しそのものが他ページへのリンクになっていた箇所 (「HTTP/2 Server Push」「AzureのCDN」「キャッシュ・コントロールのHTTPヘッダ」)は、 GitHub Wiki では見出しからアンカが生成されるため、 見出しをプレーン・テキストとし、リンクは直下の本文(箇条書き)に置いた。
- マイクロソフト系技術情報 Wiki(techinfoofmicrosofttech.osscons.jp)への URL リンクは、移行済みの HTTP/2について調べてみた。 / AzureのCDN / キャッシュ・コントロールのHTTPヘッダ に張り替えた。
- 本文の無い見出し(「転送量削減」)は、その旨を明示した。
- PukiWiki のページ内アンカ(
#xxxxxxxx)は GitHub Wiki では再現できないため、 同一ページ内のアンカは見出しから生成されるアンカに張り替えた。
Tags: 移行, CDN, キャッシュ, Akamai, オリジンサーバ, エッジサーバ, CNAME, WAF, HTTP/2, Brotli
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。