Arbeiten mit dem Anforderungs-Manager in SharePoint 2013

Veröffentlichung des Originalartikels: 15.09.2012

Da es zu diesem Thema noch nicht besonders viele Informationen zu geben scheint, möchte ich mich ein wenig mit den Möglichkeiten der PowerShell für den Anforderungs-Manager (Request Manager, RM) befassen. Der Anforderungs-Manager ist eine neue Komponente von SharePoint 2013, die für das Routing und die Einschränkung von SharePoint-Anforderungen entworfen wurde. Mithilfe von Informationen zur Art der eingehenden Anforderungen (z. B. Benutzer-Agent, angeforderte URL oder Quell-IP) kann SharePoint die Antwort auf jede Anforderung anpassen. Eine Anforderung kann basierend auf benutzerdefinierten Regeln weitergeleitet oder vollständig eingeschränkt werden. RM-Regeln werden über eine Web App angewendet, genau wie die Einschränkung in SharePoint 2010 ausgeführt wird. 

Auf höherer Ebene hat der Anforderungs-Manager die folgenden Aufgaben:

  • RM kann ein Routing zu einem WFE mit besserem Zustand ausführen, sodass WFEs mit einem schlechten Zustand aktiv bleiben.
  • RM kann schädliche Anforderungen identifizieren und umgehend abweisen.
  • RM kann Anforderungen priorisieren, indem Anforderungen mit geringerer Priorität (Bots) eingeschränkt werden, um Anforderungen mit hoher Priorität zuerst zu verarbeiten (Endbenutzer).
  • RM kann alle Anforderungen eines bestimmten Typs, wie zum Beispiel Suchanfragen, an bestimmte Computer senden.
  • Isolierter Datenverkehr kann dabei helfen, Fehler auf einem Computer zu beheben.
  • RM kann umfangreiche Anforderungen an leistungsstärkere WFEs senden.

So werden Routing- und Einschränkungsregeln implementiert:

  • Routingregeln leiten Anforderungen weiter und sind Computerpools zugeordnet.
  • Computerpools enthalten Server.
  • Server routen nach Gewichtung – statische Gewichtung und Integritätsgewichtung.
  • Die statische Gewichtung ist für WFEs konstant; die Integritätsgewichtung ändert sich dynamisch basierend auf Integritätsbewertungen.

Das ist nur ein allgemeiner Überblick – wenn Sie jedoch noch weitere Einzelheiten zu den Merkmalen und zur Verwendung des Anforderungs-Managers benötigen, finden Sie weitere Dokumentationen auf TechNet. Wenn Sie dies lesen, gehe ich davon aus, dass Sie über ausreichend Kenntnisse verfügen (oder neugierig genug sind), um mit dem Anforderungs-Manager zu arbeiten. Um Ihnen beim Einstieg behilflich zu sein, werfen wir einfach einmal einen Blick auf einige PowerShell-Cmdlets. Diese Cmdlets erschienen mir beim Arbeiten mit RM als hilfreich. Der grundsätzliche Ablauf sieht etwa folgendermaßen aus:

  • Verweis auf die SPWebApplication abrufen
  • Verweis auf die Anforderungs-Management-Einstellungen für die Webanwendung abrufen
  • Ein oder mehrere Kriterien erstellen
    • Eine Anforderung muss mit ALLEN Kriterien für eine Regel übereinstimmen, um der Regel zu entsprechen (d. h., sie sind durch ein AND verbunden)
  • Verweis auf einen Computerpool abrufen oder bei Bedarf einen neuen erstellen
  • Regel hinzufügen

Betrachten wir nun Schritt für Schritt das folgende Beispiel:

#Verweis auf die SPWebApplication abrufen
$w = Get-SPWebApplication -identity https://foo

#Verweis auf die Anforderungs-Management-Einstellungen für die Webanwendung abrufen
$rmset = $w | Get-SPRequestManagementSettings

#Ein oder mehrere Kriterien erstellen
$criteria = New-SPRequestManagementRuleCriteria -Property Url -Value ".*.docx" -MatchType Regex

#Verweis auf einen Computerpool abrufen oder bei Bedarf einen neuen erstellen
$mp = Add-SPRoutingMachinePool -RequestManagementSettings $rmset -Name MyRulePool -MachineTargets ($rmset | Get-SPRoutingMachineInfo -Name WFE1)

#Regel hinzufügen
$rmset | Add-SPRoutingRule -Name "Word Doc Rule" -Criteria $criteria -MachinePool $mp

Betrachten wir nun die Routingregel:
$rr = $rmset | Get-SPRoutingRule -Name "Word Doc Rule"

 

#Kriterien ansehen
$rr.Criteria

 

#Ablaufdatum und Uhrzeit der Routingregel ändern
$rr.Expiration = "12/25/2013 5:00:00 PM"

 

So schnell haben Sie eine fertige Routingregel. Das Erstellen einer Einschränkungsregel ist ganz ähnlich:

 

#Neue Kriteriumsregel hinzufügen, die nach OneNote-Anforderungen sucht. Dies ist möglich, indem der UserAgent in der Anforderung überprüft und der von OneNote verwendete Header gesucht wird.
$criteria = New-SPRequestManagementRuleCriteria -Property UserAgent -Value ".*Microsoft Office OneNote 2010*" -MatchType Regex

#Einschränkungsregel hinzufügen, die die Kriteriumsregel verwendet, wenn die Serverintegrität eine Bewertung von 8 erreicht.
#Beachten Sie, dass Einschränkungsregeln für die gesamte Webanwendung gelten #und nicht für einzelne Computer. Verwenden Sie daher
#keinen Computerpool damit.
$rmset | Add-SPThrottlingRule -Name "OneNote Throttle Rule" -Criteria $criteria -Threshold 8

 

#Alle Routingregeln für die Webanwendung anzeigen
$rmset.RoutingRules

 

#Alle Einschränkungsregeln anzeigen
$rmset.ThrottlingRules 

 

Nun werden wir uns etwas eingehender mit Computerpools befassen:

#Alle verfügbaren Routingcomputer abrufen
Get-SPWebApplication | Get-SPRequestManagementSettings | Get-SPRoutingMachineInfo -Availability Available

#Alle Computer in einem bestimmten Pool abrufen
Get-SPWebApplication | Get-SPRequestManagementSettings | Get-SPRoutingMachinePool -Name yourPoolName | % { $_.MachineTargets} | Format-Table

#Computer-WFE1 jedem Computerpool für eine bestimmte Webanwendung hinzufügen; tausend Dank an Tyler, der mir hierbei geholfen hat – ich bin nicht wirklich ein PowerShell-Held
$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) }

#Computer-WFE1 einem bestimmten Pool hinzufügen
$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 aus jedem Computerpool entfernen
Get-SPWebApplication | Get-SPRequestManagementSettings | Get-SPRoutingMachineInfo -Name WFE1 | Remove-SPRoutingMachineInfo

So, das wär's für heute. Das sollte ausreichend Informationen für den Einstieg bieten.

 

 

Es handelt sich hierbei um einen übersetzten Blogbeitrag. Sie finden den Originalartikel unter Working with Request Manager in SharePoint 2013