SharePoint 2013 での Request Manager の扱い
原文の記事の投稿日: 2012 年 9 月 15 日 (土曜日)
Request Manager (RM) については、まだあまり情報が出ていません。ここでは、PowerShell と合わせて簡単に説明します。RM になじみのないユーザーに向けて簡単に説明すると、RM とは SharePoint の要求のルーティングおよび調整を行うために設計された、新しい SharePoint 2013 の機能の一部です。ユーザー エージェント、要求された URL、ソース IP などの受信要求の性質について理解しておくと、SharePoint で各要求に対する応答をカスタマイズできます。定義したルールに基づいて要求をルーティングしたり、要求を完全に調整したりできます。RM のルールは、SharePoint 2010 で行われる調整と同様に、Web アプリ単位で適用されます。
RM を使用する主な目的は以下のとおりです。
- RM を使用すると、より良好な状態の WFE にルーティングできるため、良好な状態にない WFE をアクティブにしておけます。
- RM を使用すると、有害な要求を識別し、即座に拒否できます。
- RM を使用すると、優先度の高い要求 (エンドユーザー) と優先度の低い要求 (ボット) を調整できます。
- RM を使用すると、特定の種類 (検索など) のすべての要求を指定のコンピューターに送信できます。
- 分離されたトラフィックにより特定のコンピューターで発生したエラーのトラブルシューティングに役立ちます。
- RM を使用すると、負荷の大きな要求をより強力な WFE に送信できます。
ルーティング ルールと調整ルールは以下のように実装されます。
- ルーティング ルールによって要求がルーティングされ、コンピューター プールと関連付けられます。
- コンピューター プールにはサーバーが含まれます。
- サーバーはウェイト (静的ウェイトと正常性ウェイト) を使用してルーティングします。
- 静的ウェイトは WFE で一定で、正常性ウェイトは正常性スコアに応じて動的に変化します。
以上が RM の概要です。RM の機能や使用方法について詳しくは、TechNet 上の記事を参照してください。この投稿は、RM について十分に理解していて (または興味があり)、実際に使用を検討していることを前提とします。ここで、便利な PowerShell を紹介します。これらのコマンドレットは、RM を使用する際に役立ちます。基本的な手順は以下のとおりです。
- SPWebApplication への参照を取得します。
- Web アプリケーションの要求管理設定への参照を取得します。
- 条件を 1 つ以上作成します。
- 要求がルールに一致すると見なされるためには、そのルールのすべての条件を満たす (AND 条件) 必要があります。
- コンピューター プールへの参照を取得するか、必要に応じて作成します。
- ルールを追加します。
ここで、次の例を見てみましょう。
#SPWebApplication への参照を取得する
$w = Get-SPWebApplication -identity https://foo
#Web アプリケーションの要求管理設定への参照を取得する
$rmset = $w | Get-SPRequestManagementSettings
#条件を 1 つ以上作成する
$criteria = New-SPRequestManagementRuleCriteria -Property Url -Value ".*\.docx" -MatchType Regex
#コンピューター プールへの参照を取得するか、必要に応じて作成する
$mp = Add-SPRoutingMachinePool -RequestManagementSettings $rmset -Name MyRulePool -MachineTargets ($rmset | Get-SPRoutingMachineInfo -Name WFE1)
#ルールを追加する
$rmset | Add-SPRoutingRule -Name "Word Doc Rule" -Criteria $criteria -MachinePool $mp
ここで、ルーティング ルールを見てみましょう。
$rr = $rmset | Get-SPRoutingRule -Name "Word Doc Rule"
#条件を確認する
$rr.Criteria
#ルーティング ルールの有効期限の日時を変更する
$rr.Expiration = "12/25/2013 5:00:00 PM"
これでルーティング ルールが作成されました。調整ルールの作成もほぼ同様です。
#OneNote の要求を探す新しい条件ルールを追加する。これを行うには、要求の UserAgent を調査して、OneNote で使用されるヘッダーを確認します。
$criteria = New-SPRequestManagementRuleCriteria -Property UserAgent -Value ".*Microsoft Office OneNote 2010*" -MatchType Regex
#サーバーの正常性を示すスコアが 8 に達した場合に条件ルールを使用する調整ルールを追加する。
#調整ルールは Web アプリケーションすべてに適用されます。#個別のコンピューターに対してではないので、
#コンピューター プールは使用しません。
$rmset | Add-SPThrottlingRule -Name "OneNote Throttle Rule" -Criteria $criteria -Threshold 8
#Web アプリケーションのすべてのルーティング ルールを表示する
$rmset.RoutingRules
#すべての調整ルールを表示する
$rmset.ThrottlingRules
ここで、コンピューター プールの処理について少し見てみましょう。
#使用可能なすべてのルーティング コンピューターを取得する
Get-SPWebApplication | Get-SPRequestManagementSettings | Get-SPRoutingMachineInfo -Availability Available
#指定のプール内のすべてのコンピューターを取得する
Get-SPWebApplication | Get-SPRequestManagementSettings | Get-SPRoutingMachinePool -Name yourPoolName | % { $_.MachineTargets} | Format-Table
#コンピューターの WFE1 を特定の Web アプリケーションのすべてのコンピューター プールに追加する (PowerShell は専門ではないので Tyler に協力してもらいました)
$a = Get-SPWebApplication -Identity https://contoso
$b = $a | Get-SPRequestManagementSettings | Get-SPRoutingMachineInfo -Name WFE1
Get-SPWebApplication | Get-SPRequestManagementSettings | Get-SPRoutingMachinePool | % { $_ | Set-SPRoutingMachinePool -machinetargets ($_.machinetargets + $b) }
#コンピューター WFE1 を指定のプールに追加する
$a = Get-SPWebApplication -Identity https://contoso
$b = $a | Get-SPRequestManagementSettings | Get-SPRoutingMachineInfo -Name WFE1
$pool = $a | Get-SPRequestManagementSettings | Get-SPRoutingMachinePool -Name yourPoolName
$pool | Set-SPRoutingMachinePool -MachineTargets ($pool.MachineTargets + $b)
#WFE1 をすべてのコンピューター プールから削除する
Get-SPWebApplication | Get-SPRequestManagementSettings | Get-SPRoutingMachineInfo -Name WFE1 | Remove-SPRoutingMachineInfo
以上です。RM の使用を開始するときに必要な情報を示しました。
これはローカライズされたブログ投稿です。原文の記事は、「Working with Request Manager in SharePoint 2013」をご覧ください。