エクスポート (0) 印刷
すべて展開

Windows Azure での VM ロールのサーバー イメージの作成

更新日: 2011年3月

[Windows Azure の VM ロール機能は 2013 年 5 月 15 日に廃止されます。 廃止日以降、VM ロール展開環境は削除されます。 既存のアプリケーションと共に移行するには、Windows Azure 仮想マシンを使用することができます。 アプリケーションでの仮想マシンの使用方法の詳細については、「Moving from VM Role to Windows Azure Virtual Machines (VM ロールから Windows Azure 仮想マシンへの移行)」を参照してください。

Windows Azure で実行されているすべてのロール インスタンスは Windows Server オペレーティング システムのあるバージョンを実行する仮想マシンであるので、Windows Azure の仮想マシン (VM) ロールは他のロールと似ています。VM ロールの異なる点は、ユーザーがサーバーのイメージを作成して管理することです。これを行うには、ベース VHD を作成し、Windows Azure 統合コンポーネントをインストールします。次に、アプリケーションをインストールしてカスタマイズし、イメージを一般化してから Windows Azure にアップロードします。

Windows Server 2008 R2 のカスタム イメージを作成するには、標準の Windows イメージの作成方法を使用します。たとえば、Hyper-V マネージャーを使用して、Windows Azure にアップロードするベース VHD を作成できます。

ベース VHD には、オペレーティング システムとそのカスタマイズ、およびアプリケーションが含まれます。Hyper-V マネージャーを使用してベース VHD を作成できます。サーバー イメージを作成して準備したら、VHD を Windows Azure 管理ポータルにアップロードします。

VHD とサーバー イメージの詳細については、次の情報を参照してください。

ベース VHD にはできるだけ多くの内容を含めることをお勧めします。差分 VHD を使用すると、限定的な更新プログラムおよび修正プログラムを適用できます。ベース VHD と差分 VHD に含める項目はユーザーが決定できます。ベース VHD と差分 VHD はセットでサーバー イメージを定義すると考えられるので、安全な場所にベース VHD のローカル コピーを保持する必要があります。

Windows Azure にベース VHD をアップロードする前に、サーバー イメージに Windows Azure 統合コンポーネントをインストールする必要があります。Windows Azure 統合コンポーネントは、サーバー イメージから作成されて VM ロール インスタンスと Windows Azure 環境の間の統合を処理する各 VM ロール インスタンスで実行されます。

統合コンポーネントは、VM ロール インスタンスのオペレーティング システムと Windows Azure を統合するために必要なタスクを実行します。これらのコンポーネントはロード バランサーを使用してインスタンスの状態に関する情報をやり取りします。さらに、証明書をインストールし、サービス定義の設定に基づいてローカル リソース ディレクトリを作成することにより、仮想マシンを初期化します。

Windows Azure Connect では、単純なユーザー インターフェイスを使用して、ローカル ネットワーク上のコンピューターまたは仮想マシンと Windows Azure で実行中のロール インスタンスの間の IPsec 保護接続を構成することができます。IPsec は暗号化セキュリティ サービスを使用して、インターネット プロトコル (IP) ネットワーク全体の通信を保護します。Windows Azure Connect の使い方の詳細については、「Windows Azure ロールへのローカル コンピューターの接続」を参照してください。

オペレーティング システムのセットアップまたはスタートアップ プロセスの一部として実行されるアダプターを作成できます。次の図は、アダプター開発モデルを示しています。

VMRoleDevelopmentModel

アダプターの作成には 2 つの方法があります。

  • 特殊化パスで実行されるアダプターを作成できます。この特殊化パスは、オペレーティング システムのセットアップ中、Windows Azure にサーバー イメージが初めてアップロードされた後、またはインスタンスのイメージが再適用された後に発生します。この形式のアダプターを作成する際はコードを作成する必要がなく、アダプターは応答ファイルから実行されるスクリプト、またはシステム準備ツール (sysprep) 用に作成したプロバイダーの 2 つのアプローチのどちらかを使用します。詳細については、「オペレーティング システムのセットアップ時に実行されるアダプターの作成」を参照してください。

  • オペレーティング システムが起動されるたびに自動的に開始される Windows サービスとしてアダプターを作成できます。この形式のアダプターは、マネージ コードまたはネイティブ コードのどちらを使用しても作成できます。このアダプターは、Windows Azure サービスのランタイム API を使用して、Windows Azure 環境から動的データを収集します。詳細については、「オペレーティング システムの起動時に実行されるアダプターの作成」を参照してください。

Windows アプリケーションの内部設置型の配置と Windows Azure への配置の主な違いは、Windows Azure にサーバー イメージをアップロードすると、そのイメージから作成された VM ロール インスタンスが動的な環境で実行されることです。開発フェーズでは、VM ロール インスタンスの IP アドレス、実行されるインスタンスの数、それらのアドレス指定方法など、一部の主要な情報がわかりません。VM ロールの開発プロセスでは、VM ロール インスタンスとそれらにインストールされるソフトウェアを構成して動的な環境で実行および通信できるようにします。

Windows Azure にアップロードしたサーバー イメージは、サービス モデルと共に適用され、VM ロール インスタンスが作成されます。初めてオンラインになった VM ロール インスタンスは、Windows Azure での実行の準備に必要な手順をすべて実行する必要があります。ほとんどの場合、これは、インストールされたすべてのソフトウェア アプリケーションを環境の動的な情報で構成し、起動する必要があることを意味します。たとえば、動的な環境から収集したデータをソフトウェア アプリケーションの構成ファイルに書き込むことが必要な場合もあります。

アプリケーションがローカル ストレージ ディレクトリにデータを書き込む場合、VM ロール インスタンスはアプリケーションがアクセスできるようにディレクトリも構成する必要があります。VM ロール インスタンスを作成するためにサーバー イメージが初めてアップロードされると、サービス モデルで定義されたすべてのローカル ストレージ リソースはローカル ディレクトリとして作成されます。名前付きストレージ リソースに関連付けられたローカル ディレクトリは、既定でセキュリティ保護されています。つまり、Administrator アカウントのみがアクセスできるように構成されています。アプリケーションがそのディレクトリに書き込む必要がある場合、VM ロール インスタンスはディレクトリのアクセス許可を変更して、特権の低いアカウントからもアクセスできるようにする必要があります。

サーバー イメージは、Windows Azure に配置されるときに一般化された状態にあります。これは、内部設置型のイメージを準備するシステム準備ツール (sysprep) を実行した結果です。Windows Azure 上の VM ロール インスタンスで実行されるオペレーティング システムの場合は、セットアップ プロセスの一部として特殊化パスを実行する必要があります。この特殊化パスを自動化するために使用される情報は、Windows Azure 統合コンポーネントによりサーバー イメージのルートにインストールされた応答ファイル (c:\unattend.xml) に格納されます。

イメージの作成時に応答ファイルをカスタマイズすることで、Windows Azure にイメージがアップロードされた後の特殊化パスで呼び出されるスクリプトを実行できます。応答ファイルのカスタマイズの詳細については、「Windows 自動インストール キット (Windows AIK)」を参照してください。

代わりに、サーバー イメージに含める sysprep プロバイダーを作成することもできます。sysprep プロバイダーは sysprep ツールを拡張してユーザーが定義した追加の機能を含めます。Windows Azure 統合コンポーネントは、VM ロール インスタンスが初めて起動されたときに Windows セットアップを完了する特殊化パスの実行に使用される sysprep ツールをサポートしています。sysprep プロバイダーの作成の詳細については、「Windows 7 用システム準備 (Sysprep) プロバイダー開発者ガイド」を参照してください。

この種類のアダプターは、インスタンスの最初のブート シーケンスでのみ実行されます。インスタンスの再起動時には実行されません。この形式のアダプターには、サービス構成設定の変更に自動的に対応できないという制約があります。アダプターが構成設定の変更をインスタンスに適用する場合、オペレーターはインスタンスのイメージを手動で再適用して、アダプターを実行し、新しい設定を適用する必要があります。アプリケーションがサーバー イメージの有効期間中に変更が必要になる可能性のある構成設定に依存する場合は、アダプターを Windows サービスとして作成することを検討してください。

Windows の起動時に自動的に開始され、Windows Azure サービス ランタイム API を使用して Windows Azure から動的なデータを収集する Windows サービスとしてアダプターを作成できます。Windows サービスの作成が必要になるのは、現在の VM ロール インスタンス、またはサービスで実行されているその他のロール インスタンスのネットワーク アドレス情報が必要な場合、ローカル ストレージ リソースに書き込む必要がある場合、実行時にサービス構成設定を読み取る必要がある場合、その設定の変更に応答する場合などです。

サービス ランタイム API を使用するには、Windows サービスが 64 ビットの Windows プロセスである必要があります。このサービスは、マネージ コードまたはネイティブ コードのどちらを使用しても作成できます。API の詳細については、「Windows Azure Managed Library Reference」および「Windows Azure Native Library Reference」を参照してください。

サービス ランタイム API は、Administrator アカウントまたは LocalSystem アカウントで実行されているプロセス内のみから呼び出すことができます。この制約により、サービス ランタイム API を使用して特権の低いプロセスがサービス構成設定を読み取るリスクが排除され、サービスは既定でセキュリティ保護されます。

Windows サービスは、Windows の起動時に自動的に開始されるように構成する必要があります。また、OnStart などの ServiceBase クラスのライフサイクル メソッド (シャットダウン シーケンスが必要な場合は OnStop または OnShutdown も) を実装する必要があります。スタートアップ コードは OnStart メソッドが戻り値を返すまでに完了し、Windows サービスに必要なシャットダウン シーケンスは、OnStop または OnShutdown が戻り値を返すまでに完了する必要があります。Windows サービスの作成の詳細については、「Windows サービス アプリケーション」を参照してください。

アダプターを含むすべての自動開始サービスが開始されると、Windows Azure は、インスタンスがロード バランサーからトラフィックを受信する準備が完了していることを認識します。そのため、OnStart メソッドが完了するまでに、VM ロール インスタンスと、このインスタンスが実行しているソフトウェアの準備に必要なすべてのタスクがアダプターによって実行されている必要があります。状態を Busy に設定してインスタンスをローテーションから明示的に外さない限り、スタートアップ シーケンスが完了してからシャットダウン シーケンスが開始されるまで、VM ロール インスタンスは準備完了の状態にあります。そのためには、StatusCheck イベントにイベント ハンドラーを追加します。イベントが発行されると、イベント引数オブジェクトで SetBusy メソッドを呼び出すことができます。また、Set-RoleInstanceStatus PowerShell コマンドレットを使用して、VM ロール インスタンスの状態を変更することもできます。

Windows Azure 統合コンポーネントをインストールしたら、アプリケーションをインストールして、オペレーティング システム構成に必要な変更を加え、必要に応じて Windows Azure Connect エージェントをインストールし、必要に応じてアダプターを作成およびインストールしてから、アップロードするイメージを準備する必要があります。

VHD を Windows Azure に正しくアップロードするには、Sysprep コマンドを使用してサーバー イメージを一般化する必要があります。Sysprep の使い方の詳細については、「Sysprep の使用方法: 紹介」を参照してください。VHD のアップロードの詳細については、「Windows Azure での VM ロールの VHD のアップロード」を参照してください。

参照

コミュニティの追加

表示:
© 2015 Microsoft