web-dev-qa-db-ja.com

CDN(コンテンツ配信ネットワーク)はどのように機能しますか?

アカマイをCDNとして採用。私が理解しているところによると、クライアントがページを要求すると、その要求はAkamaiセントラルサーバーに送られます。中央サーバーは、クライアントの場所に応じて、Akamaiエッジサーバーをピックアップし、その後のクライアントからの要求は、このエッジサーバーに直接送られます。私の質問はそれです:

クライアントがWebサイトを(名前で)要求する場合、DNSが名前をAkamaiセントラルサーバーのIPアドレスに解決してクライアントに渡すと、クライアントはこのIPアドレスを保持し、その後の要求はどのようになりますかAkamai EdgeサーバーのIPアドレスに直接アクセスするには?

または、CDNが使用されている場合、DNS解決自体がCDNサーバーによって実行される必要があるということですか?

Google、Amazon、Facebookなどの大手企業は独自のCDNサーバーを持っていますか、それともアカマイなどのサードパーティのCDNプロバイダーに依存していますか?グーグルとヤフーと言う!どちらもAkamai CDNを使用し、次にYahoo!とGoogleは同じサーバーに常駐していますか?それは潜在的なセキュリティ問題を引き起こしませんか?

37
p2pnode

CDNで単純にサイト全体をホストするのではなく、contentを使用します。

しばらく前に同様の質問に答えたことに気づきました: akamaihd.netは何をしますか?

Data request flowWikiMediaによる画像

あなたのサイトはhttp://akamai/myfile.extを参照しています。これにより、akamaimyfile.extが要求されます。 akamaiHTTPリダイレクト を実際のコンテンツサーバーに送信できます。

最後のステップがキャッシュされると、今後のすべてのリクエストは最も近いコンテンツサーバーに送られます。

それはどのように機能しますか?

このウェブサイトを想定しましょう:

<html>
  <body>
    <img src="http://cdn/oliver.png" />
  </body>
</html>

このウェブサイトを自分のウェブサーバーにリクエストします。 .htmlファイルは、cdnでホストされているではありません。どちらも私のウェブサーバーのDNSではありません。

最初のリクエスト

だから私のブラウザーはそのHTMLファイルを取得し、今それを解析します。参照されている画像を見つけ、それがhttp://cdn/oliver.pngにあることに注意します。そのファイルを要求します。

そのためには、cdnのIPアドレスを見つける必要があります。この例では、そのIPアドレスは10.10.10.10です。

そのIPアドレスを使用して、cdnサーバーに接続し、/oliver.pngを要求できます。

地理的位置

cdnは、「あの男はドイツ出身です!」と気づきました。だから、私が望んでいた素晴らしい写真を送る代わりに、次のようなHTTPリダイレクトを送ります:

/oliver.pngはここにはありません。 10.10.33.33/oliver.pngにあります

したがって、私のブラウザは10.10.33.33(うまくいけば私に近い)に画像を要求します。

マジ?

これがすべてのCDNの動作方法であるとは言っていませんが、これは1つのアプローチです。

また、クエリを送信した人の場所に応じて、名前の検索に対して異なる結果を返すDNSデーモンを実装することもできます。
しかし、これが実際に行われているとは思えません。しかし、私はそれを適切に設定する方法を想像できないだけかもしれません。それがどのように機能するかについては fluffy's answer を参照してください。

誰がCDNを実行しますか?

ほとんどのグローバルプレーヤーは、独自のコンテンツ配信ネットワークを持っています(または私はそう思います)。一部のプロバイダーは、特定のサービスをより大きなCDNにオフロードします(MicrosoftがMSDNダウンロードで行うように)。そして、これはどういうわけか2番目の主題に触れるかもしれません。

これを考慮して、MSDNでマイクロソフトは製品のダウンロードを提供しています。これらのダウンロードは、Akamaiによって提供されます。そのダウンロードのURLを特定できれば、Microsoftに連絡することなく製品をダウンロードできます。

これはセキュリティの問題ですか?ダウンロードされているものは(プロダクトキーによって)まだ保護されているため、実際にはそうではありません。

しかし、他のデータはどうですか?

データがセキュリティ関連である場合、それはCDN資料ではありません。何かをできるだけ広く利用したくない場合は、しないでくださいCDNに入れます。

27
Der Hochstapler

CDNへのかなり一般的なアプローチは、「 anycast 」として知られているものを使用することです。これが機能する方法は、分散サーバーが、そのサーバーを宛先として応答するDNSと同じ場所に配置されることです。たとえば、異なるホスティングファシリティに3つのサーバーがあり、それぞれのDNSがすべて、IPアドレスがサーバーの正規のIPアドレスであると主張しているとします(たとえば、content.example.com)。 DNSはそれぞれ同じグローバルIPアドレスを持つように構成され、各サーバーのファシリティはBGP更新を使用して最も近いサーバーへのルートが勝つようにします。したがって、content.example.com、最も速い/最も近い/最も利用可能なDNSは、HTTPサーバーでリクエストに応答します。

このように、GeoIPのトリックは必要ありません。また、インターネットの異種性により、物理的な場所に関係があるかどうかに関係なく、最も高速なサーバーから常にコンテンツが提供されます。

アカマイは少なくとも部分的にこのように機能していると私は理解しています。

11
fluffy

Origin PullタイプのCDNも利用できます。

Amazon Cloudfrontはこの手法を使用できます。

割り当てられたサーバー名を指すmedia.example.comのようなCNAMEを設定し、すべてのコンテンツをサーバーに残します。 CDNを介して配信する画像とコンテンツの場合は、URLにmedia.example.comを使用します。リクエストはサーバーネットワークに送信され、コンテンツが利用できない場合、サーバーはサーバーからコンテンツをプルします。システムに入ると、コンテンツは需要が存在する場所に最も近いサーバーファームに配信され、割り当てられたTTLの間そこに残ります。 TTLが期限切れになり、Cloudfrontがコンテンツを更新する必要があるまで、サーバーはキャッシュされたコンテンツのトラフィックを認識しなくなります。

5
Fiasco Labs

Akamaiはこの方法では機能しません。 CDNが異なると動作も異なりますが、アカマイは特にWebサーバーに対してエニーキャストを行いません。

ニューヨークのユーザーがwww.acme.com、acme.comのネームサーバーは、Akamaiネームサーバーにリダイレクト(「デリゲート」)します。 Akamaiネームサーバーは、質問をしているマシンが(IPアドレスに基づいて)どこにあるかを確認し、サービスを提供する最も近い/最適なAkamaiサーバーのIPアドレスを返しますwww.acme.com

1
igorlord

AkamaiのCDNがどのように機能するかについてのすばらしい要約 ここで見つけることができます

要するに:

  • CDNサーバーには、AkamaiのDNSサーバーを指すCNAMEレコードがあります。
  • したがって、クライアントブラウザがCDNサーバーに対して行う最初のリクエストでは、DNSがAkamaiのDNSサーバーで検索され、ユーザーに近いAkamaiサーバー(「エッジサーバー」と呼ばれます)のIPアドレスで応答します。
  • これらのエッジサーバーは、ローカルキャッシュから静的要素を提供する場合があります(最近他のユーザーから要求された場合)。アセットのコピーを取得するためにサーバーに戻る必要もありません。
  • 不足している要素またはキャッシュできないページは、Akamaiネットワークを介して、ホストの近くにある別のエッジサーバーにルーティングされます。そのエッジサーバーはホストサイトに実際の要求を行い、それらをネットワーク経由で元のエッジサーバーに渡し、そこからエンドユーザーに返されます。
  • Edgeサーバーは、Akamaiの専用プロトコルを使用して内部的に通信し、ボトルネックを回避してルーティングするため、トラフィックはパブリックインターネット経由よりもはるかに高速に流れることができます。

上記のブログ投稿で述べたように、一部の大企業は独自のサーバーを使用してDNSを解決しているため、CDNを使用することの利点の一部が無効になる可能性があります。

0
Brad Parks