web-dev-qa-db-ja.com

Windows Azureの場合:Webロール、ワーカーロール、およびVMロールとは何ですか?

私が作業しているアプリケーションにはWebロールが含まれています。これは単純なWebアプリケーションです。 Windows Azureでアプリケーションをホストする必要があるため、Webロールを作成しました。私は実際にこれらの役割が何のためにあるのか知りたいです。コーディング上またはストレージ上での重要性は何ですか?

111
Kuntady Nithesh

EDIT 3/3/2013-UDPエンドポイント、仮想マシン、およびその他の言語を参照するように更新されました

EDIT 6/6/2013-VMロールの廃止を反映するように更新され、Windows Server 2012へのWeb /ワーカーロールベースラインOSイメージへの更新

@Vladimirによるリンク。もう少し明確化:すべてのロール(web、worker)は基本的にWindows Serverです。 WebロールとWorkerロールはほぼ同じです。

  • Webロールは、IISが有効なWindows Server VMです
  • ワーカーロールは、IISが無効なWindows Server VMです(手動で有効にすることもできます)
  • VMロールは、Hyper-Vを介してローカルに構築し、AzureにアップロードするWindows Server 2008イメージです(現在廃止され、2013年5月31日で利用できなくなりました
  • 仮想マシンは、Azureで作成され、独自のストレージにvhdとして保存されたWindowsまたはLinuxイメージであり、VMロールに対するいくつかの拡張機能があります。たとえば、vhdは自分のストレージアカウントにあるため、vhdからイメージテンプレートを簡単に作成したり、新しいvhdにコピーしたり、 VM Depot (Linuxのみ)にアップロードすることもできます。

これらの役割をどう処理するかについての質問に答えるには、プラットフォームトレーニングキット(後述)から多くの優れたアイデアとサンプルが提供されますが、ここではいくつかの簡単な使用例を示します。

  • Tcp、http、https、またはudpエンドポイント(Webアプリケーション、SOAP/RESTサービスなど)を公開するコードを実行できます。ただし、stateless方法を考える必要があります。複数のVMインスタンスを実行している場合、ユーザートラフィックはそれらのインスタンスに分散されます。プラットフォームトレーニングキットは、ストレージまたはキャッシュを使用してこれに対処する方法を示します。
  • キューまたはタイマーに依存しないコードを実行できます。写真のサムネイル生成や、ユーザー入力に基づいた計算など、オンデマンドのタスクがあるかもしれません。これらは、外部で利用可能なエンドポイントを必要としません。リクエストをキューにプッシュし、このキューから単純にフィードするタスクを実行できます(そして、すべてのインスタンスがキューメッセージを消費して、このプロセスを複数のインスタンスに拡大できます)。
  • .NET、Java、php、python、node、Rubyなどを実行できます。プロジェクトコードとともに適切なランタイムコードを配布するだけです。すべての言語は、Azure APIに対してREST呼び出しを行うことができ、いくつかの言語(上記の言語を含む)がこれを処理するSDKを持っています。すべての言語SDKは here であり、githubのソースコードでは here です。
  • VMロールを使用すると、非常に複雑/時間のかかるインストール、手動による介入が必要なインストール、および確実に自動化できないインストールでソフトウェアをインストールして実行できます。この場合、OSのメンテナンスに対処する必要があります。 VMの役割を超えて、WindowsおよびLinuxの両方のサポートとともにクラウドベースのVM構成を提供する仮想マシンがあります。 VMロールを介した仮想マシンをお勧めします。

WebロールとWorkerロールを使用すると、OSと関連するパッチが自動的に処理されます。 VMを管理しなくてもアプリのコンポーネントを構築できます。

VMロールを使用して、完全なWindows Serverイメージを構築し、Azureフックを追加して、VM全体をクラウドにプッシュします(そしてVMを維持します) _時間経過に伴う画像)。

Virtual Machinesを使用すると、ギャラリーからOSイメージを選択するだけで、ギャラリーが作成され、blobストレージにvhdとして保存されます。次に、RDP/sshを使用して、好きなように設定します。

建築家の帽子をかぶって、ここが楽しくて面白い場所になります。 WebロールまたはワーカーロールでWebサービスを実行できます(そして、どちらでもポートを開くことができます)。 Tomcatまたは他のWebサーバーをWorkerロールでホストできます。ウェブサイトとサービスを1つの役割にまとめることも、さまざまなスケーラビリティのニーズに合わせて複数の役割に分割することもできます。

良いスタートを切るには、 プラットフォームトレーニングキット を見て、演習を開始してください。

99
David Makogon
  • Webロールは、IISでホストされるWebアプリケーションです。
  • ワーカーロールは、何らかの作業を実行できるプロセスです(つまり、アップロードされた画像を自動的に圧縮し、データベースで何かが変更されるたびに処理を行い、キューおよびプロセスから新しいメッセージを取得します)
  • VMの役割ホストVM
30
Dennis Traub

数日前にこのSO質問/回答に出くわしましたが、答えが頭上に少し出てきました(AzureとWebが初めてです)。今夜、この概要をAzureの基本事項で見つけました。これは、ワーカーロールとWebロールの主要な違いについての高レベルの概要だと思いました。

2つの主な違いは、WebロールのインスタンスはIISを実行しますが、ワーカーロールのインスタンスは実行しないことです。ただし、どちらも同じ方法で管理され、アプリケーションで両方を使用するのが一般的です。たとえば、Webロールインスタンスはユーザーからのリクエストを受け入れ、処理のためにそれらをワーカーロールインスタンスに渡します。アプリケーションを拡大または縮小するには、Windows Azureにいずれかのロールのインスタンスを追加作成するか、既存のインスタンスをシャットダウンするように要求できます。また、Windows Azure仮想マシンと同様に、各Webまたはワーカーロールインスタンスが実行されている時間にのみ課金されます。

Azure開発の初心者の場合は、こちらの記事全体を読むことを強くお勧めします。 Windows Azureの紹介

これが電球をオンにしてくれたのと同じくらい誰かに役立つことを願っています。

21
BrianLegg

Windows AzureのWebロールは特別な目的であり、フロントエンドWebアプリケーションのホストに使用される専用のインターネットインフォメーションサービス(IIS)Webサーバーを提供します。 WebアプリケーションをWebロールに迅速かつ簡単に展開し、コンピューティング機能を需要に合わせて拡大または縮小できます。

3
Sufy Khan