ユーザーがアップロードしたファイルを受信できるWebアプリケーションがあります。これらのファイルは、Webサーバーのディレクトリに保存されます。他のユーザーはこれらのファイルをダウンロードできます。このアプリケーションをWindowsAzureでの移行用にカスタマイズしています。Windows Azureでは、これらのファイルはsitesrootとapprootに保存されます。Windows Azureはこれらの変更を自動的に同期しますか、それとも手動で同期する必要がありますか?たぶん、そのような方法でファイルを保存することは適切ではありませんか?
2 に答える
実際、Azure はインスタンス間でディレクトリを同期しません。ファイルを一元化されたストレージに保存したい。これには Azure Blob Storage が最適なオプションです。ストレージにアクセスするための API は比較的単純です
@Igorekによる素晴らしい回答。少し追加したかっただけです。各ロール インスタンスは完全に独立して動作します。そして、本質的に、ロール インスタンスは Windows 2008 Server です。5 つの Web ロール インスタンスがある場合、5 つの VM が実行されており、それぞれに独自のローカル ストレージがあります。
また、ローカル ストレージを使用することはできますが、VM インスタンスごとに個別のストレージであり、永続的ではありません (つまり、ディスクがクラッシュすると、データが失われます)。
@Igorekが提案したように、Blob StorageはRoleインスタンスから独立しています。どこからでも (任意のロール インスタンスから、またはオンプレミス アプリからでも) アクセスできます。また、BLOB ストレージはコンテナーごとに編成され、各 BLOB は最大 200 GB です。しかし、最も重要なことは、耐久性があることです。データセンター内でトリプル レプリケートされ、隣接するデータセンターに地理的にレプリケートされます。
ストレージ アカウントがアプリケーションと同じデータセンターにある限り、アクセスは非常に高速です (BLOB あたり約 60MB/秒)。また、個々の BLOB (またはコンテナー) をpublicまたはprivateに設定できます。パブリック BLOB は、CSS、画像、または Web ページにレンダリングする可能性のあるその他のものに最適です。次のような URI を介してアクセスできます。
https://myapp.blob.core.windows.net/images/logo.png
このタイプの URI を使用すると、それを Web ページに埋め込むことができます。ブラウザーはこれらの画像をストレージから直接取得し、IIS Web サーバーを完全にバイパスします。これにより、ロール インスタンスの負荷が軽減されます。サーバーから十分な負荷を取り除くと、インスタンス数を減らすことができるようになる可能性があります.
現在、プライベートBLOB を使用すると、これらは外部から見ることができません。これらにアクセスするには、ストレージ アカウント キーが必要です。Web サーバーの場合、これはすべて透過的です。また、ローカル ディスクからコンテンツを提供するのと同じように、データを BLOB にすばやくロードしたり、BLOB をローカル ストレージにダウンロードしたり、コンテンツをエンド ユーザーに提供したりできます。ディスク上に配置する必要があるファイルに対して操作を実行する必要がある場合は、まずファイルをローカル ストレージにダウンロードしてから、ローカル ストレージから操作を実行できます。
プライベート BLOB についてもう 1 つ:クエリ文字列で共有アクセス署名を使用して URL をエンコードすることにより、これらへの一時的なアクセスを許可できます。これはストレージ アカウント キーで署名され、最大 1 時間のアクセスが許可されます。たとえば、エンド ユーザーが他の誰もアクセスできないアカウント固有の PDF を持っている場合、このコンテンツを提供する方法を選択できます。また:
- プライベート BLOB を BLOB ストレージからローカル ストレージにダウンロードし、IIS (または任意の代替 Web サーバー) 経由でブラウザーに送り返します。または、
- Shared Access Signature (短い TTL 有効期限、おそらく 5 分) でエンコードされたプライベート BLOB へのリンクを返し、エンド ユーザーがブラウザーから (たとえば、リンクをクリックして) BLOB にアクセスできるようにします。ロール インスタンスをバイパスして、BLOB ストレージから BLOB を直接ダウンロードします。