Web ファームへのアプリケーションの展開/Web ファーム内のすべてのコンピューターの同期

このサンプルは、Web ファーム シナリオにおいて次のタスクを実行するコマンド ライン スクリプトの作成方法を示しています。

  1. 開発者が用意したパッケージから Web ファーム内の複数のコンピューターにアプリケーションを展開します。

    複数のコンピューターに新しいアプリケーション パッケージを展開したり、アプリケーションを新しいバージョンにアップグレードしたりするのは面倒な作業です。 リモート コンピューターにパッケージを送信して展開を実行するスクリプトがあれば、この作業が簡単になります。

  2. Web ファーム内のすべてのコンピューターのコンテンツと構成の両方を 1 台のモデル コンピューターと同期させます。

    複数の変更を Web ファームに適用するには、すべての変更をすべてのコンピューターにまったく同じ方法で適用する必要があります。 必要な変更がすべてスクリプト化されていれば簡単な作業です。 スクリプト化されていない場合は、Web ファーム内のすべてのコンピューター上のすべての変更をどのように記録し再現するかという問題が生じます。 すべての変更を 1 台のコンピューターに適用してから、Web ファーム全体にレプリケートするという解決策もあります。

この例は、Web 配置ツール (MSDeploy) を使用してアプリケーション パッケージを展開する方法と、1 台のサーバーのコンテンツおよび構成を Web ファーム内のすべてのコンピューターにレプリケートする方法を示しています。 このサンプルは任意の MSDeploy アプリケーション パッケージと組み合わせることができます。 Windows Server AppFabric サンプル用に作成された一般的な Windows Server AppFabric サンプル アプリケーションの使用をお勧めします。 このアプリケーションを検索するには、<サンプル>\Samples\Management\MultiMachineSyncAndDeploy \Code\CalculatorService.zip ファイルに移動します。ここで、<サンプル>は、AppFabric サンプルのインストール先パスになります。 スクリプトは、特定のニーズ (たとえば、展開したアプリケーションの名前を変更する、1 つのサイトのみを同期するなど) に合わせて簡単に変更できます。

ヒント

サンプルは学習用としてのみ提供されています。 運用環境での使用を目的としておらず、運用環境でのテストも行われていません。 サンプルについてマイクロソフトのテクニカル サポートは提供されません。

前提条件

この例では、次の要件を満たす 2 台以上のコンピューターが必要です。

  1. Web 配置ツールの Remote Agent Service (Deployment Agent Service とも呼ばれます) がすべてのコンピューターにインストールされ、実行されている必要があります。 既定では、AppFabric によって Web 配置ツールがインストールされますが、Remote Agent Service は既定のインストールには含まれていません。 インストールに Remote Agent Service を追加するには、次の手順を実行します。

    1. コントロール パネルの [プログラムと機能] を開き、[Web 配置ツール] を選択して、[変更] をクリックします。

    2. メッセージが表示されたら、[次へ] をクリックし、次の画面で [変更] をクリックします。

    3. 機能の一覧が表示されたら、Remote Agent Service が [この機能はローカル ハード ディスクにインストールされます] にマークされていることを確認して、セットアップ ウィザードを完了します。

    4. ウィザードが完了したら、コマンド ウィンドウに「net start msdepsvc」と入力して、サービスを開始します。 Windows を起動したときに自動的にサービスを開始する場合は、コマンド ウィンドウに「sc config msdepsvc start=auto」と入力します。

    Web 配置ツールのインストールと構成、および AppFabric がインストールされていないコンピューターへのインストールの詳細については、http://learn.iis.net/page.aspx/421/installing-the-web-deployment-tool/ を参照してください。

  2. 同期中に変更されるすべてのコンピューターでは、ファイアウォール経由で World Wide Web サービス (HTTP) を許可する必要があります。

  3. Web ファーム内のすべてのコンピューターはドメインの一部で、ファームの同期に使用するアカウントには、すべてのコンピューターでの管理者特権が必要です。

カスタム プロバイダーを使用している場合は、Remote Agent Service によって認識されるかどうかがわかると便利なことがあります。 どのプロバイダーが使用可能か判断するには 2 つの方法があります。

  1. IIS を使用する - IIS マネージャーでアプリケーションを右クリックし、[展開] を選択して [アプリケーションのエクスポート] を選択します。 [アプリケーションのエクスポート] ダイアログ ボックスで、[コンポーネントの管理] をクリックします。 [プロバイダー] 列で最後の空白行をクリックし、下向き矢印をクリックします。 これで、Remote Agent Service で認識されているカスタム プロバイダーを含む、利用可能なプロバイダーの一覧が表示されます。

  2. コマンド ラインを使用する – Web 配置ツールのコマンド ラインで、コマンド プロンプトに「MSDEPLOY.EXE」と入力します。 表示される情報の一部は、利用可能なカスタム プロバイダーです。 Web 配置ツールのインストール方法については、「Web 配置ツールのインストール」を参照してください。

サンプル スクリプトを変更して、ドメイン以外の環境で実行することも可能です。 Web 配置ツールの認証オプションの詳細については、https://technet.microsoft.com/ja-jp/library/dd569001(WS.10).aspx にある authType オプションの説明を参照してください。

サンプルの場所とファイル

このサンプルの実行に必要なすべてのファイルは、<サンプル>\Samples\Management\MultiMachineSyncAndDeploy\Code にあります。

  • machines.txt

  • sync.cmd

  • syncOne.cmd

  • deployOne.cmd

このサンプルの設定と実行

タスク 1: パッケージを展開します。

  1. <サンプル>\Samples\Management\SyncConfigFromModelMachine\Code から管理コンピューターにすべてのファイルをコピーします。

  2. machines.txt ファイルを編集して、1 つのバッチで変更するファーム内のその他すべてのコンピューターの名前を含めます。 コンピューターの名前は 1 行に 1 つずつ記述する必要があります。

  3. sync.cmd -fromPackage <package file path> コマンドを実行します。

  4. ログ ファイルでエラーを調べます。 各コンピューターには、sync-MACHINE.log という名前の個別のログ ファイルが作成されます。ここで MACHINE の部分は、コンピューターの名前になります。

タスク 2: モデル コンピューターと同期します。

  1. ファーム内のすべてのコンピューターが上記の要件を満たしたら、いずれか 1 台のコンピューターでアプリケーションを作成するか、サイト構成の変更を行って開始できます。 このコンピューターを "モデル コンピューター" と呼びます。

  2. 構成が完了したら、<サンプル>\Samples\Management\SyncConfigFromModelMachine\Code からモデル コンピューターにすべてのファイルをコピーします。

  3. machines.txt ファイルを編集して、1 つのバッチで変更するファーム内のその他すべてのコンピューターの名前を含めます。 コンピューターの名前は 1 行に 1 つずつ記述する必要があります。

  4. sync.cmd -fromLocalServer コマンドを実行し、確認のため「Y」と入力します。

  5. ログ ファイルでエラーを調べます。 各コンピューターには、sync-MACHINE.log という名前の個別のログ ファイルが作成されます。ここで MACHINE の部分は、コンピューターの名前になります。

このサンプルについて

sync.cmd スクリプトは、ユーザーが指定したコマンド ライン引数を最初に検証します。

if "%1"=="" goto print_syntax
if "%1"=="-fromLocalServer" goto sync_server
if "%1"=="-fromPackage" goto sync_package
goto print_syntax

引数に応じてスクリプトは、machines.txt に指定されている各コンピューターに対して deployOne.cmd または syncOne.cmd スクリプトを呼び出します。 このとき、for コマンドおよび start コマンドを使用して以降のスクリプトを呼び出し、複数のターゲット コンピューターでタスクが同時に実行されるようにします。

for /f %%i in ('type machines.txt') do (start deployOne.cmd %%i %2 %3 )

または

for /f %%i in ('type machines.txt') do ( start syncOne.cmd %%i %1) 

SyncOne.cmd/DeployOne.cmd は、Web Deploy のコマンド ライン インターフェイスである msdeploy.exe というコマンドを使用して、リモート IIS Web サーバーとパッケージとの同期、またはローカル コンピューター上の IIS Web サーバー全体の同期を行うスクリプトです。

msdeploy.exe -verb:sync -source:package=%2 -dest:auto,computername=%1 %3

または

msdeploy.exe -verb:sync -source:webServer -dest:webServer,computername=%1 %2

最初のパラメーターは sync.cmd から渡されたコンピューター名で、2 番目のパラメーターは deployOne.cmd スクリプトで必要なパッケージ ファイルのパスです。 最後の省略可能なパラメーターは、msdeploy に渡す任意のパラメーターです。 スクリプトをいずれも変更せずに Web Deploy に追加パラメーターを渡す場合に便利です。 このような追加パラメーターの例として、-whatif が挙げられます。

sync.cmd -whatif

-whatif パラメーターを使用して Web Deploy を実行すると、実際にコマンドを実行せずに、指定されたコマンドの実行中に発生する可能性のあるすべてのエラーを確認できます。 運用環境で -whatif を使用して sync コマンドを実行し、発生する可能性のあるエラーを確認することをお勧めします。 この手順を予防策として実行することで、不整合な状態に至るのを防ぐことができます。

このサンプルの削除

このサンプルを削除するには、サンプルのすべてのファイルを管理コンピューターまたはモデル コンピューターから削除します。

その他のリソース

Web 配置ツールの詳細については、http://learn.iis.net/page.aspx/346/web-deployment-tool/ を参照してください。

IIS 7.0 を実行している 2 台のサーバーを Web Deploy を使用して同期させる方法の詳細については、http://learn.iis.net/page.aspx/446/synchronize-iis-70/ を参照してください。

Web 配置ツールのインストールおよび構成の詳細については、http://learn.iis.net/page.aspx/421/installing-the-web-deployment-tool/ を参照してください。

  2011-12-05