Windows PowerShell-Skript zum Konfigurieren von Drosselung auf mehreren Computern
Dieses Beispiel beschreibt die erforderlichen Schritte zum Verwenden eines Windows PowerShell-Skripts zum Konfigurieren der Standardwerte für die Dienstdrosselung für mehrere Computer, die Teil einer Farm sind. Dieses Beispiel kann auf einfache Weise angepasst werden, um beliebige andere Einstellungen zu ändern, auf die AppFabric zugreift.
Wenn eine aus mehreren Computern bestehende Serverfarm verwaltet wird, kann es mühsam sein, zu jedem Computer einzeln eine Verbindung herzustellen und eine einzelne Einstellung zu ändern. Dieses Problem vergrößert sich, wenn viele Computer in der Farm vorhanden sind oder solche Änderungen sehr häufig anfallen. Durch die Einführung der Windows Server AppFabric-Persistenz- und Überwachungsfeatures steht ein einfaches Verfahren zum Extrahieren von Informationen zu den aktiven Computern in der Farm direkt aus der Datenbank sowie zum Verwenden dieser Informationen zum Ausführen von Windows PowerShell-Befehlen für diese Computer zur Verfügung.
Dieses Beispiel zeigt Ihnen, wie Farminformationen aus den Computern in einer Farm extrahiert und Windows PowerShell-Cmdlets für alle aktiven Computer in der Farm ausgeführt werden können.
Dieses Beispiel funktioniert mit beliebigen Anwendungen. Es wird die Gemeinsame AppFabric-Beispielanwendung empfohlen, die für die Verwendung mit AppFabric-Beispielen erstellt wurde. Sie finden diese Anwendung, wenn Sie in den Ordner <Beispiele>\SampleApplication\OrderApplication navigieren. Dabei ist <Beispiele> der Pfad, unter dem Sie die AppFabric-Beispiele installiert haben.
Hinweis
Beispiele werden nur zu Anschauungszwecken bereitgestellt. Sie sind nicht für die Verwendung in einer Produktionsumgebung gedacht und wurden nicht in einer Produktionsumgebung getestet. Microsoft bietet keinen technischen Support für diese Beispiele.
Voraussetzungen
Dieses Beispiel kann auf einem Einzelcomputer oder auf mehreren Computern ausgeführt werden, die die folgenden Voraussetzungen erfüllen. Wenn Sie beabsichtigen, das Beispiel auf einem Einzelcomputer auszuführen, können Sie die Anweisungen für mehrere Computer ignorieren.
Sie müssen AppFabric auf allen Computern installieren, die an der Beispielausführung teilnehmen, und alle Computer müssen eine gemeinsame Datenbank für Persistenz und/oder Überwachung verwenden.
Zum Ausführen der Skripts (wie bereitgestellt) benötigen Sie Administratorberechtigungen auf dem Computer, auf dem das Beispiel ausgeführt wird. Abhängig von den Änderungen, die Sie vornehmen möchten, benötigen Sie ggf. Administratorberechtigungen auf allen anderen Computern.
Alle teilnehmenden Computer müssen einer Domäne angehören, und Windows-Remoteverwaltung 2.0 (Windows Remote Management, WinRM) muss auf allen Computern installiert sein. Für Plattformen auf niedriger Ebene kann WinRM 2.0 CTP3 unter WinRM 2.0 Downloads (https://go.microsoft.com/fwlink/?LinkId=194424) heruntergeladen werden. Dieses Beispiel kann für die Ausführung in einer Nicht-Domänenumgebung geändert werden. Weitere Informationen (in englischer Sprache) finden Sie in der Antwort auf die Frage „CAN I TEST REMOTING ON A SINGLE COMPUTER (NOT IN A DOMAIN)?“ unter about_Remote_FAQ (https://go.microsoft.com/fwlink/?LinkId=194425).
Windows PowerShell muss für die Remoteausführung aktiviert sein. Zu diesem Zweck können Sie Enable-PSRemoting -force ausführen, nachdem die beiden oben genannten Anforderungen erfüllt sind. Wenn Sie weitere Informationen zu den Windows PowerShell-Remotefunktionen erhalten möchten, geben Sie help about_remote ein.
Alle Computer im Beispiel müssen Teil der Farm sein (d. h., die gleichen Anwendungen und Dienste müssen auf allen Computern installiert sein). Außerdem müssen sie mindestens ein Mal Überwachungsdaten in der gemeinsamen Datenbank persistent gespeichert oder gemeldet haben.
SQL-Clientverbindungen und das SQL Server-Snap-In für Windows PowerShell müssen auf dem Host installiert sein, der dieses Beispiel ausführt.
Beispieldateien
Skript Get-ASActiveMachine.ps1 (im Ordner Code)
Eine Infodatei
Einrichten und Ausführen dieses Beispiels
Führen Sie einen Windows PowerShell-Host (z. B. die mit Windows PowerShell 2.0 bereitgestellte Konsole) als Administrator aus. Stellen Sie sicher, dass „Als Administrator ausführen“ ausgewählt ist, wenn Sie den Host ausführen, wenn die Ausführung nicht unter dem integrierten Konto „Administrator“ erfolgt.
Hinweis
Damit Sie dieses Beispiel ausführen können, müssen Sie die Ausführung unsignierter Skripts auf dem Computer zulassen. Dies wird in den nachfolgenden Schritten beschrieben.
Führen Sie den folgenden Befehl im Host aus: Set-ExecutionPolicy Unrestricted. Durch diesen Vorgang wird die Ausführung des unsignierten Beispielskripts ermöglicht. Stellen Sie sicher, dass diese Einstellung zurückgesetzt wird, nachdem Sie die Ausführung des Beispiels beendet haben. Wenn Sie die Ausführung ähnlicher Skripts in Ihrer Produktionsumgebung bewerten möchten, wird empfohlen, das Skript zu signieren. Weitere Informationen (in englischer Sprache) zum Signieren von Skripts finden Sie unter about_Signing (https://go.microsoft.com/fwlink/?LinkID=194426).
Entfernen dieses Beispiels
- Wenn Sie dieses Beispiel entfernen möchten, setzen Sie Ihre Ausführungsrichtlinie auf die vorherige Stufe oder die Standardeinstellung für Windows PowerShell mithilfe des folgenden Befehls zurück: Set-ExecutionPolicy Default.
Veranschaulichung
Dieses Beispiel besteht aus zwei Teilen. Im ersten Teil wird die Ausführung beliebiger Cmdlets (insbesondere AppFabric-Cmdlets) auf einer Sammlung von Computern erläutert. Der zweite Teil besteht aus einem Skript-Cmdlet, das zum Abrufen der Liste der aktiven Computer in einer Farm verwendet wird. Anschließend zeigt ein Beispiel die Verwendung beider Teile.
Remotekonfiguration
Wenn alle oben beschriebenen Voraussetzungen erfüllt sind, ist das Ausführen von Cmdlets auf Remotecomputern einfach. Das zu verwendende Cmdlet trägt den Namen Invoke-Command und nimmt Parameter für alle Computer an, auf denen es ausgeführt werden soll. Es gibt außerdem das auf diesen Computern zu verwendende Skript an.
Wichtig
Durch Ausführen der Schritte in diesem Beispiel wird der Standardwert „Maximale Anzahl paralleler Aufrufe“ für alle Dienste auf den Computern geändert, auf denen das Skript ausgeführt wird. Dies kann negative Auswirkungen in Produktionsumgebungen haben, indem die Server ggf. Denial-of-Service-Angriffen (DoS) ausgesetzt sind oder legitimen Aufrufern der Zugriff verweigert wird. Sie sollten die folgenden Schritte in Produktionsumgebungen erst auszuführen, nachdem Sie die Systeme gesichert und einen geeigneten Wert für Ihre Umgebung ausgewählt haben. Wenn Sie nicht sicher sind, welcher Wert für „MaxConcurrentCalls“ gewählt werden sollte, wenden Sie sich an Ihren Softwarearchitekten, oder lesen Sie die WCF-Produktdokumentation zur MaxConcurrentCalls-Eigenschaft (https://go.microsoft.com/fwlink/?LinkId=194427).
Angenommen, Sie möchten den folgenden AppFabric-Befehl ausführen:
Set-ASAppServiceThrottling -root -MaxConcurrentCalls 200
Zum Ausführen des Befehls auf einem Satz von zwei Computern mit den Namen „Dublin001“ und „Dublin002“ hat der Befehl z. B. die folgende Form:
Invoke-Command -ComputerName Dublin001,Dublin002 -ScriptBlock {Import-Module ApplicationServer; Set-ASAppServiceThrottling -root -MaxConcurrentCalls 200}
Beachten Sie, dass in der Skriptblockdefinition (dem Text zwischen den geschweiften Klammern) der erste Befehl Import-Module ApplicationServer lautet. Dies stellt sicher, dass die durch Invoke-Command erstellte Remoteumgebung über alle erforderlichen AppFabric-Cmdlets verfügt.
Datenbankabfrage nach aktiven Computern
Damit der oben genannte Befehl auf allen Computern in einer Farm ausgeführt wird, müssen Sie eine Liste aller Computer verwalten und diese verwenden, um die Argumente für den Parameter „ComputerName“ im Beispiel oben bereitzustellen. Alternativ können Sie ein Skript-Cmdlet verwenden, das mit diesem Beispiel zur Verfügung gestellt wird.
Dieses Skript-Cmdlet trägt den Namen Get-ASActiveMachine. Es verwendet ein SQL Server-Snap-In für Windows PowerShell, um die aktiven Computer aus den AppFabric Überwachungsdaten zu extrahieren. Anschließend verwendet es integrierte AppFabric-Cmdlets, um die Liste der aktiven Computer aus den Persistenzdaten abzurufen. Schließlich kombiniert es die beiden Ergebnissätze und gibt das Ergebnis an den Aufrufer zurück.
Führen Sie die folgende Zeile in einem beliebigen Windows PowerShell-Host (z. B. in der Konsole, die mit Windows PowerShell 2.0 bereitgestellt wird) aus, um dieses Cmdlet zu installieren:
Import-Module <samples>\Samples\Management\MultiMachineConfiguration\Code\Get-ASActiveMachine.ps1
Dabei ist <samples> der Pfad, unter dem Sie die AppFabric-Beispiele installiert haben.
Anschließend können Sie das folgenden Cmdlet ausführen, dass die Liste aller aktiven Computer in Ihrer Farm zurückgibt:
Get-ASActiveMachine
Hinweis
Weiter unten finden Sie eine Liste aller Parameter, die dieses Cmdlet annehmen kann. Außerdem wird ihre Verwendung erläutert, wenn Ihr Servercomputer mit SQL nicht als Standardinstanz auf dem lokalen Computer installiert ist und die AppFabric-Überwachungsdatenbank nicht den Namen ApplicationServerMonitoring trägt.
Die zurückgegebene Liste ähnelt der folgenden Liste:
Dublin001
Dublin002
Führen Sie den folgenden Befehl aus, um die Konfiguration für mehrere Computer mit diesem Cmdlet zu kombinieren:
Invoke-Command -ComputerName (Get-ASActiveMachine) -ScriptBlock {Import-Module ApplicationServer; Set-ASAppServiceThrottling -root -MaxConcurrentCalls 200}
Get-ASActiveMachine-Parameter
-Server |
Zwingend erforderlicher Parameter. Wenn SQL Server Express verwendet wird, legen Sie diesen Parameter auf <Servername>\SQLExpress fest. Wenn SQL Server Enterprise verwendet wird, legen Sie diesen Parameter auf <Servername> fest. |
-Database |
Zwingend erforderlicher Parameter. Eine Zeichenfolge zum Angeben der Überwachungsdatenbank. |
-SiteName |
Optionaler Parameter. Ein Zeichenfolgefilterparameter, durch den das Cmdlet nur die aktiven Computer für die angegebene Website zurückgibt. |
-VirtualPath |
Optionaler Parameter. Ein Zeichenfolgefilterparameter, durch den das Cmdlet nur die aktiven Computer für den virtuellen Pfad zurückgibt. Diese Zeichenfolge kann mit dem Parameter -SiteName verwendet werden, um anzugeben, dass das Cmdlet nur Computer zurückgeben soll, die Lastenausgleich für einen bestimmten Dienst ausführen. |
-ActiveSince |
Optionaler Parameter. Ein Objekt vom Typ DateTime, das zum Filtern nur der Computer verwendet werden kann, die während eines bestimmten Zeitraums Überwachungsdaten persistent gespeichert oder gemeldet haben. Verwenden Sie z. B. den folgenden Befehl, um die Daten der letzten 24 Stunden zurückzugeben: Get-ASActiveMachine –ActiveSince (Get-Date).AddHours(-24). |
-ApplicationObject |
Optionaler Parameter. Ein Microsoft.ApplicationServer.Management.Data.ApplicationInfo-Objekt, das zum Filtern nur der Computer verwendet werden kann, die Überwachungsdaten zu einer bestimmten Anwendung persistent gespeichert oder gemeldet haben. Wird vor allem für Pipingszenarien verwendet, z. B. Get-ASApplication –SiteName ‘Default Web Site’ –VirtualPath \OnboardingWorkflow | Get-ASActiveMachine. |
Weitere Ressourcen
Weitere Informationen (in englischer Sprache) zur Remoteausführung von Windows PowerShell-Skripts finden Sie unter about_Remote (https://go.microsoft.com/fwlink/?LinkId=194428), oder geben Sie help about_remote auf einem Windows PowerShell-Host ein.
2011-12-05