2012-02-05 9 views
1

Azureプラットフォームを調べていますが、問題が発生しています。Azure:Java webrole

実は、私はWebロールとWorkerロールの違いを理解...

を得ることはありません何かがあります。 しかし、JavaアプリケーションのWebロールを作成する方法は?

eclipseでazure用のJavaアプリケーションを開発するときに、javaサーバ(私はtomcat7を取得しました)+ jdkをコピー/貼り付けする必要があります。私はそれがエミュレータ内でJavaアプリケーションを実行することだと仮定します。

しかし、アプリケーションをazureにwebroleとしてデプロイするとき..... warパッケージ+ xml設定ファイル(cscfgなど)のみをアップロードするのですか、またはサーバーとjdkもアップロードしますか? "Emulator"パラメータの代わりに "Cloud"パラメータを使ってプロジェクトを構築しようとしましたが、150Mbという巨大なcspkgファイルを作成しました...私はアプリを更新するたびに150Mbをアップロードできません...

なぜ、.warファイルのアップロードを許可しないのですか?また、サーバーのディストリビューションをアップロードする必要がある場合、フェールオーバーとセッションのレプリケーションはどのように設定されますか?私はおそらく何かを欠場

...あなたの答えのための

おかげ


編集:実際に

、私はウェブから何を読んでから、Javaアプリケーションをネイティブに処理されませんAzureによって、パッケージ内に独自のアプリケーションサーバー(tomcat、glassfishな​​ど)を用意しなければなりません。起動スクリプトは、内部でアプリケーションを実行するサーバーを実行します。新しいパッケージを再デプロイするたびに、jre +サーバーバイナリ+アプリケーションコードをアップロードする必要があります。

セッションレプリケーションなどのサポートは組み込まれていません。複数のインスタンス間でセッションを共有できるようにするには、テーブルストレージサービスを使用してセッション情報を保存する必要があります。

注:日食では、最新のプラグインは、あなたがスティッキーセッションを設定することができますが、私はそれ故に

詳細については何も知らない、JavaアプリケーションがwebroleとしてではなくどこWorkerロールとして展開されていません自分のサーバーを追加します。

Webrolesは.NETおよびPHPアプリケーションのみに対応しています。

私が間違っている場合は私を修正してください。

+0

JavaまたはTomcatをデプロイメントパッケージに含める必要はありませんblobストレージに保存し、起動スクリプトでローカルストレージにコピーしてtomcatを開始することができます。ローカルのVMストレージは非常に高速です。私は同じことをするデモアプリケーションに取り組んでいますが、 JREとTomcatをBLOBストレージに移動すると、パッケージサイズは約160MBから70MBに減少しました。コードが利用可能になってから数週間後にこの記事を更新しますが、これを行う方法を示す多くの資料があります。 –

答えて

1

あなたは正しいです。一般的には、Webロールでjava/Tomcatを実行することもできますが、WebロールではIIS内に少なくとも1つのサイトが存在する必要があります(このサイトにはポート80は接続されず、TomcatはTCPポートを共有できません)。

Azure VM Roleを試してください。このシナリオでは、システムの要件(JRE、Tomcat、...)をすべて使用して、ローカルで仮想macineを作成します。この仮想イメージを、VMロールのテンプレートとしてAzureにアップロードします。これで、アプリケーションファイルのみをアップロードできます。

また、JREとTomcatをBlobストレージからダウンロードして展開するような起動タスクを使用して、アップロード/デプロイメントプロセスをスピードアップすることもできます。 Azure Bootstrapperがお手伝いします。

+0

私は同意しません。Javaを実行するためにVMの役割は必要ありません。 Tomcat、Jettyなどを起動するだけです.VMロールを使用する場合は、OSのアップグレードも管理する必要があります。これを行う利点はありません。また、OPは170MBのパッケージのアップロードに関係していました。 VMの役割を使用すると、VM全体が展開パッケージよりもはるかに大きくなることになります。 –

1

お返事ありがとうございます。

これは、新しいバージョンのJavaパッケージをデプロイするときに「何が起こっているのか」という別の問題をもたらします。

tomcatが重大なセキュリティ修正をリリースしたとしましょう。あなたはtomcatの新しいバージョンをcspkg(heavyyyyy)に埋め込むか、またはあなたが提案したようにblob(light !! )、そしてもちろん、更新の少ないJavaコードです。すでに実行中のインスタンスにこのパッケージをデプロイします。

どうしますか?彼らは新しいパッケージで再起動しますか?新しいインスタンスを生成し、現在の実行を強制終了しますか?各インスタンスの実行中のアプリケーションサーバーを強制終了し、新しいパッケージ内で新しいインスタンスを実行しますか? (非永続的な)ローカルストレージ(安価なキャッシュとして使用される場合)はどうなりますか?使用中のセッションはどうなりますか(blobに格納されずにメモリ内に格納されている場合)

AzureにはさまざまなJavaサーバーのベンチマーク/比較表がありますか? (メモリフットプリント、同時接続など)

私の質問は奇妙に思えるかもしれませんが、私は現在Google App Engineで作業しています(Azureへの移行を希望します)。アプリケーションはeclipseのDeployボタンをクリックすることですが、現時点ではまだまだ混乱します。 実際には、独自のjreと独自のアプリケーションサーバーをアップロードする必要があるため、多くの自由が追加されます。 PaaS

関連する問題