Работа с диспетчером запросов в 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