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)
目次STEP 1. Windows Azure の概要 1.1 Windows Azure 無料評価版 STEP 2. Windows Azure 仮想マシンの展開 2.1 Windows Azure 仮想マシンの展開パターン STEP 3. その他の考慮事項 3.1 データ ディスクの追加とホスト キャッシュ STEP 1. Windows Azure の概要この STEP では、Windows Azure の「仮想マシン」で提供される機能の概要を説明します。 この STEP では、次のことを学習します。
1.1 Windows Azure 無料評価版Windows Azure は無料利用できる評価版を提供しています。これは機能やリソース使用量に制限があるサブスクリプション契約ですが、必要に応じて従量課金制に変更することも出来ます。 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 分程度で仮想マシンを作成できます)。 ◆ VHD ファイルの堅牢性仮想マシンの OS ディスクやデータ ディスクの実体は、VHD ファイル (Hyper-V が使うファイル フォーマット) であり、BLOB ストレージに永続化されます。BLOB ストレージの特徴として、クライアント (この場合、仮想マシン) からの書き込み要求があった場合、BLOB ストレージ側では 3 つの複製での更新が完了して初めて「書き込み成功」が返されます。つまり、『仮想マシン』のディスクは通常のシンプル ボリュームであっても、3 本のディスクをミラーリングした場合と同等の堅牢性を持つことになります。さらに、災害対策の拠点間複製 (geo-replication) もサポートしているため、合計 6 つの複製を保持することもできます。拠点間の複製に関してはパフォーマンスの観点から非同期で通信します。 BLOB ストレージ に書き込まれたデータは、常に 3 つの複製を維持 (geo-replication なし) ◆ ストレージ関連の構成要素 (イメージ、ディスク、VHD)Windows Azure 仮想マシンでは、必ず Windows や Linux のシステム ドライブにあたる OS ディスクが必要です。また、前述したとおり、オプションで (XL サイズで最大 16 本の) データ ディスクを接続することが出来ます。ディスクは論理的な概念であって、BLOB ストレージに格納された VHD ファイルそのものではありません。ディスクは何らかの VHD に必ず 1:1 対応した名札のようなものです。また、イメージは、Generalize 済みの特殊なディスクのことを表します。イメージはディスクと違ってそのまま使われるわけではなく、複製されて OS ディスクとなるテンプレートです。 イメージ、ディスク、VHD Windows Azure 仮想マシンでは、OS ディスクやデータ ディスクの実体 (VHD ファイル) が、インスタンスが動作している物理サーバー上ではなく BLOB ストレージに保存されます。一方インスタンスが動作している物理サーバー上に Temporary Storage (Windows Server の場合は、D ドライブ) と呼ばれる特別な領域が確保されます。このストレージは主にページ ファイル用に使用され、パフォーマンスが予測できる保証はありません。仮想マシンのサイズ変更などの管理タスクを行うと、D: ドライブはリセットされます。さらに、仮想マシンがフェール オーバーするときに、データが消去されます。 ◆ 仮想ディスクのホスト キャッシュVHD ファイルは BLOB ストレージで永続化されるため、通常のローカル ディスクへの読み書きに比べて、パフォーマンスが落ちる可能性があります。そのため Windows Azure 仮想マシンには 、BLOB ストレージへ書き込む前段にキャッシュを挟んで、読み書きを効率化するための機能が備わっています。
具体的な設定方法は『3.1 データ ディスクの追加とホスト キャッシュ』で説明します。 ◆ アフィニティ グループ (affinity group)Windows Azure インフラストラクチャは巨大なデータ センターで構築されているため、複数の仮想マシンやストレージで通信が発生するような構成では、それぞれの配置場所によってネットワーク レイテンシー (遅延) が発生する可能性を考慮すべきです。Windows Azure ではアフィニティ グループを指定することで、仮想マシンやストレージ (など) の配置をある程度制御することが出来ます。 2 つの仮想マシンにアフィニティ グループ "AG1" を指定した場合 ※FC: ファブリック コントローラー 具体的な設定方法は『2.1 Windows Azure 仮想マシンの展開パターン』で説明します。 ◆ 障害ドメイン (fault domain) と可用性セット (availability set)アフィニティ グループを指定した場合、クラスタに障害が発生すると 2 台が共倒れになるのではないかと疑問に思われるかもしれません。これは、可用性セットを指定して障害ドメインを分離することで解決できます。クラスタ内の各ラックは、電源やネットワーク装置が冗長化され、これら装置の障害が他のラックに影響を及ぼさないように設計されています。このくくりを障害ドメイン (fault domain) と呼びます。 ※FC: ファブリック コントローラー 具体的な設定方法は『2.1 Windows Azure 仮想マシンの展開パターン』で説明します。 ◆ エンドポイントと負荷分散セットWindows Azure 仮想マシンを立ち上げの際、既定で開放されるポート限定 (リモート デスクトップ、SSH など) されています。(セキュリティ強化のため、設定されているポート番号はランダムな値)。そのため、例えば Web アプリケーションをホストする場合には、HTTP や HTTPS のポートを開放する設定が必要です。また、ロード バランサーによりトラフィックを複数の仮想マシンに分散するためには負荷分散セットを作成します。 具体的な設定方法は『3.2 エンドポイントと負荷分散セットと ACL』で説明します。 ページのトップへ STEP 2. Windows Azure 仮想マシンの展開この STEP では、Windows Azure の「仮想マシン」の展開について、その具体的な方法を説明します。 この STEP では、次のことを学習します。
2.1 Windows Azure 仮想マシンの展開パターンWindows Azure 仮想マシンでは、さまざまな仮想マシンの展開パターンをサポートしています。最も単純な方法は標準のイメージ テンプレートを提供しているプラットフォーム イメージから仮想マシンを作成する方法です。この場合、Windows Server や Cent OS などの複数のイメージから必要なものを選択した後、パスワードやサイズ (スペック) などいくつかの項目を指定するだけで、簡単にインスタンスを作成できます。他にも Generalize した OS イメージをマイ イメージとして登録して、それをカスタム テンプレートとして利用する方法や、ローカル環境で作成した VHD をアップロードして Windows Azure 仮想マシンのイメージとして利用するなど、さまざまな方法を提供しています。 仮想マシンの展開パターン それでは、各展開パターンの具体的な利用方法を説明します。 ◆ 事前準備実際に試しながら読み進めることをお勧めします。アカウントをお持ちであれば、Windows Azure 管理ポータルにアクセスして、仮想マシンを作成できることを確認してください。 アフィニティ グループを事前に定義しておきます。「設定」の「アフィニティ グループ」から「アフィニティ グループの追加」を選択します。 フォームに値を入力してアフィニティ グループの詳細を指定します。ここでは東アジアのデータ センターに "ag1" という名前のアフィニティ グループを作成しています。 2.2 プラットフォーム イメージを用いた展開最も単純なプラットフォーム イメージから仮想マシンを作成する方法を説明します。 その後、ギャラリーに選択可能な OS イメージが表示されます。尚、デフォルトはメニューの「すべて」が選択状態ですが、「プラットフォーム イメージ」でフィルタリングすると、Windows Azure が提供する標準のイメージのみが表示されます。 尚、上図に表示されているイメージは執筆時 (2013 年 10 月) に提供されているものです。Windows Azure が標準で提供するイメージは継続的に変更される可能性があります。 Windows Server 2012 Datacenter を選択すると次の画面が表示されます。ここでは仮想マシンの構成 (仮想マシンのバージョンや名称、サイズなど) を指定します。 次に DNS 名やデータ センターの場所など指定します。
次にエンドポイント (公開するポート) を指定します。Windows の場合、デフォルトでリモート デスクトップと PowerShell (Linux の場合 SSH) のエンドポイントが設定してあります。必要に応じて他のポートを開放することもできます。 以上で設定は完了です。仮想マシンの作成を開始すると、約 10 分程度でインスタンスが起動します。起動が完了したら [接続] をクリックしてリモート デスクトップで接続することができます。 尚、現時点 (2013 年 10 月) ではプラットフォーム イメージに英語版 OS しか提供されていないため、日本語化が必要であれば、別途言語パックをインストールする必要があります。 参考情報 2.3 マイ イメージを用いた展開プラットフォーム イメージが Windows Azure が標準で提供しているイメージなのに対して、マイ イメージは自身で作成したカスタム イメージをギャラリーに登録することが可能です。この方法は、カスタマイズした同一の仮想マシンを複数作成するシナリオで便利です。例えば SaaS 型のサービスを提供している会社であれば、ユーザー数に応じて同一の仮想マシンを複数起動することになるでしょう。また、Web サービスを提供している会社でも、トラフィックに応じて同一の Web サーバーを複数起動して負荷分散を行うかもしれません。 ここからは、実際にマイ イメージにカスタム イメージを登録して、それをもとに仮想マシンを作成する手順を確認します。 先ほど作成した仮想マシンをそのまま使って、カスタム イメージを作成します。リモート デスクトップ接続した Windows Server 2012 で "C:\Windows\System32\Sysprep\sysprep.exe" を実行します。System Preparation Tool が開いたら Generalize をチェックして、Shutdown Option に Shoutdown を指定します。 管理ポータルから仮想マシンをシャットダウンした後、取り込みを実行します。 イメージの名前を入力し「仮想マシンで Sysprep を実行しました」をチェックします。 イメージのキャプチャが完了すると、作成したカスタム イメージを利用して、プラットフォーム イメージと同じ手順で仮想マシンを生成することが出来ます。 参考情報 2.4 仮想マシンのアップロードローカル環境で作成した VHD をアップロードして仮想マシンのインスタンスを作成することや、マイ イメージに登録することが出来ます。アップロードには Windows Azure PowerShell を利用します。次のサイトから Windows Azure PowerShell を入手してインストールしてください。 ここでは Windows Azure PowerShell のコマンド用いた BLOB ストレージへのアップロード手順のみを解説します。尚、Windows Azure PowerShell は便利なコマンドを非常に多く提供しています。その一部を下表に記載します。
Windows Azure BLOB ストレージに VHD ファイルをアップロードするには、幾つかのステップを実施する必要があります。ここでは、具体的な手順をご紹介します。
参考情報 ページのトップへ STEP 3. その他の考慮事項この STEP では、Windows Azure 仮想マシンを利用する上でおさえておくと便利な機能の使い方を説明します。 この STEP では、次のことを学習します。
3.1 データ ディスクの追加とホスト キャッシュWindows Azure 仮想マシンでは、最大 1 TB のディスクを複数本追加することができます。ここでは、実際に仮想マシンにディスクを追加する方法を解説します。 Windows Azure 管理ポータルで仮想マシンを選択して、「ディスクの接続」をクリックします。今回は「空のディスクの接続」を実行しますが、既存のディスクを接続することも可能です。 表示されたページでディスク サイズを指定します。また、ここで前述したホスト キャッシュを指定することが出来ます。尚、OS ディスクは既定で「読み取り/書き込み」キャッシュが有効に設定されています。 ディスク接続が完了すると、Windows Server であれば、ディスク管理画面に「未割り当て」の領域として表示されます。 3.2 エンドポイントと負荷分散セットと ACL仮想マシンとの外部通信はエンドポイントを介して発生します。エンドポイントはトラフィックの負荷分散、仮想マシン接続、RDP や SSH など、さまざまな目的で使用されます。特定のポートに関連付けられ、特定の通信プロトコルが割り当てられているエンドポイントを定義します。エンドポイントには、TCP または UDP プロトコルを割り当てることができます (TCP プロトコルには、HTTP および HTTPS トラフィックが含まれます)。仮想マシンに定義された各エンドポイントに、通信用のパブリック ポートとプライベート ポートが割り当てられています。プライベート ポートは、仮想マシンで通信ルールを設定する目的で定義されます。パブリック ポートは、外部リソースから仮想マシンと通信するときに Windows Azure によって使用されます。 負荷分散を設定するには対象のエンドポイントに対して負荷分散セットを設定します。これにより、ネットワーク トラフィックのラウンド ロビンの負荷分散が、クラウド サービスのパブリックに定義されたポートに提供されます。負荷分散されるエンドポイントは、クラウド サービスに含まれるすべての仮想マシンで使用される特定の TCP または UDP エンドポイントです。次のイメージは、3 台の仮想マシンで共有されている負荷分散されたエンドポイントを示しています。このエンドポイントでは、パブリック ポートおよびプライベート ポートとして 80 が使用されます。 エンドポイントの設定は Windows Azure 管理ポータルで仮想マシンを選択した後、「エンドポイント」タブから追加を行います。 表示された画面でエンドポイントの種類を選択します。ここではスタンドアロン エンドポイントの追加を選んでいます。事前に作成された負荷分散セットが存在しない場合は既存の負荷分散セットにエンドポイントを追加するは選択できません。 名前やプロトコル、ポート番号を指定すると、指定したポートが開放されます。ここでは HTTP ポートを開放しています。負荷分散セットの作成を選択することで新規に負荷分散セットを作成することができます。 負荷分散セットの構成で負荷分散セット名やプローブの指定を行います。負荷分散されたエンドポイントに負荷分散プローブを追加することで、仮想マシンの死活を判断する独自の方法をオプションで定義できます。この設定で Windows Azure は仮想マシンからの応答を 15 秒ごとにプローブし、2 回応答がないと、そのマシンを負荷分散のローテーションから外します。 エンドポイント、負荷分散セットの定義が完了しました。作成した負荷分散セットは同一クラウド サービスの他の仮想マシンに対して設定することが出来ます。 ここで設定したエンドポイント、負荷分散セットに対してはデフォルトでインターネット上のどこからの接続でも受け入れてしまいますが、アクセス制御を設定することで「社内ネットワークからの接続だけ許可する」といった制御が可能です。 現時点 (2013 年 10 月) は管理ポータルから GUI で設定することは出来ないため、Windows Azure PowerShell を利用します。
コマンド リファレンス 参考情報 3.3 仮想マシンの監視仮想マシンには主要なパフォーマンス メトリックを監視するための機能が搭載されています。既定では、パフォーマンス カウンターを使用して仮想マシンに対する最小限の監視が行われ、管理ポータルでグラフィカルに確認することが出来ます。 管理ポータルから監視するメトリックスやアラート ルールを作成することが可能です。 HTTP または HTTPS エンドポイントを監視するにはダッシュボードから Web エンドポイントの監視の構成を行います。 Web エンドポイントの監視を構成すると、HTTP または HTTPS エンドポイントの可用性を地理的に分散した場所から監視できます。最大 3 か所の地理的に分散した場所からエンドポイントをテストできます。 管理ポータルの監視からエンドポイントに対するメトリックを追加できます。 選択した各メトリックスに対してアラート ルールを定義できます。ここではシカゴからの応答時間の平均が 30 秒以上かかった場合にサービスの管理者/共同管理者、及び指定したアドレスに対してアラートを通知します。 アラートが発生すると次のようなメールが届きます。 エンドポイントの監視状況はグラフや、メトリックスの詳細から確認できます。 尚、アラートに関しては Windows Azure 管理サービスから一括で確認することが出来ます。 3.4 IP アドレスと仮想ネットワーク仮想マシンにはパブリック仮想 IP (VIP) アドレスと内部 IP アドレスが自動的に割り当てられます。この IP アドレスは管理ポータルのダッシュボードから確認できます。VIP はクラウド サービスと対になっているため、同じクラウド サービスに複数の仮想マシンを作成すると、全ての仮想マシンに同一の VIP が設定されます。 ただし内部 IP アドレスは全ての仮想マシンで異なる値が設定されます。
参考情報 3.5 Windows Azure ストレージの操作ローカル環境から仮想マシンに対して FTP や SMB などのプロトコルで直接ファイルをアップロードすることは可能ですが、Windows Azure ストレージを経由することでより高速で信頼性の高いファイル転送が可能なケースがあります。Windows Azure ストレージは REST API が公開されているため様々なプラットフォームやプログラミング言語を使って操作することも出来ますが、ここでは容易に利用するための便利なツールをご紹介します。
3.6 仮想マシンでサポートされていない OS コンポーネントWindows Azure のインフラストラクチャではパブリック クラウドに最適化されたアーキテクチャが採用されているため、現時点 (2013 月 10 日) では未サポートの 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 月) では、いくつかの制限事項があります。 制限事項
ただし、このような制限も時間の経過と共に無くなっていく傾向にあります。最新の制限事項については次のサイトを確認してください。 ◆ パフォーマンスに関するベスト プラクティス基本的に、オンプレミスの SQL Server と同様のパフォーマンス チューニングは効果があります。ただし、永続化処理の裏側で BLOB ストレージを使うため、いくつか注意すべきポイントがあります。
参考情報 |
Windows Azure 関連リンク
Windows 8 関連リンク |
ページのトップへ