複数のコンピューターにスロットルを構成する Windows PowerShell スクリプト

このサンプルは、ファームに含まれる複数のコンピューターに対して、Windows PowerShell スクリプトを使用してサービス スロットルの既定値を構成するために必要な手順を示しています。このサンプルを編集して、AppFabric でアクセスできる他の設定を簡単に変更できます。

複数のコンピューターで構成されるサーバー ファームを維持している場合、1 つの設定を変更するためにすべてのコンピューターに個別に接続するのは面倒です。この問題は、ファームに多数のコンピューターが含まれている場合や、このような変更が非常に頻繁に発生する場合には、より煩雑になります。Windows Server AppFabric の永続化と監視の機能が導入されている場合は、ファーム内のアクティブなコンピューターに関する情報をデータベースから直接抽出し、その情報を使用してそれらのコンピューター上で Windows PowerShell コマンドを実行するための簡単な方法があります。

このサンプルでは、ファーム内のコンピューターからファームに関する情報を抽出する方法と、ファーム内のアクティブなすべてのコンピューター上で Windows PowerShell コマンドレットを実行する方法を示します。

このサンプルは任意のアプリケーションと組み合わせることができます。AppFabric サンプル用に作成された、一般的な AppFabric サンプル アプリケーションの使用をお勧めします。このアプリケーションを検索するには、<サンプル>\SampleApplication\OrderApplication フォルダーに移動します。ここで、<サンプル> は、AppFabric サンプルのインストール先のパスになります。

ヒント

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

前提条件

このサンプルは、次の前提条件を満たす 1 台のコンピューターまたは複数のコンピューターで実行できます。サンプルを 1 台のコンピューターで実行する場合、複数のコンピューターに関する記述は無視してかまいません。

  • サンプルで使用するすべてのコンピューターに AppFabric をインストールする必要があります。また、永続化または監視あるいはその両方のために、すべてのコンピューターで共通のデータベースを使用する必要があります。

  • スクリプト (提供されている場合) を実行するには、サンプルを実行するコンピューター上で管理者特権を持っている必要があります。どのような変更を加えるかにより、その他すべてのコンピューターでの管理者特権が必要になる場合があります。

  • 使用するすべてのコンピューターが 1 つのドメインに参加している必要があり、すべてのコンピューターに Windows リモート管理 (WinRM) 2.0 がインストールされている必要があります。下位レベル プラットフォーム用の WinRM 2.0 CTP3 は、「WinRM 2.0 ダウンロード」 (https://go.microsoft.com/fwlink/?LinkId=194424) からダウンロードできます。このサンプルは、ドメインでない環境で実行するように変更できます。「about_Remote_FAQ」 (https://go.microsoft.com/fwlink/?LinkId=194425) にある Windows PowerShell でのリモート コマンドの実行に関する FAQ で、「(ドメイン内ではなく) 1 台のコンピューター上でリモート処理をテストすることはできますか」という質問に対する回答を参照してください。

  • Windows PowerShell のリモート実行を有効にする必要があります。これは、上に示した 2 つの前提条件を満たした後、Enable-PSRemoting -force を実行して行うことができます。Windows PowerShell リモート処理の詳細情報を表示するには、「help about_remote」と入力してください。

  • サンプルで使用するすべてのコンピューターが、同じファームに含まれている必要があります (つまり、すべてのコンピューターに同じアプリケーションとサービスがインストールされている必要があります)。また、すべてのコンピューターから共通データベースに対して、監視データの永続化または報告が少なくとも 1 回は実行されている必要があります。

  • このサンプルを実行するホストに SQL クライアント接続機能と Windows PowerShell 用 SQL Server スナップインがインストールされている必要があります。

サンプル ファイル

  • Get-ASActiveMachine.ps1 スクリプト (Code フォルダー)

  • Readme ドキュメント

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

  1. Windows PowerShell ホスト (Windows PowerShell 2.0 で提供されているコンソールなど) を管理者として実行します。ビルトイン アカウントの "Administrator" として実行していない場合は、ホストを実行する際に必ず [管理者として実行] を選択してください。

    ヒント

    このサンプルを実行するには、コンピューター上で未署名のスクリプトを実行することを許可する必要があります。手順は次のとおりです。

  2. ホストでコマンド Set-ExecutionPolicy Unrestricted を実行します。これにより、未署名のサンプル スクリプトを実行できるようになります。サンプルの実行が完了した後、この設定を元に戻してください。運用環境での同様のスクリプトの実行を評価している場合は、スクリプトに署名することをお勧めします。スクリプトへの署名の詳細については、「about_Signing」 (https://go.microsoft.com/fwlink/?LinkID=194426) を参照してください。

このサンプルの削除

  1. このサンプルを削除するには、Set-ExecutionPolicy Default コマンドを使用して、実行ポリシーを以前のレベルまたは Windows PowerShell の既定レベルに戻します。

デモ

このサンプルは 2 つの部分に分かれています。最初の部分は、複数のコンピューター上でコマンドレット (具体的には AppFabric コマンドレット) を実行する方法を示しています。2 番目の部分は、ファーム内のアクティブなコンピューターの一覧を取得するために使用するスクリプト コマンドレットです。その後、両方の部分の使用方法を示す例が続きます。

リモート構成

前に説明した前提条件がすべて満たされていれば、リモート コンピューター上でコマンドレットを実行することは簡単です。使用するコマンドレットは Invoke-Command という名前であり、このコマンドレットを実行するすべてのコンピューターと、それらのコンピューター上で実行するスクリプトを示すパラメーターを受け取ります。

重要

このサンプルを実行することにより、サンプルを実行するように選択したコンピューター上のすべてのサービスについて、既定の "同時呼び出しの最大数" の値を変更することになります。そのために運用環境において望ましくない結果が生じる場合があります。つまり、サーバーがサービス拒否 (DoS) 攻撃にさらされたり、正当な呼び出し元がアクセスを拒否されたりすることがあります。運用環境では以下の手順を実行しないでください。実行する場合は、最初にシステムをバックアップし、環境に対して適切な値を選択してください。適切な MaxConcurrentCalls の値が不確かな場合は、ソフトウェア アーキテクトに問い合わせるか、WCF 製品ドキュメントで「MaxConcurrentCalls プロパティ」 (https://go.microsoft.com/fwlink/?LinkId=194427) を参照してください。

たとえば、次の AppFabric コマンドを実行するとします。

Set-ASAppServiceThrottling -root -MaxConcurrentCalls 200

"Dublin001" および "Dublin002" という 2 台のコンピューターでコマンドを実行するには、次のようにコマンドを入力します。

Invoke-Command -ComputerName Dublin001,Dublin002 -ScriptBlock {Import-Module ApplicationServer; Set-ASAppServiceThrottling -root -MaxConcurrentCalls 200}

スクリプト ブロック定義 (中かっこで囲まれたテキスト) の最初のコマンドが Import-Module ApplicationServer であることに注意してください。これにより、Invoke-Command によって作成したリモート環境に、必要なすべての AppFabric コマンドレットがインポートされます。

アクティブなコンピューターに対するデータベース クエリ

ファーム内のすべてのコンピューター上でこのコマンドを実行するには、すべてのコンピューターの一覧を維持しておき、その一覧を使用して、このサンプルの ComputerName パラメーターに対して引数を指定することが必要になります。または、このサンプルに提供されているスクリプト コマンドレットを使用することができます。

このスクリプト コマンドレットは Get-ASActiveMachine という名前です。このスクリプト コマンドレットは、Windows PowerShell 用 SQL Server スナップインを使用して、AppFabric 監視データからアクティブなコンピューターを抽出した後、ビルトイン AppFabric コマンドレットを使用して、永続化データからアクティブなコンピューターの一覧を取得します。最後に、2 つの結果セットを結合し、結果を呼び出し元に返します。

このコマンドレットをインストールするには、Windows PowerShell ホスト (Windows PowerShell 2.0 で提供されているコンソールなど) で次の行を実行します。

Import-Module <samples>\Samples\Management\MultiMachineConfiguration\Code\Get-ASActiveMachine.ps1

<samples> は、AppFabric サンプルをインストールしたパスです。

その後、次のコマンドレットを実行すると、ファーム内のすべてのコンピューターの一覧が返されます。

Get-ASActiveMachine

ヒント

このコマンドレットが受け取るすべてのパラメーターの一覧と、ローカル コンピューターに SQL Server が既定のインスタンスとしてインストールされていない場合、および AppFabric 監視データベースが "ApplicationServerMonitoring" 以外の名前である場合のパラメーターの使用方法を以下に示します。

返される一覧は次のようになります。

Dublin001
Dublin002

マルチコンピューター構成をこのコマンドレットと組み合わせるには、次のコマンドを実行します。

Invoke-Command -ComputerName (Get-ASActiveMachine) -ScriptBlock {Import-Module ApplicationServer; Set-ASAppServiceThrottling -root -MaxConcurrentCalls 200}

Get-ASActiveMachine のパラメーター

-Server

必須のパラメーター。SQL Server Express を使用している場合は、このパラメーターを "<serverName>\SQLExpress" に設定します。SQL Server Enterprise を使用している場合は、このパラメーターを "<serverName>" に設定します。

-Database

必須のパラメーター。監視データベースを指定する文字列。

-SiteName

オプション パラメーター。指定したサイトのアクティブなコンピューターのみがコマンドレットから返されるようにする文字列フィルター パラメーター。

-VirtualPath

オプション パラメーター。仮想パスのアクティブなコンピューターのみがコマンドレットから返されるようにする文字列フィルター パラメーター。この文字列を -SiteName パラメーターと共に使用すると、特定のサービスの負荷分散を行っているコンピューターのみをコマンドレットが返すようにすることができます。

-ActiveSince

オプション パラメーター。特定の期間中に監視データを永続化または報告したコンピューターのみを選択するフィルター処理に使用できる DateTime オブジェクト。たとえば、過去 24 時間のデータを返すには、Get-ASActiveMachine –ActiveSince (Get-Date).AddHours(-24) を使用します。

-ApplicationObject

オプション パラメーター。特定のアプリケーションに関する監視データを永続化または報告したコンピューターのみを選択するフィルター処理に使用できる Microsoft.ApplicationServer.Management.Data.ApplicationInfo オブジェクト。パイプ シナリオでの使用に最適です。例: Get-ASApplication –SiteName ‘Default Web Site’ –VirtualPath \OnboardingWorkflow | Get-ASActiveMachine

その他のリソース

Windows PowerShell スクリプトのリモート実行の詳細については、「about_Remote」 (https://go.microsoft.com/fwlink/?LinkId=194428) を参照するか、Windows PowerShell ホストで「help about_remote」と入力してください。

  2011-12-05