DNET_CDN - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

CDNContent Delivery Network

抂芁

  • 倧手Akamaiが1990幎代に提唱したずいわれおいるコンテンツを配信するためのネットワヌク。

  • 単なるスケヌルアりトではなく、距離的に䞀番近い堎所にあるサヌバを自動で遞択できる。

  • 囜内配信の堎合地理分散が有効でない堎合にも、導入のメリットがある。

タむプ

このペヌゞでは、䞻に、䞻流のプル型のCDNに぀いお説明する。

プッシュ型

配信したいファむルをアップロヌドしお配信。
オリゞン・サヌバがストレヌゞのプル型は≒プッシュ型

プル型

キャッシュ・サヌバが、オリゞン・サヌバから
ファむルを取埗し自分の䞭に䞀定時間キャッシュする。

P2P型

P2P型ファむル共有゜フトみたいな仕組み。

メリット・デメリット

メリット

トラフィック分散による性胜向䞊

䞻にパフォヌマンスの向䞊

  • サヌバのCPU負荷を䜎枛できる
  • LBからのOUTトラフィックがボトルネックずならない構成。

転送容量を気にしなくおいい

  • 月間転送容量、1日の転送容量などの制限の圱響を受けない。
  • 転送容量の埓量課金が無い出力は無課金、入力のみの課金

高可甚性察障害性

回線、ロヌドバランサヌが冗長化された構成で、DDoSにも匷い。

ファむル再配眮の必芁なし

  • ただし、プル型の堎合に限る。
  • オリゞン・サヌバにWebサむトを䜿う堎合
    ストレヌゞを䜿甚する堎合などは再配眮が必芁になる

その他、様々な機胜を利甚可胜。

機胜を参照。

デメリット

誀キャッシュの事故は継続的に発生

個人情報が衚瀺されたペヌゞをキャッシュするなど、誀キャッシュの事故は継続的に発生

キャッシュでファむル曎新が反映されない

クラむアント偎でキャッシュされるず、ファむル曎新が反映されない

キャッシュ削陀の反映に時間がかかる堎合がある

ものによっおはキャッシュサヌバからファむルを削陀するのに時間がかかる堎合がある

レむダが増える事で起きる問題

  • 障害点が増える。
  • キャッシュしない堎合は効率が悪くなる。

アクセスログが取れない可胜性

CDNによっおは、機胜を提䟛しおいる。

構成

サヌバ構成プル型

  ┌─> DNSで名前解決。
  │
クラむアント ─> キャッシュ・サヌバ ─> オリゞン・サヌバ

DNSずの関係を参照

オリゞン・サヌバ

元のデヌタが入っおいるサヌバ

キャッシュ・サヌバ

  • デヌタを代わりに配信しおくれるサヌバで、゚ッゞ・サヌバず呌ぶ堎合もある。
  • リバヌス・プロキシリバヌス・プロキシ・キャッシュ的に動䜜する。

DNSずの関係

地理分散

CDNはDNSの仕組みを䞊手く利甚し
アクセス元から䞀番近い゚ッゞ・サヌバのIPアドレスを応答埌、
最終的にネットワヌク的に近い堎所にある゚ッゞ・サヌバぞ誘導

CNAME

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の堎合、
        管理者が意図しないヘッダをレスポンスしおしたうケヌスがある。

削陀方法

キャッシュ削陀方法がある。

  • シングルパヌゞ単䞀ファむルのキャッシュ削陀
  • 正芏衚珟パヌゞ正芏衚珟で现かく指定可胜
  • タグパヌゞレスポンスヘッダにタグでグルヌプ化されたキャッシュ削陀

VOD配信

動画配信をCDNで負荷分散する

ダりンロヌド配信

ダりンロヌドによる配信

プログレッシブ配信

ダりンロヌドし぀぀再生できる配信。

RTMPストリヌミング配信

初期のTCP ベヌスのストリヌミング・プロトコル

HLSストリヌミング配信

珟圚䞻流のAppleが提唱したストリヌミング・プロトコル

セキュリティ察策

DDos察策

CDNには、DDos察策機胜が組み蟌たれおいるこずが倚い。

CDN+WAF

CDNには、WAF 機胜が組み蟌たれおいるこずが倚い。

  • 裏に、WAFをかたすこずで、セキュリティ察策が可胜。
  • WAF単䜓では難しいDDos攻撃も防埡できる。

認蚌

  • オリゞン・サヌバの仕組みを流甚できないので、
    認蚌認可されたコンテンツはキャッシュできないので
  • CDN毎に別途、䜿甚できる認蚌の仕組みがある。

圧瞮・倉換

Gzip圧瞮

HTTP圧瞮ではGzip圧瞮が䞀般的

Brotli圧瞮

BrotliはGzipよりも圧瞮率が高い。

転送量削枛

元 Wiki では芋出しのみで本文が無い。

WEBP圧瞮

非可逆圧瞮のJPEGや可逆圧瞮のGIF、PNGの眮き換えを意図する芏栌

  • 非可逆圧瞮モヌドでJPEGず比范しお25-34%小さくなり、
  • 可逆圧瞮モヌドでPNGず比范しお28%小さくなる。

HTTP/2 Server Push

プッシュ配信HTTP/2に぀いお調べおみた。を参照

参考

さくらのナレッゞ

  • 〜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/

キャッシュ屋ブログ | REDBOX Labo

マむクロ゜フト系技術情報 Wiki

移行メモ

  • さくらのナレッゞの連茉で「第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

⚠ **GitHub.com Fallback** ⚠