Article d’origine publié le samedi 15 septembre 2012

Je n’ai pas vu un grand nombre d’informations sur ce sujet, j’ai donc pensé prendre un petit moment pour franchement utiliser PowerShell pour le gestionnaire de requêtes. Pour ceux d’entre vous qui ne sont pas familiers avec le gestionnaire de requêtes, c’est une nouvelle fonctionnalité de SharePoint 2013 conçue pour le routage et la limitation des requêtes SharePoint. En ayant connaissance de la nature des demandes entrantes, par exemple, l’agent utilisateur, l’URL demandée, ou l’IP source, SharePoint peut personnaliser la réponse à chaque requête. Il peut l’acheminer en fonction des règles que vous définissez, ou il peut limiter la requête complètement. Les règles de gestionnaire de requêtes sont appliquées par application web, tout comme la limitation est réalisée dans SharePoint 2010. 

À un niveau élevé, les objectifs du gestionnaire de requêtes sont les suivants :

  • le gestionnaire de requêtes peut acheminer vers des sites web frontaux avec une meilleure intégrité, en gardant les sites web frontaux à faible intégrité actifs ;
  • le gestionnaire de requêtes peut identifier les requêtes dangereuses et les refuser immédiatement ;
  • le gestionnaire de requêtes peut affecter des priorités aux requêtes en limitant celles à priorité inférieure (robots) pour servir celle à priorité supérieure (utilisateur finaux) ;
  • le gestionnaire de requêtes peut envoyer toutes les demandes d’un type spécifique, comme de recherche, vers des ordinateurs spécifiques ;
  • le trafic isolé peut aider à dépanner les erreurs sur un ordinateur ;
  • le gestionnaire de requêtes peut envoyer des requêtes laborieuses à des sites web frontaux plus puissants.

Les règles de routage et de limitation sont implémentées comme suit :

  • les règles de routage acheminent les requêtes et sont associées à des MachinePools ;
  • les MachinePools contiennent des serveurs ;
  • les serveurs utilisent des poids pour le routage, poids statiques et poids d’intégrité ;
  • les poids statiques sont constants pour les sites web frontaux, les poids d’intégrité changent dynamiquement en fonction des notes d’intégrité.

Cela est donc la vue d’ensemble de base du gestionnaire de requêtes. Vous trouverez certainement plus de détails sur les fonctionnalités et l’utilisation du gestionnaire de requêtes dans d’autres documents sur TechNet. Si vous lisez ceci, je suppose que vous en savez assez (ou êtes assez curieux) pour vouloir réellement l’utiliser. Je vais donc simplement utiliser PowerShell ici pour vous aider à démarrer. Les applets de commande suivantes sont utiles lors de l’utilisation du gestionnaire de requêtes. Le processus de base par lequel vous passez ressemble à ce qui suit :

  • obtenir une référence à SPWebApplication ;
  • obtenir une référence aux paramètres de gestion de requêtes pour l’application web ;
  • créer un ou plusieurs critères ;
    • Une requête doit correspondre à TOUS les critères pour une règle afin de correspondre à la règle (c’est-à-dire, ils sont logiquement liés par AND)
  • obtenir une référence à un pool d’ordinateur, ou en créer une si nécessaire ;
  • ajouter la règle.

Traitons un exemple maintenant :

#Obtenir une référence à SPWebApplication
$w = Get-SPWebApplication -identity http://foo

#Obtenir une référence aux paramètres de gestion de requêtes pour l’application web
$rmset = $w | Get-SPRequestManagementSettings

#Créer un ou plusieurs critères
$criteria = New-SPRequestManagementRuleCriteria -Property Url -Value ".*\.docx" -MatchType Regex

#Obtenir une référence à un pool d’ordinateur, ou en créer une si nécessaire
$mp = Add-SPRoutingMachinePool -RequestManagementSettings $rmset -Name MyRulePool -MachineTargets ($rmset | Get-SPRoutingMachineInfo -Name WFE1)

#Ajouter la règle
$rmset | Add-SPRoutingRule -Name "Word Doc Rule" -Criteria $criteria -MachinePool $mp

Passons à cette règle de routage maintenant :
$rr = $rmset | Get-SPRoutingRule -Name "Word Doc Rule"

 

#voir les critères
$rr.Criteria

 

#modifier la date et l’heure d’expiration de la règle de routage
$rr.Expiration = "12/25/2013 5:00:00 PM"

 

Voilà, maintenant vous avez une règle de routage. La création d’une règle de limitation est très similaire :

 

#Ajouter un nouveau critère qui recherche les requêtes OneNote. Il peut faire cela en examinant UserAgent dans la requête et en recherchant l’en-tête que OneNote utilise.
$criteria = New-SPRequestManagementRuleCriteria -Property UserAgent -Value ".*Microsoft Office OneNote 2010*" -MatchType Regex

#Ajouter une règle de limitation qui utilise la règle de critères lorsque l’intégrité du serveur atteint une note de 8. 
#Notez que les règles de limitations s’appliquent à l’ensemble de l’application web, #et non pas à des ordinateurs individuels, vous n’utilisez donc pas
#un pool d’ordinateurs avec.
$rmset | Add-SPThrottlingRule -Name "OneNote Throttle Rule" -Criteria $criteria -Threshold 8

 

#afficher maintenant toutes les règles de routage pour l’application web
$rmset.RoutingRules

 

#Afficher toutes les règles de limitation
$rmset.ThrottlingRules 

 

Examinons de plus près l’utilisation de pools d’ordinateurs maintenant :

#Obtenir tous les ordinateurs de routage disponibles
Get-SPWebApplication | Get-SPRequestManagementSettings | Get-SPRoutingMachineInfo -Availability Available

#Obtenir tous les ordinateurs dans un pool spécifique
Get-SPWebApplication | Get-SPRequestManagementSettings | Get-SPRoutingMachinePool -Name yourPoolName | % { $_.MachineTargets} | Format-Table

#Ajouter l’ordinateur WFE1 à chaque pool d’ordinateurs pour une application web particulière ; un grand merci à Tyler qui m’a aidé avec ceci, je ne suis pas réellement un expert PowerShell
$a = Get-SPWebApplication -Identity http://contoso
$b = $a | Get-SPRequestManagementSettings | Get-SPRoutingMachineInfo -Name WFE1
Get-SPWebApplication | Get-SPRequestManagementSettings | Get-SPRoutingMachinePool | % { $_ | Set-SPRoutingMachinePool -machinetargets ($_.machinetargets + $b) }

#Ajouter l’ordinateur WFE1 à un pool spécifique
$a = Get-SPWebApplication -Identity http://contoso
$b = $a | Get-SPRequestManagementSettings | Get-SPRoutingMachineInfo -Name WFE1
$pool = $a | Get-SPRequestManagementSettings | Get-SPRoutingMachinePool -Name yourPoolName
$pool | Set-SPRoutingMachinePool -MachineTargets ($pool.MachineTargets + $b)

#Supprimer WFE1 de tous les pools d’ordinateurs
Get-SPWebApplication | Get-SPRequestManagementSettings | Get-SPRoutingMachineInfo -Name WFE1 | Remove-SPRoutingMachineInfo

Voilà, c’est terminé. Cela doit être assez pour commencer.

 

 

Ce billet de blog a été traduit de l’anglais. L’article d’origine est disponible à l’adresse Working with Request Manager in SharePoint 2013