Работа с диспетчером запросов в SharePoint 2013

Исходная статья опубликована в субботу, 15 сентября 2012 г.

По этой теме пока доступно не так много полезной информации, поэтому я решил, что стоит уделить ей время и рассказать об использовании PowerShell для диспетчера запросов. Для тех, кто еще не знаком с диспетчером запросов, — это новый компонент SharePoint 2013, предназначенный для маршрутизации и регулирования запросов SharePoint. Зная характер каждого входящего запроса, например запрос агента пользователя, запрос URL-адреса или исходного IP-адреса, SharePoint может настроить ответ на него. Запросы могут маршрутизироваться на основе определенных вами правил или полностью блокироваться. Правила диспетчера запросов применяются на уровне веб-приложения, так же как и регулирование в SharePoint 2010. 

Диспетчер запросов решает следующие общие задачи.

  • Он может маршрутизировать запросы запросы на интерфейсные веб-серверы с более высокой производительностью, сохраняя доступность интерфейсных веб-серверов с более низкой производительностью.
  • Он может определять опасные запросы и немедленно отклонять их.
  • Он может определять приоритеты запросов посредством регулирования количества менее приоритетных запросов (от программ-роботов), обслуживаемых вместо более приоритетных запросов (от конечных пользователей).
  • Он может отправлять все запросы определенного типа, например запросы поиска, на определенные компьютеры.
  • Изоляция трафика может помочь в устранении неполадок на определенном компьютере.
  • Диспетчер запросов может отправлять сложные запросы на более производительные интерфейсные веб-серверы.

Правила маршрутизации и регулирования применяются следующим образом.

  • Правила маршрутизации маршрутизируют запросы и связаны с пулами компьютеров.
  • Пулы компьютеров содержат серверы.
  • Для маршрутизации серверы используют веса — статические веса и веса работоспособности.
  • Статические веса являются постоянными для интерфейсных веб-серверов. Веса работоспособности меняются динамически в соответствии с показателями работоспособности.

Итак, вот общее представление о том, что такое диспетчер запросов. Если вы хотите более подробно ознакомиться с его функциями и использованием, вы можете найти соответствующую документацию на сайте TechNet. Если вы читаете эту запись, то я предполагаю, что вы уже достаточно знаете об этом компоненте (или хотите узнать о нем побольше) и теперь хотели бы применить его на практике. Поэтому я приведу здесь ряд команд PowerShell, которые помогут вам приступить к работе. Это командлеты, которые оказались полезными в процессе моей работы с диспетчером запросов. В общей форме процесс выглядит следующим образом.

  • Получите ссылку на SPWebApplication.
  • Получите ссылку на параметры управления запросами для веб-приложения.
  • Создайте одно или несколько условий.
    • Чтобы запрос соответствовал правилу, должны выполняться ВСЕ условия правила (то есть условия объединяются операцией И).
  • Получите ссылку на пул компьютеров или создайте новый пул при необходимости.
  • Добавьте правило.

Теперь давайте рассмотрим пример.

#Получаем ссылку на SPWebApplication
$w = Get-SPWebApplication -identity https://foo

#Получаем ссылку на параметры управления запросами для веб-приложения
$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. Для этого оно может изучать строку агента пользователя в запросе и искать заголовок, используемый OneNote.
$criteria = New-SPRequestManagementRuleCriteria -Property UserAgent -Value ".*Microsoft Office OneNote 2010*" -MatchType Regex

#Добавляем правило регулирования, которое применяет правило условий, если показатель работоспособности сервера достигает значения 8.
#Обратите внимание на то, что правила регулирования применяются ко всему веб-приложению, #а не к отдельным компьютерам, поэтому связывать их с
#пулом компьютеров не нужно.
$rmset | Add-SPThrottlingRule -Name "OneNote Throttle Rule" -Criteria $criteria -Threshold 8

 

#Теперь просмотрим все правила маршрутизации для веб-приложения
$rmset.RoutingRules

 

#Просмотрим все правила регулирования
$rmset.ThrottlingRules 

 

Теперь давайте посмотрим, как работать с пулами компьютеров.

#Получаем все компьютеры, доступные для маршрутизации
Get-SPWebApplication | Get-SPRequestManagementSettings | Get-SPRoutingMachineInfo -Availability Available

#Получаем все компьютеры, входящие в определенный пул
Get-SPWebApplication | Get-SPRequestManagementSettings | Get-SPRoutingMachinePool -Name yourPoolName | % { $_.MachineTargets} | Format-Table

#Добавляем компьютер WFE1 в каждый пул компьютеров для определенного веб-приложения; огромное спасибо Тайлеру, который помог мне с этой командой — я на самом деле не большой специалист по 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