アカマイをCDNとして採用。私が理解しているところによると、クライアントがページを要求すると、その要求はAkamaiセントラルサーバーに送られます。中央サーバーは、クライアントの場所に応じて、Akamaiエッジサーバーをピックアップし、その後のクライアントからの要求は、このエッジサーバーに直接送られます。私の質問はそれです:
クライアントがWebサイトを(名前で)要求する場合、DNSが名前をAkamaiセントラルサーバーのIPアドレスに解決してクライアントに渡すと、クライアントはこのIPアドレスを保持し、その後の要求はどのようになりますかAkamai EdgeサーバーのIPアドレスに直接アクセスするには?
または、CDNが使用されている場合、DNS解決自体がCDNサーバーによって実行される必要があるということですか?
Google、Amazon、Facebookなどの大手企業は独自のCDNサーバーを持っていますか、それともアカマイなどのサードパーティのCDNプロバイダーに依存していますか?グーグルとヤフーと言う!どちらもAkamai CDNを使用し、次にYahoo!とGoogleは同じサーバーに常駐していますか?それは潜在的なセキュリティ問題を引き起こしませんか?
CDNで単純にサイト全体をホストするのではなく、contentを使用します。
しばらく前に同様の質問に答えたことに気づきました: akamaihd.netは何をしますか?
あなたのサイトはhttp://akamai/myfile.ext
を参照しています。これにより、akamai
にmyfile.ext
が要求されます。 akamai
は HTTPリダイレクト を実際のコンテンツサーバーに送信できます。
最後のステップがキャッシュされると、今後のすべてのリクエストは最も近いコンテンツサーバーに送られます。
このウェブサイトを想定しましょう:
<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にオフロードします(MicrosoftがMSDNダウンロードで行うように)。そして、これはどういうわけか2番目の主題に触れるかもしれません。
これを考慮して、MSDNでマイクロソフトは製品のダウンロードを提供しています。これらのダウンロードは、Akamaiによって提供されます。そのダウンロードのURLを特定できれば、Microsoftに連絡することなく製品をダウンロードできます。
これはセキュリティの問題ですか?ダウンロードされているものは(プロダクトキーによって)まだ保護されているため、実際にはそうではありません。
データがセキュリティ関連である場合、それはCDN資料ではありません。何かをできるだけ広く利用したくない場合は、しないでくださいCDNに入れます。
CDNへのかなり一般的なアプローチは、「 anycast 」として知られているものを使用することです。これが機能する方法は、分散サーバーが、そのサーバーを宛先として応答するDNSと同じ場所に配置されることです。たとえば、異なるホスティングファシリティに3つのサーバーがあり、それぞれのDNSがすべて、IPアドレスがサーバーの正規のIPアドレスであると主張しているとします(たとえば、content.example.com
)。 DNSはそれぞれ同じグローバルIPアドレスを持つように構成され、各サーバーのファシリティはBGP更新を使用して最も近いサーバーへのルートが勝つようにします。したがって、content.example.com
、最も速い/最も近い/最も利用可能なDNSは、HTTPサーバーでリクエストに応答します。
このように、GeoIPのトリックは必要ありません。また、インターネットの異種性により、物理的な場所に関係があるかどうかに関係なく、最も高速なサーバーから常にコンテンツが提供されます。
アカマイは少なくとも部分的にこのように機能していると私は理解しています。
Origin PullタイプのCDNも利用できます。
Amazon Cloudfrontはこの手法を使用できます。
割り当てられたサーバー名を指すmedia.example.comのようなCNAMEを設定し、すべてのコンテンツをサーバーに残します。 CDNを介して配信する画像とコンテンツの場合は、URLにmedia.example.comを使用します。リクエストはサーバーネットワークに送信され、コンテンツが利用できない場合、サーバーはサーバーからコンテンツをプルします。システムに入ると、コンテンツは需要が存在する場所に最も近いサーバーファームに配信され、割り当てられたTTLの間そこに残ります。 TTLが期限切れになり、Cloudfrontがコンテンツを更新する必要があるまで、サーバーはキャッシュされたコンテンツのトラフィックを認識しなくなります。
Akamaiはこの方法では機能しません。 CDNが異なると動作も異なりますが、アカマイは特にWebサーバーに対してエニーキャストを行いません。
ニューヨークのユーザーがwww.acme.com
、acme.comのネームサーバーは、Akamaiネームサーバーにリダイレクト(「デリゲート」)します。 Akamaiネームサーバーは、質問をしているマシンが(IPアドレスに基づいて)どこにあるかを確認し、サービスを提供する最も近い/最適なAkamaiサーバーのIPアドレスを返しますwww.acme.com
。
AkamaiのCDNがどのように機能するかについてのすばらしい要約 ここで見つけることができます
上記のブログ投稿で述べたように、一部の大企業は独自のサーバーを使用してDNSを解決しているため、CDNを使用することの利点の一部が無効になる可能性があります。