Windows Azure

Windows Azure SDK 1.2からWindows Azure SDK 1.3へアップグレードすると、Windows Azure上で動作するアプリケーションで、ログ送信が止まってしまう可能性があります。問題が発生している事例をいくつか発見しています。
しかし、この問題は必ず発生するものではありませんが、もし、この問題に遭遇した場合は、MonAgentHostのイベントログを確認する必要があります。下のようなログが記録されているかもしれません。

[Diagnostics]: Checking for configuration updates 11/30/2010 02:19:09 AM.
[MonAgentHost] Error: MA EVENT: 2010-11-30T07:21:35.149Z
[MonAgentHost] Error:   2
[MonAgentHost] Error:   4492
[MonAgentHost] Error:   8984
[MonAgentHost] Error:   NetTransport
[MonAgentHost] Error:   0
[MonAgentHost] Error:   x:\rd\rd_fun_stable\services\monitoring\shared\nettransport\src\netutils.cpp
[MonAgentHost] Error:   OpenHttpSession
[MonAgentHost] Error:   686
[MonAgentHost] Error:   0
[MonAgentHost] Error:   57
[MonAgentHost] Error:   The parameter is incorrect.
[MonAgentHost] Error:   WinHttpOpen: Failed to open manually set proxy <null>; 87
[MonAgentHost] Error: MA EVENT: 2010-11-30T07:21:35.249Z
[MonAgentHost] Error:   2
[MonAgentHost] Error:   4492
[MonAgentHost] Error:   8984
[MonAgentHost] Error:   NetTransport
[MonAgentHost] Error:   0
[MonAgentHost] Error:   x:\rd\rd_fun_stable\services\monitoring\shared\nettransport\src\netutils.cpp
[MonAgentHost] Error:   OpenHttpSession
[MonAgentHost] Error:   686
[MonAgentHost] Error:   0
[MonAgentHost] Error:   57
[MonAgentHost] Error:   The parameter is incorrect.
[MonAgentHost] Error:   WinHttpOpen: Failed to open manually set proxy <null>; 87
[Diagnostics]: Checking for configuration updates 11/30/2010 02:20:11 AM.

このエラーは、Diagnostic Monitor がテーブルストレージにログを送信しようとするたびに、DiagnosticsAgent.exe(Windows SDK 1.2までは、MonAgentHost.exe)が書き込んでいます。

*. ScheduledTransferPeriod()ファンクションで使用するdiagnostics monitorツールからログを送信しようとした時に発生します。

回避策

この問題を解決するには、ServiceDefinition.csdef の<sites></sites>セクションを削除するかコメントアウトします。

<?xml version="1.0" encoding="utf-8"?>

<ServiceDefinition name="Your_Service_Name" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">

  <WebRole name="MyWebRole" enableNativeCodeExecution="true">

    <!–<Sites>

      <Site name="Web">

        <Bindings>

          <Binding name="Endpoint1" endpointName="Endpoint1" />

        </Bindings>

      </Site>

    </Sites>–>

    <Endpoints>

      <InputEndpoint name="Endpoint1" protocol="http" port="80" />

    </Endpoints>

    <Imports>

      <Import moduleName="Diagnostics" />

    </Imports>

  </WebRole>

</ServiceDefinition>

注意点

注意すべき点は、<sites></sites>セクションをサービス定義ファイルから削除orコメントアウトすると、アプリケーションをHWCで動作させることになります。これは、フルIISロールw3wp.exeの代わりにWaWebHost.exeプロセス上で動作させます。

定義ファイルに、<sites></sites>セクションがあるとフルIISWebロールでアプリケーションが動作します。、<sites></sites>セクションをコメントアウトすると、アプリケーションは、webロールベースのWindows Azure SDK 1.2でアプリケーションを動作させていることになります。

元情報

Handling problem: Diagnostics Monitor is not sending diagnostics logs to Azure Storage after upgrading Windows Azure SDK from 1.2 to 1.3を意訳したエントリーです。誤訳があるかもしれませんので、正確な情報は元記事を参照してください。

Windows Azure

Windows Azure SDK 1.2からWindows Azure SDK 1.3へアップグレードすると、Windows Azure上で動作するアプリケーションで、ログ送信が止まってしまう可能性があります。問題が発生している事例をいくつか発見しています。
しかし、この問題は必ず発生するものではありませんが、もし、この問題に遭遇した場合は、MonAgentHostのイベントログを確認する必要があります。下のようなログが記録されているかもしれません。

[Diagnostics]: Checking for configuration updates 11/30/2010 02:19:09 AM.
[MonAgentHost] Error: MA EVENT: 2010-11-30T07:21:35.149Z
[MonAgentHost] Error: 2
[MonAgentHost] Error: 4492
[MonAgentHost] Error: 8984
[MonAgentHost] Error: NetTransport
[MonAgentHost] Error: 0
[MonAgentHost] Error: x:\rd\rd_fun_stable\services\monitoring\shared\nettransport\src\netutils.cpp
[MonAgentHost] Error: OpenHttpSession
[MonAgentHost] Error: 686
[MonAgentHost] Error: 0
[MonAgentHost] Error: 57
[MonAgentHost] Error: The parameter is incorrect.
[MonAgentHost] Error: WinHttpOpen: Failed to open manually set proxy <null>; 87
[MonAgentHost] Error: MA EVENT: 2010-11-30T07:21:35.249Z
[MonAgentHost] Error: 2
[MonAgentHost] Error: 4492
[MonAgentHost] Error: 8984
[MonAgentHost] Error: NetTransport
[MonAgentHost] Error: 0
[MonAgentHost] Error: x:\rd\rd_fun_stable\services\monitoring\shared\nettransport\src\netutils.cpp
[MonAgentHost] Error: OpenHttpSession
[MonAgentHost] Error: 686
[MonAgentHost] Error: 0
[MonAgentHost] Error: 57
[MonAgentHost] Error: The parameter is incorrect.
[MonAgentHost] Error: WinHttpOpen: Failed to open manually set proxy <null>; 87
[Diagnostics]: Checking for configuration updates 11/30/2010 02:20:11 AM.

このエラーは、Diagnostic Monitor がテーブルストレージにログを送信しようとするたびに、DiagnosticsAgent.exe(Windows SDK 1.2までは、MonAgentHost.exe)が書き込んでいます。

*. ScheduledTransferPeriod()ファンクションで使用するdiagnostics monitorツールからログを送信しようとした時に発生します。

回避策

この問題を解決するには、ServiceDefinition.csdef の<sites></sites>セクションを削除するかコメントアウトします。

<?xml version="1.0" encoding="utf-8"?>

<ServiceDefinition name="Your_Service_Name" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">

  <WebRole name="MyWebRole" enableNativeCodeExecution="true">

    <!–<Sites>

      <Site name="Web">

        <Bindings>

          <Binding name="Endpoint1" endpointName="Endpoint1" />

        </Bindings>

      </Site>

    </Sites>–>

    <Endpoints>

      <InputEndpoint name="Endpoint1" protocol="http" port="80" />

    </Endpoints>

    <Imports>

      <Import moduleName="Diagnostics" />

    </Imports>

  </WebRole>

</ServiceDefinition>

注意点

注意すべき点は、<sites></sites>セクションをサービス定義ファイルから削除orコメントアウトすると、アプリケーションをHWCで動作させることになります。これは、フルIISロールw3wp.exeの代わりにWaWebHost.exeプロセス上で動作させます。

定義ファイルに、<sites></sites>セクションがあるとフルIISWebロールでアプリケーションが動作します。、<sites></sites>セクションをコメントアウトすると、アプリケーションは、webロールベースのWindows Azure SDK 1.2でアプリケーションを動作させていることになります。

元情報

Handling problem: Diagnostics Monitor is not sending diagnostics logs to Azure Storage after upgrading Windows Azure SDK from 1.2 to 1.3を意訳したエントリーです。誤訳があるかもしれませんので、正確な情報は元記事を参照してください。

Windows Azure

私のアカウントは、まだまだ絶賛VM RoleがPending中なのですが、ローカル環境でできるところまでは、のんびりとやってみました。 以下の投稿は、正直VM Roleを使用するのに必要が無い雑学な話です。
Windows Azure VM Roleを使用する手順には、次の2つがあります。

  1. Windows Azure VM Role統合コンポーネントのインストール
  2. sysprepの実行

Windows Azure 統合コンポーネント

Windows Azure統合コンポーネントは何をするものでしょうか?

Windows Server 2008 R2に規定でインストールされているHyper-V統合コンポーネントをWindows Azure用に置き換えている(っと思う)。
Hyper-Vコンポーネントは、Hyperバイザーとの接続などに使用するドライバーなどの集合体です。Hyper-Vコンポーネントを入れないとハイパーバイザー型の仮想化にならないのでパフォーマンス劣化します。
Windwos Azure統合コンポーネントも各種ドライバーが入って、Azure上でパフォーマンスが出るようにチューニングされる(と思います)。

他には、Windows Azure Integration Componentsが配置される

Windows Azure統合コンポーネントのインストール時に、「C:\Program Files\Windows Azure Integration Components\v1.3」配下に各種ファイルが配置されます。
「Agent」、「Azure Storage」、「Diagnostics」、「Powershell」、「ref」、「RemoteAccess」、「RemoteForwader」が作成されます。名前的に、普通のWindows Server 2008 R2をAzure OSっぽくする為のコンポーネントがどーんと入ります。

ドライバーとかアセンブリキャッシュの登録

各種ドライバーとアセンブリキャッシュに幾つかのファイルの登録が行われます。
例えば、「Microsoft.WindowsAzure.Firewall.Interop」、「Microsoft.WindowsAzure.RoleContainer」のようなAzure用のものが登録されます。

sysprepの応答ファイルの生成

C:\unattend.xml」が生成されます。sysprepの応答ファイルで、sysprepに使用されます。
設定値として、Administratorのパスワードを付与しています。Windows Azureで使用する為に、Administratorのパスワードを初期化しているのだと思います。
タイムゾーンをUTCに設定しています。これは、東京に変えたくなるのですが、不具合原因になるかも・・・?
InputLocale、SystemLocale、UILanguage、UserLocaleをen-usに設定しています。これこそ、ja-jpに変更したいのですが、どうなんでしょ?VM Roleを使用できるようになったら、試してみようと思います。

application.configでライセンス対応

VM Roleで使用するOSのライセンス料は、VM Role課金に含まれることが発表されています。ライセンス認証をしていないOSイメージをそのままアップデートできますし、たとえ認証していてもsysprepをかけた段階で認証がクリアされます。
KMSアクティベーションを使用して、ライセンス認証をしています。application.configに、

<licensing>
  <!– http://technet.microsoft.com/en-us/library/ff793409.aspx –>
  <productKeys>
    <add name="Windows Server 2008 R2 HPC Edition"  key="消去しとく" />
    <add name="Windows Server 2008 R2 Datacenter"   key="消去しとく" />
    <add name="Windows Server 2008 R2 Enterprise"   key="消去しとく" />
    <add name="Windows Server 2008 R2 Standard"     key="消去しとく" />
    <add name="Windows Web Server 2008 R2"          key="消去しとく" />
  </productKeys>
</licensing>

っと言う記述があります。これで、OSのライセンス認証を済ませるはず・・・・です。てことは、Enterprise縛りではないようですね。VM Role。HPC、Datacenter、Enterprise、Stamdard、WebエディションどれでもOK?かもね。
これはクラウドなんだけど、Windows Serverを安い(よね?多分。)料金で使用できるって捉え方が正しいのかな。

Windows Azure

Vm Roleを使用する際に必要になる、Windows Azure 統合コンポーネントのインストールに、使用するwavmroleic.isoファイルには、3つのファイルが含まれています。

ConnectReadme.txtの記載されている内容を紹介します。

VN RoleでWindows Azure Connectを有効にするには、次の手順をする必要があります。

  1. sysprep前にConnectエンドポイント ソフトウェアをインストールします。エンドポイント ソフトウェアをインストールする為に使用するプログラムは、http://waconnect.blob.core.windows.net/client/latest/x64/wacendpointpackagefull.exeからダウンロードします。
    インストールする前に、未適用のWindows Updateがない事と、再起動待ちでない事を確認します。もし、残っている場合は、Windows Updateをして最新の状態にし、再起動を完了させてからエンドポイント ソフトウェアをインストールしてください。
    インストール後は、sysprepをかけて、VMイメージをアップロードしてからアクティベートしてください。
  2. 後は、通常の手順と同じです。

Windows Azure

CSUPLOADスクリプトが成功し、Azure上にVM Roleサービスが公開されたら、VMにリモート接続します。

VM Rollにリモート接続できない場合は、次のどちらかの可能性があります。

  • タイピングミスなどにより、クレデンシャルが正しく動作していない
  • VM Roll上のアプリケーションが正しく動作していない
    概略手順内で、OSインストール時の以下の手順をオプションと記載しましたが、不具合に遭遇した場合は、試してみると良いようです。(VM Role開発に携わっている中の人情報では、ブートパーティションを正確にWindows Server 2008 R2にしておけば、パーティションは複数あってもOKっと心強いコメントを頂いてますので、どちらかというとブートパーティションの設定を確認した方が良いかと思います。)