Windows Azure 自習書シリーズ - 仮想マシン (IaaS) 編

更新日: 2013 年 10 月 21 日

※ 2013 年 10 月 10 日現在の情報です。仕様については変更される可能性があります。


概要

これまで Windows Azure ではクラウド サービスや SQL データベースといった PaaS としての機能を提供してきましたが、Windows Azure 仮想マシンでは Hyper-V をベースとした IaaS としての機能を提供します。このサービスを利用した場合、Windows Server だけでなく Linux の環境を、そのまま Windows Azure 上に展開することが出来るため、既存のコードを変更せずにアプリケーションやインフラストラクチャを Windows Azure にそのまま移行できます。この自習書では機能や特徴を学習することによって網羅し、ステッブバイステップで使い方をマスターすることが出来ます。

Web ページで学習する | ドキュメントで学習する (PDF 形式/3.74 MB)

Note:

この文章に含まれる情報は、公表の日付の時点での Microsoft Corporation の考え方を表しています。市場の変化に応える必要があるため、Microsoft は記載されている内容を約束しているわけではありません。この文書の内容は印刷後も正しいとは保障できません。この文章は情報の提供のみを目的としています。

Microsoft、SQL Server、Visual Studio、Windows、Windows XP、Windows Server、Windows Azure は Microsoft Corporation の米国およびその他の国における登録商標です。
その他、記載されている会社名および製品名は、各社の商標または登録商標です。
© Copyright 2013 Microsoft Corporation. All rights reserved.


目次

STEP 1. Windows Azure の概要

1.1 Windows Azure 無料評価版
1.2 Windows Azure 仮想マシンの概要
1.3 Windows Azure 仮想マシンに関連する機能と特徴

STEP 2. Windows Azure 仮想マシンの展開

2.1 Windows Azure 仮想マシンの展開パターン
2.2 プラットフォーム イメージを用いた展開
2.3 マイ イメージを用いた展開
2.4 仮想マシンのアップロード

STEP 3. その他の考慮事項

3.1 データ ディスクの追加とホスト キャッシュ
3.2 エンドポイントと負荷分散セットと ACL
3.3 仮想マシンの監視
3.4 IP アドレスと仮想ネットワーク
3.5 Windows Azure ストレージの操作
3.6 仮想マシンでサポートされていない OS コンポーネント
3.7 SQL Server を使う際のポイント

STEP 1. Windows Azure の概要

この STEP では、Windows Azure の「仮想マシン」で提供される機能の概要を説明します。

この STEP では、次のことを学習します。

  • Windows Azure の契約
  • Windows Azure の全体像
  • Windows Azure 仮想マシンに関連する機能と特徴

1.1 Windows Azure 無料評価版

Windows Azure は無料利用できる評価版を提供しています。これは機能やリソース使用量に制限があるサブスクリプション契約ですが、必要に応じて従量課金制に変更することも出来ます。

Windows Azure の無料評価版 

Windows Azure サブスクリプション申し込み Step by Step 

1.2 Windows Azure 仮想マシンの概要

Windows Azure は非常に多くの機能を提供していますが、ここでは IaaS (Infrastructure as a Service) としての機能を提供する仮想マシンの概要を説明します。

図: 世界規模のクラウド基盤 (サーバー/ネットワーク/データ センター)

Windows Azure ではクラウド サービスや SQL データベースといった PaaS としての機能も提供していますが、Windows Azure 仮想マシンでは Hyper-V をベースとした IaaS としての機能を提供します。Windows Server だけでなく Linux の環境をそのままパブリック クラウドである Windows Azure 上に展開することが出来るため、既存のコードを変更せずにアプリケーションやインフラストラクチャをそのまま Windows Azure に移行できます。その結果、クラウドへのアプリケーションの移行が高速化し、時間と費用の節約が可能になります。 SharePoint、SQL Server、Active Directory といったマイクロソフトのサーバー製品をそのまま Windows Azure 仮想マシンで動作させることも可能です。 (サポート対象のマイクロソフト製品) また、リモートデスクトップSSH でシステムを操作、管理することが出来るため、既存のスキルをそのまま活用することができます。Windows Azure 仮想マシンの用途は非常に多岐にわたることが想定されますが、たとえば「既存の社内サーバーをそのまま移行」、「検証テスト環境」、「自社データセンター被災時の災害対策」などが考えられます。

PaaS として提供しているクラウド サービスや、Web サイトと同様に、仮想マシンでは構築するシステムに応じて適切なスペック (サイズ) を選択できるようになっています。

仮想マシンとクラウド サービスのサイズ (英語)

インスタンス サイズが大きいほどスペックが高くなり、システムの性能向上につながります。指定したスペックは仮想マシン上でサービスを展開した後でも、管理ポータルから簡単に変更することが出来ます。

1.3 Windows Azure 仮想マシンに関連する機能と特徴

Windows Azure 仮想マシンを用いて、単純な Windows Server や Linux の環境を構築することは非常に簡単です (管理ポータルから幾つかの項目を入力すれば、10 分程度で仮想マシンを作成できます)。
ただし、Windows Azure 特有の機能や特徴を理解することで、より強固で信頼できるシステムを構築することができます。ここではそのポイントを解説します。

◆ VHD ファイルの堅牢性

仮想マシンの OS ディスクデータ ディスクの実体は、VHD ファイル (Hyper-V が使うファイル フォーマット) であり、BLOB ストレージに永続化されます。BLOB ストレージの特徴として、クライアント (この場合、仮想マシン) からの書き込み要求があった場合、BLOB ストレージ側では 3 つの複製での更新が完了して初めて「書き込み成功」が返されます。つまり、『仮想マシン』のディスクは通常のシンプル ボリュームであっても、3 本のディスクをミラーリングした場合と同等の堅牢性を持つことになります。さらに、災害対策の拠点間複製 (geo-replication) もサポートしているため、合計 6 つの複製を保持することもできます。拠点間の複製に関してはパフォーマンスの観点から非同期で通信します。

BLOB ストレージ に書き込まれたデータは、常に 3 つの複製を維持 (geo-replication なし)

図: BLOB ストレージ に書き込まれたデータは、常に 3 つの複製を維持 (geo-replication なし)

◆ ストレージ関連の構成要素 (イメージ、ディスク、VHD)

Windows Azure 仮想マシンでは、必ず Windows や Linux のシステム ドライブにあたる OS ディスクが必要です。また、前述したとおり、オプションで (XL サイズで最大 16 本の) データ ディスクを接続することが出来ます。ディスクは論理的な概念であって、BLOB ストレージに格納された VHD ファイルそのものではありません。ディスクは何らかの VHD に必ず 1:1 対応した名札のようなものです。また、イメージは、Generalize 済みの特殊なディスクのことを表します。イメージはディスクと違ってそのまま使われるわけではなく、複製されて OS ディスクとなるテンプレートです。

イメージ、ディスク、VHD

図: ストレージ関連の構成要素 (イメージ、ディスク、VHD)

Windows Azure 仮想マシンでは、OS ディスクやデータ ディスクの実体 (VHD ファイル) が、インスタンスが動作している物理サーバー上ではなく BLOB ストレージに保存されます。一方インスタンスが動作している物理サーバー上に Temporary Storage (Windows Server の場合は、D ドライブ) と呼ばれる特別な領域が確保されます。このストレージは主にページ ファイル用に使用され、パフォーマンスが予測できる保証はありません。仮想マシンのサイズ変更などの管理タスクを行うと、D: ドライブはリセットされます。さらに、仮想マシンがフェール オーバーするときに、データが消去されます。
このような特徴を理解した上で一時領域として利用することを推奨します。

図: インスタンスが動作している物理サーバー上に作られた Temporary Storage 領域

◆ 仮想ディスクのホスト キャッシュ

VHD ファイルは BLOB ストレージで永続化されるため、通常のローカル ディスクへの読み書きに比べて、パフォーマンスが落ちる可能性があります。そのため Windows Azure 仮想マシンには 、BLOB ストレージへ書き込む前段にキャッシュを挟んで、読み書きを効率化するための機能が備わっています。
キャッシュには次のような設定が可能です。

ディスク種別 既定値 設定可能値
OS ディスク ReadWrite ReadOnly / ReadWrite
データ ディスク None None / ReadOnly / ReadWrite

具体的な設定方法は『3.1 データ ディスクの追加とホスト キャッシュ』で説明します。

◆ アフィニティ グループ (affinity group)

Windows Azure インフラストラクチャは巨大なデータ センターで構築されているため、複数の仮想マシンやストレージで通信が発生するような構成では、それぞれの配置場所によってネットワーク レイテンシー (遅延) が発生する可能性を考慮すべきです。Windows Azure ではアフィニティ グループを指定することで、仮想マシンやストレージ (など) の配置をある程度制御することが出来ます。
たとえば、2 台の仮想マシンを同一のアフィニティ グループ "AG1" に配置した場合を考えます。ファブリック コントローラーは、この 2 台が同一クラスタ内に配置されるように配置の調整を行います。その結果、2 台の仮想マシンはネットワーク的に近く配置され、通信が高速に行えるようになります。

2 つの仮想マシンにアフィニティ グループ "AG1" を指定した場合

※FC: ファブリック コントローラー

具体的な設定方法は『2.1 Windows Azure 仮想マシンの展開パターン』で説明します。

管理ポータルでのアフィニティ グループの作成 

◆ 障害ドメイン (fault domain) と可用性セット (availability set)

アフィニティ グループを指定した場合、クラスタに障害が発生すると 2 台が共倒れになるのではないかと疑問に思われるかもしれません。これは、可用性セットを指定して障害ドメインを分離することで解決できます。クラスタ内の各ラックは、電源やネットワーク装置が冗長化され、これら装置の障害が他のラックに影響を及ぼさないように設計されています。このくくりを障害ドメイン (fault domain) と呼びます。
たとえば、2 台の仮想マシンを同一の可用性セット "AS1" でくくります。この場合、2 台が異なる障害ドメインに配置されるように、ファブリック コントローラーが調整を行います。結果、いずれかのラック内で障害が発生しても、可用性セット内の別の仮想マシンは生き残ることができます。

図: 2 台の異なる仮想マシンに配置された同一の可用性セット "AS1"

※FC: ファブリック コントローラー

具体的な設定方法は『2.1 Windows Azure 仮想マシンの展開パターン』で説明します。

仮想マシンの可用性管理 

◆ エンドポイントと負荷分散セット

Windows Azure 仮想マシンを立ち上げの際、既定で開放されるポート限定 (リモート デスクトップ、SSH など) されています。(セキュリティ強化のため、設定されているポート番号はランダムな値)。そのため、例えば Web アプリケーションをホストする場合には、HTTP や HTTPS のポートを開放する設定が必要です。また、ロード バランサーによりトラフィックを複数の仮想マシンに分散するためには負荷分散セットを作成します。

具体的な設定方法は『3.2 エンドポイントと負荷分散セットと ACL』で説明します。

仮想マシンの負荷分散 

ページのトップへ

STEP 2. Windows Azure 仮想マシンの展開

この STEP では、Windows Azure の「仮想マシン」の展開について、その具体的な方法を説明します。

この STEP では、次のことを学習します。

  • Windows Azure の仮想マシンの展開パターン
  • VHD ファイルを Windows Azure へアップロード

2.1 Windows Azure 仮想マシンの展開パターン

Windows Azure 仮想マシンでは、さまざまな仮想マシンの展開パターンをサポートしています。最も単純な方法は標準のイメージ テンプレートを提供しているプラットフォーム イメージから仮想マシンを作成する方法です。この場合、Windows Server や Cent OS などの複数のイメージから必要なものを選択した後、パスワードやサイズ (スペック) などいくつかの項目を指定するだけで、簡単にインスタンスを作成できます。他にも Generalize した OS イメージをマイ イメージとして登録して、それをカスタム テンプレートとして利用する方法や、ローカル環境で作成した VHD をアップロードして Windows Azure 仮想マシンのイメージとして利用するなど、さまざまな方法を提供しています。

仮想マシンの展開パターン

それでは、各展開パターンの具体的な利用方法を説明します。

◆ 事前準備

実際に試しながら読み進めることをお勧めします。アカウントをお持ちであれば、Windows Azure 管理ポータルにアクセスして、仮想マシンを作成できることを確認してください。

Windows Azure 管理ポータル 

図: 仮想マシン タブ

アフィニティ グループを事前に定義しておきます。「設定」の「アフィニティ グループ」から「アフィニティ グループの追加」を選択します。

図: アフィニティ グループを追加

フォームに値を入力してアフィニティ グループの詳細を指定します。ここでは東アジアのデータ センターに "ag1" という名前のアフィニティ グループを作成しています。

図: アフィニティ グループの詳細指定ダイアログ

2.2 プラットフォーム イメージを用いた展開

最も単純なプラットフォーム イメージから仮想マシンを作成する方法を説明します。
最初に、Windows Azure 管理ポータルで「仮想マシンを作成する」を選択した後、「ギャラリーから」を選択します。

図: 仮想マシンのギャラリー

その後、ギャラリーに選択可能な OS イメージが表示されます。尚、デフォルトはメニューの「すべて」が選択状態ですが、「プラットフォーム イメージ」でフィルタリングすると、Windows Azure が提供する標準のイメージのみが表示されます。
ここでは "Windows Server 2012 Datacenter" を選択します。

図: 仮想マシンのオペレーティング システムの選択

尚、上図に表示されているイメージは執筆時 (2013 年 10 月) に提供されているものです。Windows Azure が標準で提供するイメージは継続的に変更される可能性があります

Windows Server 2012 Datacenter を選択すると次の画面が表示されます。ここでは仮想マシンの構成 (仮想マシンのバージョンや名称、サイズなど) を指定します。

図: 仮想マシンの構成を指定

次に DNS 名やデータ センターの場所など指定します。

図: 仮想マシン モードを指定

  • クラウド サービスは仮想マシンを配置する「受け皿」です。"[指定したクラウド サービス DNS 名].cloudapp.net" という名前とパブリック IP アドレスが付与されます。仮想マシンを作成すると、そのマシンを含めるクラウド サービスが自動的に作成されます。同じクラウド サービス内に複数の仮想マシンを作成すると、仮想マシンの相互通信、仮想マシン間での負荷分散、仮想マシンの高可用性を実現できます。
  • 地域/アフィニティ グループ/仮想ネットワークでは仮想マシンの配置場所を指定します。ここでは事前に作成したアフィニティ グループ (ag1) を指定しています。
  • ストレージ アカウントには「自動的に生成されたストレージ アカウントを使用」を設定しています。自身で作成したアカウントを用いることもできますが、その場合はデータ センターのロケーションに注意してください。
  • 可用性セット名で可用性セットを設定します。ここでは "as1" という名前の可用性セットを作成しています。

次にエンドポイント (公開するポート) を指定します。Windows の場合、デフォルトでリモート デスクトップと PowerShell (Linux の場合 SSH) のエンドポイントが設定してあります。必要に応じて他のポートを開放することもできます。

図: 仮想マシンのオプションを指定

以上で設定は完了です。仮想マシンの作成を開始すると、約 10 分程度でインスタンスが起動します。起動が完了したら [接続] をクリックしてリモート デスクトップで接続することができます。

図: 仮想マシンにリモート デスクトップで接続

尚、現時点 (2013 年 10 月) ではプラットフォーム イメージに英語版 OS しか提供されていないため、日本語化が必要であれば、別途言語パックをインストールする必要があります。
起動した Windows Server にリモート デスクトップ接続してエクスプローラーでドライブを確認すると、OS ドライブ (C:) の他に前述した一時ストレージである Temporary Storage (D:) が作成されていることが分かります。

図: 一時ストレージが作成されていることを確認

参考情報
Windows Azure で Windows Server を実行する仮想マシンの作成 
Linux を実行する仮想マシンの作成 

2.3 マイ イメージを用いた展開

プラットフォーム イメージが Windows Azure が標準で提供しているイメージなのに対して、マイ イメージは自身で作成したカスタム イメージをギャラリーに登録することが可能です。この方法は、カスタマイズした同一の仮想マシンを複数作成するシナリオで便利です。例えば SaaS 型のサービスを提供している会社であれば、ユーザー数に応じて同一の仮想マシンを複数起動することになるでしょう。また、Web サービスを提供している会社でも、トラフィックに応じて同一の Web サーバーを複数起動して負荷分散を行うかもしれません。

ここからは、実際にマイ イメージにカスタム イメージを登録して、それをもとに仮想マシンを作成する手順を確認します。

先ほど作成した仮想マシンをそのまま使って、カスタム イメージを作成します。リモート デスクトップ接続した Windows Server 2012 で "C:\Windows\System32\Sysprep\sysprep.exe" を実行します。System Preparation Tool が開いたら Generalize をチェックして、Shutdown OptionShoutdown を指定します。

図: System Preparation Tool を起動

管理ポータルから仮想マシンをシャットダウンした後、取り込みを実行します。

図: 取り込み

イメージの名前を入力し「仮想マシンで Sysprep を実行しました」をチェックします。

図: 仮想マシンからイメージをキャプチャ

イメージのキャプチャが完了すると、作成したカスタム イメージを利用して、プラットフォーム イメージと同じ手順で仮想マシンを生成することが出来ます。
下図では、プラットフォーム イメージではなくマイ イメージでフィルタリングしています。

図: 仮想マシン イメージの選択

参考情報
Linux を実行する仮想マシンのイメージをキャプチャする方法 
Windows Server 2008 R2 を実行する仮想マシンのイメージをキャプチャする方法 

2.4 仮想マシンのアップロード

ローカル環境で作成した VHD をアップロードして仮想マシンのインスタンスを作成することや、マイ イメージに登録することが出来ます。アップロードには Windows Azure PowerShell を利用します。次のサイトから Windows Azure PowerShell を入手してインストールしてください。
Windows Azure のダウンロード: Windows Azure SDK およびツール

ここでは Windows Azure PowerShell のコマンド用いた BLOB ストレージへのアップロード手順のみを解説します。尚、Windows Azure PowerShell は便利なコマンドを非常に多く提供しています。その一部を下表に記載します。

Windows Azure PowerShell (英語)

コマンド 機能
Add-AzureVHD VHD ファイルをアップロード
Add-AzureDisk VHD ファイルからディスクを作成
Add-AzureDataDisk VHD ファイルからデータ ディスクの追加
Add-AzureVMImage VHD ファイルからイメージを作成

Windows Azure BLOB ストレージに VHD ファイルをアップロードするには、幾つかのステップを実施する必要があります。ここでは、具体的な手順をご紹介します。

  • VHD ファイルのアップロード先になるストレージ サービスを、Windows Azure 管理ポータルで作成します。ここでは URL に "sqlevvhd"、アフィニティ グループに "ag1"、地域レプリケーションに "on" を指定しています。つまり複数のデータセンターを跨ったデータの堅牢性を保ちます。
    図: Windows Azure 管理ポータルでストレージ サービスを作成
  • 作成したストレージ サービスBLOB が VHD ファイルの格納場所です。
    図: ストレージ サービスの BLOB
  • Hyper-V マネージャーを利用してアップロード対象の VHD を作成します。その際、次の注意点があります。
    図: 仮想ハード ディスクの編集ウィザード
    • 現時点 (2013 年 10 月) では Windows Azure は、固定 IP をサポートしていないため、アップロードする OS には DHCP を設定してください。またリモート デスクトップ接続を許可してください。
    • VHD の最大サイズは 127 GB です。
    • 容量固定 VHD のみをアップロードしてください。容量可変 VHD と VHDX フォーマットはサポートされていません。
  • Windows Azure に VHD をアップロードするためには、事前に発行設定ファイルを取得する必要があります。Windows Azure PowerShell で次のコマンドを実行してください。
    PS C:\> Get-AzurePublishSettingsFile
    もしくは、ブラウザーから次のアドレスにアクセスして、発行設定ファイルを取得することもできます。
    発行プロファイルのダウンロード (PublishSettings 形式)
  • Windows Azure PowerShell で次のコマンドを実行して取得した発行設定ファイル (.publishsettings) をインポートします。
    PS C:\> Import-AzurePublishSettingsFile -PublishSettingsFile $filename
    コマンド サンプル
    PS C:\> Import-AzurePublishSettingsFile "C:\Users\ms\Windows Azure MSDN - Visual Studio Ultimate-3-12-2013-credentials.publishsettings"
  • Windows Azure PowerShell で次のコマンドを実行して、発行設定ファイルのインポートに成功したか確認します。
    PS C:\> Get-AzureSubscription
  • Windows Azure PowerShell で次のコマンドを実行して、VHD ファイルを Windows Azure BLOB ストレージにアップロードします。$destosvhd には「事前に作成した Windows Azure BLOB ストレージの URL + 任意のコンテナ名 + 任意の VHD ファイル名」を指定します。
    PS C:\> Add-AzureVhd -Destination $desturi -LocalFilePath $localvhd
    コマンド サンプル
    PS C:\> Add-AzureVhd -Destination “http://sqlevvhd.blob.core.windows.net/vhds/ws2012dc.vhd” -LocalFilePath “C:\vhd\win2012img.vhd”
    コマンド リファレンス Add-AzureVhd (英語) 
  • BLOB ストレージにアップロードした VHD ファイルディスク関連付けを、Windows Azure 管理ポータルで行います。仮想マシンの「ディスク」タブを選択して、「作成」ボタンを押します。尚、Sysprep した VHD であれば「イメージ」タブからイメージを作成することが出来ます。
    図: Windows Azure 管理ポータル のディスク タブから「作成」を選択する
    VHD とディスクの関連付けを行うための画面が表示されます。ここではディスクの名前に "sqlev1"、また VHD の URL には、先ほどアップロード先として指定した BLOB ストレージの URL を指定しています。また、この VHD には OS が含まれているためチェック ボックス "on" にしていますが、仮に OS を含まないデータ ディスクであれば "off" にします。オペレーティング システム ファミリには "Windows" を指定しています。OS イメージが Linux であれば、"Linux" を指定します。
    図: VHD からディスクを作成する
    仮想マシンの新規作成から、「マイ ディスク」を選択すると、手順の中で作成したディスクを選択できることが分かります。以降はプラットフォーム イメージと同じ手順で仮想マシンのインスタンスを作成することが出来ます。
    図: 仮想マシンのオペレーティング システムの選択

参考情報
Creating and Uploading a Virtual Hard Disk that Contains the Windows Server Operating System (英語) 
Creating and Uploading a Virtual Hard Disk that Contains the Linux Operating System (英語) 

ページのトップへ

STEP 3. その他の考慮事項

この STEP では、Windows Azure 仮想マシンを利用する上でおさえておくと便利な機能の使い方を説明します。

この STEP では、次のことを学習します。

  • データ ディスクの追加とホスト キャッシュ
  • エンドポイントと負荷分散セットと ACL
  • 仮想マシンの監視
  • IP アドレスと仮想ネットワーク
  • Windows Azure ストレージの操作
  • OS コンポーネントの制限事項
  • SQL Server を使う際のポイント

3.1 データ ディスクの追加とホスト キャッシュ

Windows Azure 仮想マシンでは、最大 1 TB のディスクを複数本追加することができます。ここでは、実際に仮想マシンにディスクを追加する方法を解説します。

Windows Azure 管理ポータルで仮想マシンを選択して、「ディスクの接続」をクリックします。今回は「空のディスクの接続」を実行しますが、既存のディスクを接続することも可能です。

図: Windows Azure 管理ポータルで「ディスクの接続」を実行

表示されたページでディスク サイズを指定します。また、ここで前述したホスト キャッシュを指定することが出来ます。尚、OS ディスクは既定で「読み取り/書き込み」キャッシュが有効に設定されています。

図: [空のディスクを仮想マシンに接続します] ダイアログ

ディスク接続が完了すると、Windows Server であれば、ディスク管理画面に「未割り当て」の領域として表示されます。

図: [ディスクの管理] 画面

参考情報
データ ディスクを仮想マシンに接続する方法 

3.2 エンドポイントと負荷分散セットと ACL

仮想マシンとの外部通信はエンドポイントを介して発生します。エンドポイントはトラフィックの負荷分散、仮想マシン接続、RDP や SSH など、さまざまな目的で使用されます。特定のポートに関連付けられ、特定の通信プロトコルが割り当てられているエンドポイントを定義します。エンドポイントには、TCP または UDP プロトコルを割り当てることができます (TCP プロトコルには、HTTP および HTTPS トラフィックが含まれます)。仮想マシンに定義された各エンドポイントに、通信用のパブリック ポートプライベート ポートが割り当てられています。プライベート ポートは、仮想マシンで通信ルールを設定する目的で定義されます。パブリック ポートは、外部リソースから仮想マシンと通信するときに Windows Azure によって使用されます。

負荷分散を設定するには対象のエンドポイントに対して負荷分散セットを設定します。これにより、ネットワーク トラフィックのラウンド ロビンの負荷分散が、クラウド サービスのパブリックに定義されたポートに提供されます。負荷分散されるエンドポイントは、クラウド サービスに含まれるすべての仮想マシンで使用される特定の TCP または UDP エンドポイントです。次のイメージは、3 台の仮想マシンで共有されている負荷分散されたエンドポイントを示しています。このエンドポイントでは、パブリック ポートおよびプライベート ポートとして 80 が使用されます。

図: 3 台の仮想マシンで共有されている負荷分散されたエンドポイント

エンドポイントの設定は Windows Azure 管理ポータルで仮想マシンを選択した後、「エンドポイント」タブから追加を行います。

図: Windows Azure 管理ポータルで「エンドポイント」を追加する

表示された画面でエンドポイントの種類を選択します。ここではスタンドアロン エンドポイントの追加を選んでいます。事前に作成された負荷分散セットが存在しない場合は既存の負荷分散セットにエンドポイントを追加するは選択できません。

図: 仮想マシンにエンドポイントを追加します

名前プロトコル、ポート番号を指定すると、指定したポートが開放されます。ここでは HTTP ポートを開放しています。負荷分散セットの作成を選択することで新規に負荷分散セットを作成することができます。

図: エンドポイントの詳細を指定します

負荷分散セットの構成負荷分散セット名プローブの指定を行います。負荷分散されたエンドポイントに負荷分散プローブを追加することで、仮想マシンの死活を判断する独自の方法をオプションで定義できます。この設定で Windows Azure は仮想マシンからの応答を 15 秒ごとにプローブし、2 回応答がないと、そのマシンを負荷分散のローテーションから外します。

図: 負荷分散セットの構成

エンドポイント、負荷分散セットの定義が完了しました。作成した負荷分散セットは同一クラウド サービスの他の仮想マシンに対して設定することが出来ます。

ここで設定したエンドポイント、負荷分散セットに対してはデフォルトでインターネット上のどこからの接続でも受け入れてしまいますが、アクセス制御を設定することで「社内ネットワークからの接続だけ許可する」といった制御が可能です。

現時点 (2013 年 10 月) は管理ポータルから GUI で設定することは出来ないため、Windows Azure PowerShell を利用します。

  • ACL サンプル (エンドポイント)
    リモートデスクトップ接続できるクライアントを IP 制限

    $acl = New-AzureAclConfig

    Set-AzureAclConfig -AddRule Permit -RemoteSubnet "10.0.0.0/8" -Order 1 -ACL $acl -Description "Lockdown RDP"

    Get-AzureVM -ServiceName “MyService” -Name “MyVM” | Set-AzureEndpoint -Name "Remote Desktop" -PublicPort 61190 -LocalPort 3389 -Protocol "tcp" -ACL $acl | Update-AzureVM

  • ACL サンプル (負荷分散セット)
    HTTP 接続できるクライアントを IP 制限

    $acl = New-AzureAclConfig

    Set-AzureAclConfig -AddRule Permit -RemoteSubnet "10.0.0.0/8" -Order 1 -ACL $acl -Description "Lockdown HTTP"

    Get-AzureVM -ServiceName “MyService” -Name “MyVM” | Set-AzureLoadBalancedEndpoint -LBSetName "LBset" -Protocol tcp -LocalPort 80 -PublicPort 80 -ProbeProtocolTCP -ProbePort 8080 -ACL $acl

コマンド リファレンス
Set-AzureAclConfig (英語) 
Set-AzureEndpoint (英語) 
Set-AzureLoadBalancedEndpoint 

参考情報
仮想マシンの負荷分散 

3.3 仮想マシンの監視

仮想マシンには主要なパフォーマンス メトリックを監視するための機能が搭載されています。既定では、パフォーマンス カウンターを使用して仮想マシンに対する最小限の監視が行われ、管理ポータルでグラフィカルに確認することが出来ます。

図: 管理ポータル

管理ポータルから監視するメトリックスやアラート ルールを作成することが可能です。

図: 管理ポータルから監視するメトリックスやアラート ルールを作成する

HTTP または HTTPS エンドポイントを監視するにはダッシュボードから Web エンドポイントの監視の構成を行います。

図: Webエンドポイントの監視の構成

Web エンドポイントの監視を構成すると、HTTP または HTTPS エンドポイントの可用性を地理的に分散した場所から監視できます。最大 3 か所の地理的に分散した場所からエンドポイントをテストできます。

図: 最大 3 か所の地理的に分散した場所からエンドポイントをテストできます

管理ポータルの監視からエンドポイントに対するメトリックを追加できます。

図: 監視するメトリックの選択

選択した各メトリックスに対してアラート ルールを定義できます。ここではシカゴからの応答時間の平均が 30 秒以上かかった場合にサービスの管理者/共同管理者、及び指定したアドレスに対してアラートを通知します。

 図: 通知の条件の定義

アラートが発生すると次のようなメールが届きます。

図: 通知メールのサンプル

エンドポイントの監視状況はグラフや、メトリックスの詳細から確認できます。

図: WEB エンドポイントの状態

尚、アラートに関しては Windows Azure 管理サービスから一括で確認することが出来ます。

図: 管理サービス画面

3.4 IP アドレスと仮想ネットワーク

仮想マシンにはパブリック仮想 IP (VIP) アドレス内部 IP アドレスが自動的に割り当てられます。この IP アドレスは管理ポータルのダッシュボードから確認できます。VIP はクラウド サービスと対になっているため、同じクラウド サービスに複数の仮想マシンを作成すると、全ての仮想マシンに同一の VIP が設定されます。 ただし内部 IP アドレスは全ての仮想マシンで異なる値が設定されます。

  • 内部 IP アドレスの特徴

    同じクラウド サービス内、もしくは仮想ネットワークを設定することで、内部 IP アドレスを用いて仮想マシン間の相互通信が可能です。この IP は管理ポータルや PowerShell でシャットダウン「VM のステータス: 停止済み (割り当て解除済み)」するか、仮想マシンを削除すると解放されます。

    内部 IP アドレスの割り当ては、Windows Azure 仮想ネットワークサブネットを定義して仮想マシンに設定することで、ある程度コントロールすることが出来ます。ただし現時点 (2013 年10 月) では自分で特定の IP アドレスを指定できません。指定した IP レンジで起動順に IP アドレスが割り振られ仕様になっています。

    例えば Subnet (10.0.1.0/27) を指定して、仮想マシンを vm1 ~ vm3 まで順番に起動すると次のように IP が割り当てられます。

    図: vnet1 の仮想ネットワークとリソースの状態

  • パブリック仮想 IP (VIP) アドレスの特徴

    VIP は内部 IP とは異なり外部からアクセスするためのパブリック IP です。仮想ネットワークを設定できないため自動的に割り振られる IP アドレスを利用します。クラウド サービス内に複数の仮想マシンが存在する場合、全ての仮想マシンを「停止済み (割り当て解除済み)」、もしくは削除した場合に VIP は解放されます。現時点 (2013 年10 月) では自分で特定の IP アドレスを指定することは出来ません。

参考情報
Windows Azure 仮想ネットワークの概要 
仮想ネットワークへの仮想マシンの追加 
Windows Azure 仮想ネットワーク VPN 接続検証済み ルーター一覧 

3.5 Windows Azure ストレージの操作

ローカル環境から仮想マシンに対して FTP や SMB などのプロトコルで直接ファイルをアップロードすることは可能ですが、Windows Azure ストレージを経由することでより高速で信頼性の高いファイル転送が可能なケースがあります。Windows Azure ストレージは REST API が公開されているため様々なプラットフォームやプログラミング言語を使って操作することも出来ますが、ここでは容易に利用するための便利なツールをご紹介します。

  • GUI ツール

    Windows Azure ストレージに対するファイルのアップロードやダウンロード、削除、コピーなどをエクスプローラー ライクな GUI で簡単に操作することが出来ます。

    Azure Storage Explorer (英語) 

    図: Azure Storage Explorer

    CloudBerry Explorer (英語) 

    図: CloudBerry Explorer

    CloudXplorer (英語) 

    図: CloudXplorer

    Windows Azure 管理ポータル
    管理ポータルからは BLOB データのダウンロード機能が提供されています。

    図: Windows Azure 管理ポータル

  • CUI ツール

    AzCopy (英語) 

    執筆時 (2013 年 10 月 10 日) Windows Azure SDK に含まれていないため GitHub から AzCopy.zip をダウンロードして適当なフォルダに展開してください。

    Windows のファイル システム <-> Windows Azure BLOB ストレージ】、もしくは Windows Azure BLOB ストレージ <-> Windows Azure BLOB ストレージでファイルをコピーすることが出来ます。

    コマンドの書式

    azcopy {コピー元フォルダ(コンテナ)} {コピー先フォルダ(コンテナ)} {コピー対象ファイル名(のパターン)} [/sourceKey:コピー元ストレージのアクセスキー] [/destKey:コピー先ストレージのアクセスキー] [/blobtype:<page|block>]

    サンプル(Windows のファイル システム -> Windows Azure  BLOB ストレージ)

    azcopy C:\temp http://deststorage.blob.core.windows.net/vhds win2013.vhd /destKey:aV4IMcXuQ6FDDvfo・・・・

    サンプル(Windows Azure  BLOB ストレージ -> Windows Azure  BLOB ストレージ)

    azcopy http://sourcestorage.blob.core.windows.net/vhds
    http://deststorage.blob.core.windows.net/images win2013.vhd
    /sourceKey:aV4IMcXuQ6FDDv・・・・・ /destKey:WbnvHpGivoZ/e5QpL・・・・・

3.6 仮想マシンでサポートされていない OS コンポーネント

Windows Azure のインフラストラクチャではパブリック クラウドに最適化されたアーキテクチャが採用されているため、現時点 (2013 月 10 日) では未サポートの OS コンポーネントが存在します。

未サポートの OS コンポーネント

図: 未サポートのOSコンポーネント

3.7 SQL Server を使う際のポイント

Windows Azure 仮想マシンではオンプレミスの SQL Server をそのまま利用することが出来ます。そのため SQL Server が持つ高度な機能 (可用性、BI、暗号化など) を活用することが可能であり、また、オンプレミスで開発したアプリケーションを修正することなく、そのまま Windows Azure で動作させることができます。

ただし、いくつか覚えておくべきポイントがあるため、ここではそれを説明します。

◆ SQL Server と SQL データベースの違い

Windows Azure には SQL データベースと呼ばれる SQL Server ベースの PaaS 型サービスが提供されています。これは自動フェールオーバーを含めた運用管理の仕組みが標準で提供されることや、スケール アウト、コスト削減といったメリットがある反面、現時点 (2013 年 10 月) では、いくつかの制限事項があります。

制限事項

  • 標準日付時刻が UTC
  • テーブルに ”クラスタ化インデックス” が必須
  • 自動的に接続が切断されることがあるため、リトライ処理を必要とするケースがある
  • 未サポートのSQL Server機能がある
    SSAS、SSIS、分散トランザクション、分散クエリ、SQL CLR、パーティション、バックアップ/リストアなどはサポートされていない

ただし、このような制限も時間の経過と共に無くなっていく傾向にあります。最新の制限事項については次のサイトを確認してください。

SQL Server Feature Limitations (Windows Azure SQL Database)

◆ パフォーマンスに関するベスト プラクティス

基本的に、オンプレミスの SQL Server と同様のパフォーマンス チューニングは効果があります。ただし、永続化処理の裏側で BLOB ストレージを使うため、いくつか注意すべきポイントがあります。

  • 複数のディスクを利用してください
    ディスク I/O がボトルネックになる可能性がオンプレミスより高いため、データ ディスクを複数使ってストレージに対するアクセスを分散させてください。
  • データ ファイル、ログ ファイルはデータ ディスクを追加して新しく割り当てたドライブに配置することを推奨します (OSドライブ (C:) は推奨しません)。その際、データ ファイル、ログ ファイルを異なるドライブに配置するとパフォーマンスが向上する可能性があります。
  • キャッシュを使わないでください。
    SQL Server ではデータの一貫性確保やパフォーマンスを最適化するため、ディスクの Write キャッシュを使用しないでください。OS ディスクを使用する場合は、Write キャッシュを無効にしてください。
  • Temporary Storage (D:)tempdb を含むシステム データベース、ユーザー データベースを置かないでください。データの一貫性やパフォーマンスに悪影響を与える可能性があります。
  • データ圧縮機能を活用してください。
    ディスク I/O を削減するためデータベースのデータ圧縮機能を利用してください。
  • 高可用性に関する推奨
    同期モードを利用する場合、プライマリとレプリカ間のレイテンシーを考慮してください。(同一のアフィニティ グループ、可用性セットを検討してください)

参考情報
Windows Azure での SQL Server 仮想マシンのプロビジョニング 
Performance Guidance for SQL Server in Windows Azure Virtual Machines (英語) 

ページのトップへ