Windows Azureのロール上で、クラウドジョブ実行エージェントが動作します。Windows Azure上で動作させるロールおよびサービスパッケージの作成方法について説明します。
開発環境で、Visual Studioを使用して作成します。以下の作業が必要です。
3.2.4.4 クラウドジョブ実行エージェントの同梱(Systemwalker Operation Manager メディアパック V1 powered by Windows Azureを購入した場合のみ)
3.2.4.5 Windows Azure展開用ファイルの作成
サービスパッケージファイル
サービス構成ファイル
Visual Studioを使って、Workerロールを作成します。
作成するロールは、以下の条件を満たしてください。
テンプレートにWindows Azure Projectを使用してプロジェクトを作成
クラウドジョブ実行エージェント(jmcloudazje.exe)が動作するように設計
以下に、WorkerロールのWorkerRoleクラスの修正例を示します。
namespace WorkerRole { public class WorkerRole : RoleEntryPoint { public override void Run() { while (true) { Thread.Sleep(10000); Process.Start(@"jmcloudazje.exe"); } } public override bool OnStart() { return base.OnStart(); } } }
この例では、10秒ごとにクラウドジョブ実行エージェント(jmcloudazje.exe)を起動しています。こうすることで、10秒ごとにWindows Azure上でストレージの依頼キューを確認することができます。
jmcloudazje.exeは、依頼キューにより通知されたメッセージからクラウドジョブを実行するための情報を抽出して、指定されたロール内のアプリケーションを起動します。
参考
クラウドジョブ実行エージェント(jmcloudazje.exe)は、Webロールで利用することもできます。その場合も、定期的にクラウドジョブ実行エージェント(jmcloudazje.exe)を呼び出すように、Webロールを設計してください。
情報の設定
作成したロールに必要な情報の設定をします。
Visual Studioのソリューションエクスプローラーから、Windows Azure Project配下にある作成したロールのプロパティを開きます。
[設定]タブに以下の文字列型の設定を加えます。
名前 / Name | 型 / Type | 値 / Value |
---|---|---|
OMGRACCOUNTNAME | String | Windows Azureのストレージサービスのアカウント名 |
OMGRSHAREDKEY | String | Windows Azureストレージサービスのプライマリ |
OMGRENDPOINTBLOB | String | BLOBのURL |
OMGRENDPOINTQUEUE | String | キューのURL |
OMGRRETRYCOUNT | String | クラウドジョブ実行エージェントからストレージに対して |
OMGRRETRYINTERVAL | String | クラウドジョブ実行エージェントからストレージに対して |
上記の情報は、環境設定時に必要となるため、控えておいてください。
また、クラウドジョブ実行エージェントが業務アプリケーションを起動させるために、サービス定義ファイル(ServiceDefinition.csdef)のロールの定義部分に以下の記述が必要です。
<Runtime executionContext="elevated" />
以下にサービス定義ファイル(ServiceDefinition.csdef)の編集例を示します。
<ServiceDefinition name="SampleWorkerRole" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition"> <WorkerRole name="SampleWorkerRole"> <ConfigurationSettings> <省略> </ConfigurationSettings> <Runtime executionContext="elevated" /> </WorkerRole> </ServiceDefinition>
Windows Azure上で動作させる業務アプリケーションを作成します。
Windows Azure上で動作可能なジョブとなるための前提条件および注意事項について説明します。
アプリケーションプログラムの前提条件
以下のすべての条件を満たしてください。
拡張子が「bat」または「exe」であること
Windows Server 2008(x64)上で動作可能であること
以下に該当するコマンドは、登録しないでください。
ウィンドウ系のコマンド(notepad、excel、wordなど)
対話型のコマンド(edlinなど)
入力要求を行うコマンド(format、backupなど)
また、実行ファイルへの入/出力ファイルのパスは、保守性および環境の移行しやすさの観点から、ジョブの引数などの外部変数とすることを推奨します。
終了コードの値
実行ファイルの終了コードは、200以下になるようにしてください。
Systemwalker Operation Managerのジョブスケジューラで扱える終了コードの値は、256までですが、201~256までの終了コードはジョブスケジューラで使用しています。また、実行ファイルの復帰値が256以上の場合は255として扱われます。
標準出力および標準エラー出力の文字コードについて
業務アプリケーションが標準出力および標準エラー出力に出力するデータは、UNICODE形式にしてください。
業務アプリケーションをロールに同梱(インポート)する手順について説明します。
手順は、Visual Studio 2010を使用した場合のものです。
Visual Studioのソリューションエクスプローラーから、WorkerRoleプロジェクトを右クリックして、[追加]-[新しいフォルダー]を選択ます。
1.で作成したフォルダを右クリックして[追加]-[既存の項目の追加]を選択します。
表示されたダイアログで、用意した業務アプリケーションを選んで[追加]します。
3.で登録したファイルをソリューションエクスプローラーから選択します。
プロパティの[出力ディレクトリにコピー]の項目を[常にコピーする]に変更します。
1.で作成したフォルダ名は、ジョブ定義の際に必要となるため、控えておいてください。
ジョブ定義の際、クラウドジョブ実行依頼コマンドに与えるアプリケーションの指定方法は、「\“フォルダ名”\“アプリケーションプログラム名”」とする必要があります。
例えば、1.で作成したフォルダ名を“bin”、アプリケーションプログラム名を“app.exe”とすると、「\bin\app.exe」と指定します。
Systemwalker Operation Manager メディアパック V1 powered by Windows Azureを購入した場合は、開発環境にインストールしたクラウドジョブ実行エージェントをロールに同梱する必要があります。以下の手順に従ってクラウドジョブ実行エージェントをWorkerロールのプロジェクトの直下に格納してください。
手順は、Visual Studio 2010を使用した場合のものです。
Visual Studioのソリューションエクスプローラーから、WorkerRoleプロジェクトを右クリックして、[追加]-[既存の項目の追加]を選択します。
表示されたダイアログで、インストール先フォルダ配下のmpjmcloud_agent\binに格納されたクラウドジョブ実行エージェント(jmcloudazje.exe)を選んで[追加]します。
2.で登録したファイルをソリューションエクスプローラーから選択します。
プロパティの[出力ディレクトリにコピー]の項目を[常にコピーする]に変更します。
Windows Azure上に展開するための展開用ファイルの作成方法について説明します。
作成手順
Windows Azure Projectのプロパティを選び、右クリックして[発行...]を選択します。
[Windows Azureプロジェクトの配置]ウィンドウで、[サービスパッケージだけを作成]を選択し、出力先のパスを指定してOKボタンをクリックします。
これにより、作成されたサービスパッケージファイル(*.cspkg)とサービス構成ファイル(*.cscfg)が表示されます。
情報の取得
表示されたサービスパッケージファイル(*.cspkg)とサービス構成ファイル(*.cscfg)の情報から、以下を取得しておきます。
サービスパッケージファイルおよびサービス構成ファイルのパス
これらの情報は、デプロイメントの制御を行う際に必要となるため、控えておいてください。
開発環境の上記ファイルがWindows共有できない場合は、スケジュールサーバ環境にコピーするなどして、運用時にアクセス可能な状態にしてください。