Windows Azure

Windows Azure Connectを使用して、Web RoleやWorker RoleからオンプレミスのSQL serverへ到達するのに苦労したと聞いた。いくつかのTipsを紹介しよう。

  1. Remote Desktop経由でロールにアクセスできるように設定し、ロールにリモート接続する。
  2. Web ロールからSQL ServerにPingが飛ばせるか、その逆も可能か確認する。
    →もしダメならFireWallの設定を確認する
  3. ポート1433でSQL Serverに接続できるか確認する
    Webロールから telnet <SQL-SERVER-NAME> 1433
    もしダメなら、SQL ServerのFireWallのルールでTCP1433の受信が許可されているか確認し、SQL Serverの設定でリモート接続が有効になっているかを確認する。
    SQL ServerのIP接続が有効になっているかなど。
    この辺りは、オンプレミスのWebサーバからSQL Serverへ接続するときにしなければならない作業と同じ話なので、検索すれば詳細に説明してくれるページが多いので確認するといい。
  4. SQL接続文字列のタイムアウトの時間を長くする。
    connectionString = "Data Source=(local);Database=AdventureWorks; Integrated Security=SSPI;Connection Timeout=60”

オンプレミスのSQL ServerからAzureのデータセンターまでは長い距離を通信することになるので、単純に物理的なネットワーク遅延がパフォーマンスにインパクトを与えることを理解しておく必要がある。

ネタ元

Troubleshooting Windows Azure Connect to On-Premises SQL Serverをざっくりと意訳した投稿です。

Windows Azure

Windows Azure Content Delivery Network(CDN)で、よく聞かれる質問は、「ノードが配置されている物理的な場所はどこ?」です。
現時点で、世界24か所で提供しています。

US/EMEA

US

  • バージニア州 アッシュバーン
  • カリフォルニア州 ベイエリア
  • イリノイ州 シカゴ
  • テキサス州 サンアントニオ
  • カリフォルニア州 ロサンゼルス
  • フロリダ州 マイアミ
  • ニュージャージー州 ニューアーク
  • ワシントン州 シアトル

EMEA

  • オランダ アムステルダム
  • カタール ドーハ
  • アイルランド ダブリン
  • イギリス ロンドン
  • ロシア モスクワ
  • フランス パリ
  • スウェーデン ストックホルム
  • オーストリア クリプトン
  • スイス チューリッヒ

アジア・太平洋/それ以外

  • 香港
  • ブラジル サンパウロ
  • 韓国 ソウル
  • シンガポール
  • オーストラリア シドニー
  • 台湾
  • 日本 東京


より大きな地図で Windows Azure CDN を表示

Windows Azure CDNの詳細については、Announcing Pricing for the Windows Azure CDN – Windows Azure – Site Home – MSDN Blogsを参照してね。

この記事は、UPDATED: 24 Nodes Available Globally for the Windows Azure CDN Including New Node in Doha, QT – Windows Azure – Site Home – MSDN Blogsを抜粋、意訳したものです。

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を安い(よね?多分。)料金で使用できるって捉え方が正しいのかな。