web-dev-qa-db-ja.com

Amazon CloudFrontとEC2:グローバルロードバランシング

S3に適切な量のデータを保存して、レイテンシーを最小限に抑える必要のある世界中のユーザーに提供するアプリがあります。そのため、Amazon CloudFrontでテストを行っており、良好な結果が得られています。

ただし、(セキュリティなどを行うために)薄いミドルウェアレイヤーが必要であり、それをEC2に配置したいと思います。セキュリティ上の制限により、このミドルウェアレイヤーはS3/CloudFrontからのファイルストリーミングを行います。

S3/CloudFront-> EC2->クライアント

EC2ノード(US East/West、Ireland)を地理的に分散できますが、問題は、EUのクライアントがUSサーバーにアクセスし、そこからデータが供給されるため、CloudFrontのパフォーマンス上の利点の多くが失われることです。 EC2のドキュメントを調べてきましたが、CloudFrontで地理的に分散したバージョンのEC2を取得するための組み込みの方法が見つかりません。

Elastic Load Balancingは道のりのように聞こえますが、ルーティングに基づいて指示する方法を見つけることができないようです...できれば、EC2/S3/etc以外の量を維持したいと思います。最小限に(明らかな理由で)。

EC2/S3フレームワーク内でそれを行う方法について何かアイデアはありますか? DNS /ルーティングのトリック?

ありがとう!

6
Matt Rogish

中間層を使用すると、多くのエッジキャッシュノードではなく、コンテンツを提供する大規模な中央データセンターに少数のノードしかないため、通常、分散CDNの利点が無効になります。計画で最初にサーバーを介してコンテンツをパイピングする必要がある場合は、CloudFrontをスキップし、S3をそのまま使用してください。メリットはありません。

より良いアプローチは、「セキュリティなど」の意味を形式化することです。 CDNに組み込まれている認証およびアクセス制御の使用を回避できるかどうかを確認します。 S3とCloudfrontは署名を使用して、コンテンツにアクセスできるユーザーを 広範な制御 提供します。さらに、数時間または数分後に期限切れになる 時間制限付きURL を作成することもできます。これらの特別なURLは、ユーザーがコンテンツにディープリンクしたり、他の人とリンクを共有したりできないようにWebサイトで作成できます。通常、十分なセキュリティを提供して、エッジキャッシュのメリットを享受できます。

私はAmazonのドキュメントにあまり詳しくありませんが、Windows Azureには 共有アクセス署名 の概念もあり、秘密鍵を解放せずにアップロードまたはダウンロードのアクセス許可を委任できます。最近、 チャンネル9のクラウドカバーエピソード がありました。これは、共有アクセス署名を作成する方法と、それらを使用してコンテンツを保護し、CDNのアクセス許可を委任する方法を説明するのに最適です。

4
Greg Bray

ユーザーの国に基づいたリクエストの別のサーバーへのルーティングをサポートするDNSサービスを使用できますが、EC2からデータを提供している場合は、Cloudfrontを使用しても意味がなく、S3を使用しても意味がありません。 、EC2インスタンスから常にデータを送信しているため。

おそらく、送信しているデータの種類についてより多くの情報を提供した場合、より良いソリューションが表示される可能性があります。

1
gekkz

地理的な近接性を使用してクライアントを(DNS回答を介して)最も近いデータセンターに誘導するグローバル負荷分散ソリューションを展開できます。 Zeus GLBなど、クラウド(この場合はEC2)で実行できるソフトウェアソリューションがあります。無料の評価を取得して、ご使用の環境でテストすることもできます。

0
izzy