使用 SharePoint 2013 中的请求管理器

原文发布于 2012 年 9 月 15 日(星期六)

我还没有看到很多关于此内容的信息,因此我认为应花点时间讨论一些用于请求管理器 (RM) 的 PowerShell。对于不熟悉 RM 的读者,它是 SharePoint 2013 的一个新功能,旨在执行 SharePoint 对请求的路由和限制。通过了解传入请求的性质(例如,用户代理、请求的 URL 或源 IP),SharePoint 可以自定义对每个请求的响应。它可以根据您定义的规则对请求进行路由,或者完全限制请求。根据 Web 应用程序应用 RM 规则,就像在 SharePoint 2010 中进行限制一样。 

在高级别,RM 的目标是:

  • RM 可以路由到运行状况更好的 WFE,使运行状况低的 WFE 保持存活
  • RM 可以识别有害的请求并立即拒绝
  • RM 可以设置请求的优先级,通过限制低优先级的请求(自动程序)来为高优先级的请求(最终用户)服务
  • RM 可以发送特定类型(如搜索)的所有请求,例如发送到特定计算机
  • 隔离的流量有助于排除某台计算机上的错误
  • RM 可以向功能更强大的 WFE 发送繁重请求

路由和限制规则的实现如下:

  • 路由规则对请求进行路由,并与 MachinePools 关联
  • MachinePools 包含服务器
  • 服务器使用权重进行路由 – 静态权重和运行状况权重
  • WFE 的静态权重是恒定的;运行状况权重根据运行状况得分动态变化

好了,这就是请求管理器的基本概览。如果您想获得关于 RM 的功能和使用的详细信息,TechNet 上应该有其他文档可供参考。如果您阅读本文,我假设您对其有足够了解(或足够好奇),以致于您想实际使用其进行一些操作。所以我在这里将介绍一些 PowerShell 来帮助您入门。它们是我在使用 RM 时发现很有用的 cmdlet。您将经历的基本过程如下:

  • 获得对 SPWebApplication 的引用
  • 获得对 Web 应用程序的请求管理设置的引用
  • 创建一个或多个条件
    • 请求必须符合一条规则的所有条件才能与该规则匹配(即,它们在一起是“与”的关系)
  • 获得对计算机池的引用,或者创建一个新计算机池(如果需要)
  • 添加规则

我们现在来浏览一个示例:

#获得对 SPWebApplication 的引用
$w = Get-SPWebApplication -identity https://foo

#获得对 Web 应用程序的请求管理设置的引用
$rmset = $w | Get-SPRequestManagementSettings

#创建一个或多个条件
$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 应用程序的每个计算机池;非常感谢 Tyler 帮助我完成这条命令,我真的不擅长 PowerShell
$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

好了,就是这些。这应该为您提供了足够开始操作的信息。

 

 

这是一篇本地化的博客文章。请访问 Working with Request Manager in SharePoint 2013 以查看原文