Windows Azure Virtual Machines 一般的な問題

2013-02-22

Windows Azure Virtual Machineを使用している場合に遭遇する一般的な問題について説明します。

Windows Azure Technical Support (WATS) Team Blog に投稿された「Windows Azure Virtual Machines – Common Issues」をざっくり意訳した投稿です。

1. 仮想マシンが見えなくなったり、削除される

例えば、90日間のトライアルアカウントやMSDNサブスクリプションの月間使用量などで、アカウントの使用上限に達した場合、ストレージアカウントは読み取り専用(Read-Only)になり、仮想マシン用のVHDファイルはストレージアカウントに残り続けますが、デプロイしている仮想マシンは削除されます。
トライアルアカウントユーザーは、従量課金アカウントに移行することができます。MSDNサブスクリプションアカウントで月間上限に達している場合は、課金サイクルの翌月になり、次月分を使用できるようになったら、既存のVHDから仮想マシンをデプロイすることができます。

重要な補足

90日のトライアルアカウントに提供されているリソースについては、このドキュメントを参照してください。
特定のリソースが使用制限に達すると、サブスクリプションが課金できるようになるまで関連サービスが使用できなくなります。トライアルサブスクリプションの使用量に依存して、90日前に使用量を使い切ることがあります。たとえば、90日トライアルアカウントは、750smallコンピュート時間提供されています。これは1つのSmall仮想マシンを750時間使えることを意味します。つまり、4つのExtra Large仮想マシンを作成した場合、仮想マシンは23時間ちょっとで削除されてしまいます。

2. 仮想マシンを削除した時、VHDファイルが削除されない

Azure仮想マシン用のVHDファイルは、AzureストレージアカウントのBlobにディスクオブジェクトとして登録されていて、仮想マシンを作成したときにOSディスクとしてアタッチされたり、手動でデータディスクとしてアタッチしたりします。
仮想マシンを削除すると、仮想マシンだけが削除されて、ディスクオブジェクトは仮想マシンのアタッチから外れます。しかしディスクオブジェクトは、ストレージアカウントに物理VHDファイルとして残り続け、ストレージの課金対象となります。

仮想マシンに関連するリソースを削除するには、仮想マシンの削除、ディスクの削除、VHDの削除が必要です。

ディスクオブジェクトを削除するには、Windows Azure管理ポータルで、仮想マシンを選択し、DISKタブを選び、削除ボタンから「関連付けられているVHDの削除」と「関連付けられているVHDの保持」の2つのオプションから選択します。
ストレージアカウントのディスクオブジェクトと物理VHDの両方を削除するには、「関連付けられているVHDの削除」を選択します。
ディスクオブジェクトだけを削除し、物理VHDファイルを維持したい場合は、「関連付けられているVHDの保持」を選択します。

image

補足:VHDの削除はまれにエラーになることがあります。問題を解決するにはリースを破壊する必要があります。詳細は、7番を参照してください。

3. Temporary Diskの使用に注意する

重要なデータをDドライブに格納している人もいますが、正しい選択ではありません。DドライブはTemporary Storageなのです。

Temporary Storage(Dドライブ)は、OSディスクやデータディスクのようにWindows Azureストレージでの永続化はされていません。ホストサーバーのアップデートやハードウェア障害で、仮想マシンが別のホストマシンに移動したときに、Dドライブ上にあるでデータは消失します。Dドライブは、一時ログや一時データベース(tempdb)のような、ドライブのTemporary Storageに配置してもいい一時データのみを格納するようにしてください。消失しては困るデータは、一時ディスクへ保存してはいけません。開発者が一時ディスクを使用することにメリットがあるのは、性能です。一時ディスクのI/O性能は、OSディスクやデータディスクよりもIO性能が高いです。その理由は、Windows Azureストレージで永続化されていないからです。

SQL TEMPDB用にDドライブを使用した場合、別のホストに仮想マシンが移動したときに対象フォルダーを再作成する必要があります。再作成しないと、SQLは起動できません。詳細は、Technet wikiの「Change TEMPDB to Temporary Drive on Azure SQL IaaS」を参照してください。

clip_image002clip_image004

clip_image006

</P

4. 既存VHDのアップロード

Windows AzureストレージへVHDをアップロードする方法にはいくつかの選択肢があります。
Azure PowerShell 0.6.9以降のAdd-AzureVHDコマンドレットを使用するか、Azure SDKのCsupload.exe(1.7以降)を使用することをお勧めします。

Azure VM用に使用するVHDをアップロードする場合は、次のことを確認してください。

  • 他の仮想マシンを作成するイメージとして使用するには、仮想マシンはgeneralizeしなければなりません。Windowsの場合、sysprepツールを使用してgeneralizeします。Linuxの場合は、Windows Azure Linux Agent(waagent)でgeneralizeします。generalizeしていないVHDをイメージとしてアップロードした場合、仮想マシンのプロビジョニングに失敗します。
  • 他の仮想マシンのベースに使用せず、一個の仮想マシンのディスクとしてのみ使用する場合は、仮想マシンをgeneralizeしてはいけません。generalizeしたVHDをディスクとしてアップロードした場合、プロビジョニングに失敗します。
  • サードパーティのストレージツールを使用する場合は、page BlobとしてVHDをアップロードしているか確認してください。block BlobでVHDをアップロードしているとプロビジョニングに失敗します。Add-AzureVHDとCsuploadは適切に対応します。
  • 容量固定VHDのみをアップロードしてください。Windows Azure Virtual Machineは容量可変とVHDXフォーマットをサポートしていません。
    補足:CsuploadやAdd-AzureVHDを使用すると、容量可変VHDは自動的に容量固定に変換します。
  • VHDの最大サイズは、127GBです。データディスクは最大1TBで、OSディスクは、127GB以下でなければなりません。
  • 仮想マシンは、DHCPに設定されてなければならず、固定IPを設定してはいけません。Windows Azure Virtual Machinesは固定IPをサポートしていません。

このフォーラムの投稿に、VHDをアップロードする際の一般的な問題について説明されています。また、いくつかのストレージツールの比較については、この記事を参照してください。

5. 仮想マシンを削除しても、前の仮想マシンのDNS名を再利用できない

仮想マシンを削除しても、関連付けられていたCloud Srviceは自動的には削除されず、前の仮想マシンと同じDNS名を再利用することができません。DNS名を再利用するには、明示的に管理ポータルのCloud Serviceページでクラウドサービスを削除するか、Azure PowerShellのRemove-AzureServiceを使用するか、Azure CLIツールでAzureサービスを削除するか、Delete Hosted Service APIを使用します。

Cloud Serviceがわかりにくい?説明します。
Azure仮想マシンを作成すると、仮想マシンに設定したDNS名と共にクラウドサービスが自動的に作成されます。
今のところ、新しいHTML5の管理ポータルでは、1つの仮想マシンしか含んでいない場合、クラウドサービス配下にクラウドサービスが一覧表示されません。クラウドサービスに表示されるのは、複数の仮想マシンを含んでいるか、仮想マシンを含んでいないものだけです。Azure PowerShell Get-AzureServiceコマンドレットを使用することで確認できます。一つのクラウドサービスには最大で50この仮想マシンを登録することができます。

MSの佐々木さんのBlog「仮想マシン作成時に指定する二つの「名前」」も合わせて参照してみてください。

6. リモートデスクトップの接続問題

リモートデスクトップの接続問題は、顧客が遭遇するもっとも一般的な問題で、単純なクライアントのファイヤーウォールの問題からプラットフォームの問題まで原因が多岐にわたります。まず最初にクライアントサイドから問題切り分けを始めるべきです。

  • PsPingPortQryTelnetNmapのようなツールを使用して、リモートデスクトップエンドポイント用のTCPポートにピングを打って、クライアントサイドのファイヤーウォールの問題が無いか確認します。クライアントマシンがRDPエンドポイント(クラウドサービスに最初にデプロイした仮想マシンはポート3389番で、同じ仮想マシンに2つ目以降の仮想マシンをデプロイすると49152~65535の間のランダムな番号になります)とアウトバウンド通信できているかを見ます。
    通信ができない場合は、会社NWのファイヤーウォールで、3389や49152~65535番のポート通信をブロックしている可能性もあるので、自宅やモバイル通信など別のNWで試してみてください。
  • Drew McDaniel さんが、フォーラムに証明書キャッシュやエンドポイント絡みの一般的な問題について投稿しています。
  • 上記手順で問題が解決しない場合、仮想マシンの再起動やサイズ変更を試してみてください。問題が継続する場合は、サポートフォーラムを使用してください。

7. 仮想マシンのアクティベーション

Windows Azure仮想マシン上のOSアクティベーションをする際に、エラーコード0xC004F074で、「A problem occurred when Windows tried to activate」とエラーメッセージが出るかもしれません。

Code:
0xC004F074
Description:
"The software licensing service reported that the computer could not be activated. No key management service could be contacted"

この問題に留意し、解決するために動いております。サーバー上でサービスを動かすにあたり、アクティベーションステータスは影響はありません。

詳細はフォーラムの投稿を参照してください。