Windows Azureクラウドサービス再入門~Workerロールを作ってみる

2013年4月4日 | By TatsuakiSakai | Filed in: Micosoft Azure.
  1. Workerロールの役割と今回のTo Do

    前回はWebロールを作成しました。

    今回はWorkerロールですが、最初の回でご紹介した通り、Workerロールはバックエンドの処理を主に受け持つロールです。

    つまり、Webロールやオンプレミスのアプリケーションから何かしらのリクエストを待ち受けて、それに伴う処理を実行するというような使い方になるわけです。

    しかし、まだ外部との連携手段や処理実行の際に必須となるストレージなどへの状態永続化の方法などなど、、、、、Workerロールの内部にインプリメントされる処理の肝となる部分をまだご紹介しておりませんでした。

    正直、「この流れ・・・間違えたか」と思わなくもなかったのですが、まずは「作ってみる」ことと、役割の違いを理解することが重要ですので、この流れのままで進めていきます。

    さて、作ったのは良いけれど、何もしないで終わるのも勿体ありません。

    そこで、実際に動いていることを実感できる様、リモートデスクトップ接続を設定して稼働中のWorkerロールの内部へ潜入(?)してみたいと思います。

     

  2. プロジェクトの作成

    それでは、Webロール同様プロジェクトを新規に作成してみましょう。

    クラウドプロジェクトの作成までは前回同様です。

    ただし、今回はWebロールではなくWorkerロールのプロジェクトを選択します。

     

     

     

     

    プロジェクトを作成したら、Workerロールのコードを見てみましょう。

    C#の場合、WorkerRole.csというファイルがWorkerロールのコードになります。

     

     

     

    あらかじめダミーのコードが入っていますので、ここを適宜置き換えることで、ロジックを記述することができます。

    なお、Runメソッドが終了してしまうと、Workerロール自体の実行も終了してしまいますので、Runメソッドの実行を継続するようにコードを記述しておきます。

    Runメソッドの内部が一見無限ループになっているように見えるのは、そういう意味合いがあります。

    実際には、Runメソッドの内部でサービスバスやQueueなどのメッセージを待ち受けたりWCFサービスを起動してTCPサービスを起動したりするようなコードを記述します。

    こうしたコードは次回以降記述していきますので、お楽しみに。

     

  3. リモートデスクトップ接続の設定

    さて、このままではWorkerロールに何もしないで終わってしまいます。

    このまま開発環境で実行したとしても、Compute Emulator UIのコンソールに”Working”というメッセージを一定時間出力し続けるだけのコードです。

    それではWorkerロールがあまりにも不憫(?)なので、Windows Azureにデプロイした際にリモートデスクトップ接続できるようにクラウドプロジェクトを構成してみましょう。

    まず、ソリューションエクスプローラーのクラウドサービスプロジェクトのアイコン上でコンテキストメニューを表示し、「リモートデスクトップの構成」を選択します。

     

     

     

     

    以下のようなダイアログボックスが表示されますので、内容を設定していきます。

    最初に「すべてのロールの接続を有効にする」をチェックすることで、設定が可能になります。

    この中でやや複雑な手順が、証明書の選択か作成になります。

     

     

     

     

     

    これは、リモートデスクトップ接続の資格情報の暗号化に用いるものです。

    すでに、ローカル証明書などを持っていれば既存のものを選択し、存在しなければ新規に作成します。

    そして、この証明書をWindows Azure管理ポータルにアップロードする必要があります。

    以前は手動によるアップロードが必要でしたが、現在ではデプロイ時に自動的にアップロードすることも可能になっていますので、今回は自動アップロードをすることにします。

    「OK」ボタンをクリックし構成を保存して終了します。

     

     

  4. Visual Studioから直接デプロイ

    リモートデスクトップの構成が完了したら、実際にプロジェクトをデプロイしてみましょう。

    Webロールのデプロイのときにはパッケージをいったん作成して管理ポータルからデプロイしていました。

    今回はVisual Studioから直接デプロイしてみましょう。

    クラウドサービスプロジェクトのコンテキストメニューを表示し、「発行」を選択します。

     

     

     

     

    表示されたウィザードで「サインインして資格情報をダウンロードする」をクリックします。

    Webブラウザが開き、発行設定プロファイルが生成され、ダウンロードできるようになります。

    ダウンロードが完了したら、ウィザードの「インポート」をクリックしダウンロードしたプロファイルをインポートします。

    インポートが完了し、サブスクリプションの一覧が更新されたら、アプリケーションをデプロイするサブスクリプションを選択し「次へ」をクリックします。

    この時、次のステップに進む前にストレージアカウントの作成を促すダイアログが表示される場合があります。

    選択したサブスクリプションにストレージアカウントが存在しない場合にこのダイアログが表示されます。

    これは、パッケージを一旦ストレージにアップロードしてからデプロイするためです。

    すでにストレージアカウントが作成されている場合には「詳細設定」タブを開き、任意のストレージアカウントを選択します。

     

     

     

     

    次に「発行」をクリックすればデプロイが開始されます。

    拙著で以前デプロイの手順をご紹介した際には、証明書を出力して管理ポータルからアップロードするなどといったようにデプロイができるようになりまでに複雑なステップを経る必要がありましたが、最新のSDKではデプロイまでの手順が大幅に簡略化されています。

    あとはデプロイが完了するまで、気長に待ちましょう。

    デプロイの状況はVisual Studioの「Windows Azureのアクティビティログ」で確認することができます。

     

     

     

     

  5. リモートデスクトップ接続の実行

    デプロイが完了したら、管理ポータルにログインしてリモートデスクトップ接続をしてみましょう。

    デプロイされたクラウドサービスを選択し、「インスタンス」タブを開きます。

    一覧には実行中のインスタンスの一覧が表示されているはずです。

     

     

     

    現在デプロイしているインスタンスは1インスタンスのみですので、そのインスタンスを選択し下のリンクボタンから「接続」をクリックしてみましょう。

    リモートデスクトップの構成情報が格納された*.rdpファイルがダウンロードされ、これを開くとリモートデスクトップ接続のログイン処理が開始されます。

    ログインが完了すると、おなじみのリモートデスクトップ画面が表示されます。

     

     

     

     

    このように、Windows Serverのインスタンスが起動しているのがわかります。

    仮想マシン上でWorkerロールが実行されています。

    次回以降、いよいよWebロールとWorkerロールを連携させるための準備を進めていきましょう。

     

     


Comments are closed here.