Recovery-Pläne des VMware Site Recovery Manager (SRM) per PowerCLI anpassen

VMware Site Recovery Manager (SRM) lässt sich auch per PowerCLI verwalten. Diese Anleitung führt von einfachen Skripten hin zu komplexen Szenarien.

In diesem Tipp werde ich Ihnen zeigen, wie Sie VMware PowerCLI-Skripte zur Verwaltung des VMware vCenter Site Recovery Manager (SRM) verwenden können. Zusammen mit der PowerShell können Sie so VMware-Produkte wie Site Recovery Manager (SRM) enorm effizient verwalten, vor allem wenn Sie im Unternehmen zwar mit VMware arbeiten, aber zusätzlich noch mit Windows-Arbeitsstationen.

Sie können zwar im klassischen Stil Batch-Dateien verwenden, um Befehlsschritte in SRM durchzuführen. Allerdings sind Windows-Batch-Dateien keine besonders leistungsfähige und erweiterbare Programmier-Schnittstelle (API) für die Anpassung und Modifikation der vSphere -Plattform. Wenn Sie subtiler und professioneller arbeiten wollen, effiziente Skripte erarbeiten und umfassende Automatismen vornehmen müssen, dann brauchen Sie ein robusteres Skriptmodul.

Glücklicherweise bietet VMware seit einiger Zeit eine umfassende Unterstützung der Microsoft PowerShell-Umgebung, ergänzt diese mit zusätzlichen Cmdlets, die speziell für die Verwaltung der virtuellen VMware-Umgebung entwickelt wurden, und bietet auf diesem Weg auch die Unterstützung einer effizienten Skriptentwicklung. 

Die Technologie ist mittlerweile ausgereift und funktioniert auch mit den aktuellen VMware 5.5-Produkten und der PowerShell 4.0 in Windows Server 2012 R2 und Windows 8.1

PowerCLI installieren und einrichten

Die PowerShell ist mittlerweile fester Bestandteil von Windows-Systemen und muss dort nicht mehr gesondert installiert werden. Sie müssen auf dem SRM-Server im Recovery-Standort die VMware PowerCLI-Tools installieren, um die neuen Cmdlets zu nutzen. Damit Sie die PowerShell zur Verwaltung von vSphere nutzen können, installieren Sie am besten PowerCLI 5.5. 

Die neue Version 5.5 bietet einige Vorteile im Vergleich zur Version 5.2. VMware hat hier mehr Cmdlets integriert und Sie können ein Konsolenfenster für die virtuellen Server öffnen. Außerdem können Sie jetzt auch die Lizenzen der Virtualisierungshosts verwalten. Die aktuelle Version können Sie direkt bei VMware herunterladen und auf dem entsprechenden Rechner installieren.

Sobald Sie die PowerCLI-Umgebung auf dem SRM-Server am Recovery-Standort eingerichtet haben, können Sie PowerShell-Skripte erstellen und dazu die neuen Cmdlets nutzen. Es lohnt sich, in PowerCLI Ihre Sicherheitseinstellungen zu konfigurieren und zu bestätigen, dass Sie sich mit PowerCLI auch am vCenter-Server vor Ort einloggen können.

Eine der häufigsten Fragen in den SRM-Foren lautet, wie die Verwendung des Arbeitsspeichers der VMs während des Wiederherstellungsprozesses reduziert werden kann. Dies ist ein häufiges Problem, weil viele Firmen manchmal weniger leistungsfähige ESX-/ESXi-Hosts am Recovery-Standort verwenden. 

Vor allem ist häufig deutlich weniger Arbeitsspeicher in den Hosts am Recovery-Standort als an den produktiven Standorten verbaut. Mit PowerCLI können wir den Prozess automatisieren und den Speicherverbrauch verringern. 

Mit einer Verringerung der RAM-Zuweisung an eine virtuelle Maschine (VM) können Sie, zusammen mit PS-Skripten, den Vorgang automatisieren, bevor VMs aktiv geschaltet werden. Einfach ausgedrückt automatisieren Sie mit dem Skript Abläufe und starten diese zu Zeiten, an denen der ESX-/ESXi-Host nicht zu stark belastet ist.

Es gibt ein paar Möglichkeiten, dies per PowerCLI zu bewerkstelligen. Sie können zum Beispiel für jede VM ein PowerShell-Skript schreiben und ihren Speicher reduzieren. Unten ist ein Beispiel für ein solches PowerShellS-Skript mit der Bezeichnung ctx01

Dieses Skript verwendet das Set-vm Cmdlet für die Speicherzuweisung der Wiederherstellungs-VM zu 1024 Megabyte. Die Option -confirm: $ false verhindert, dass das Skript auf eine Bestätigung durch den Benutzer wartet, um seine Änderungen durchzuführen:

Beispiel 1:

connect-viserver vc4nj.corp.com --user corp\administrator --password vmware Set-VM ctx01 -MemoryMB "1024" -Confirm:$FALSE Disconnect-VIServer –Server vc4nj.corp.com -Confirm:$FALSE

Natürlich ist ein PowerShell-Skript für jede VM sehr verwaltungsintensiv. Besser ist es daher, ein Skript zu verwenden, mit dem Sie mehrere VMs auf einmal anpassen können. Je weniger Skripte Sie verwenden, umso übersichtlicher ist der Verwaltungsaufwand. Außerdem müssen Sie bei neuen Versionen dann weniger Anpassungen vornehmen. 

Das Beispiel oben ist aber auf jeden Fall ein schnell umsetzbarer Ansatz, um das beschriebene Problem zu lösen. Wenn Sie nur wenige VMs auf einmal wiederherstellen müssen, hilft das Skript enorm und ist sicherlich besser, als auf herkömmlichen Weg die Wiederherstellung durchzuführen.

Das obere Skript lässt sich aber sehr gut ausbauen. Unten finden Sie zum Beispiel ein PowerShell-Skript, welches das Cmdlet get-vm verwendet und jede VM, die mit dem Text "ctx" beginnt, erfasst. Das Ergebnis dieses Befehls wird dann über Pipelines an das Cmdlet set-vm übergeben. Dieser Befehl ändert dann die Speicherzuweisung meiner VMs ctx01 , ctx02 und so weiter. Diese Pipeline-Möglichkeit gibt es auch für andere Cmdlets und stellt eine der Stärken der PowerShell dar, von der auch PowerCLI profitiert.

Beispiel 2:

connect-viserver vc4nj.corp.com --user corp\administrator --password vmware get-vm ctx* | Set-VM -MemoryMB "1024" -Confirm:$FALSE Disconnect-VIServer –Server vc4nj.corp.com -Confirm:$FALSE

Ein anspruchsvolleres Skript kann nicht nur eine feste Speichermenge konfigurieren, sondern die der VM zugewiesene Speichermenge auslesen und danach um einen bestimmten Faktor reduzieren. Das ist in größeren Umgebungen sicher sinnvoller und stellt einen Ausbau des vorherigen Skriptes dar.

Beispielsweise wäre es damit möglich, die Speichermenge aller gefundenen VMs mit dem Faktor x0.5 zu konfigurieren, den Speicherbedarf also zu halbieren. Das folgende Skript erfasst dazu die aktuelle Speichermenge, die der VM zugewiesen ist, und reduziert sie dann um 50 Prozent. 

Für jede VM mit ctx* in seinem Namen findet das Skript die zugewiesene Menge an Speicher und verwendet dann das Cmdlet Set-vm, um den Speicher zu konfigurieren. Sie sehen also, die Skripte werden zwar komplizierter, bieten dafür aber auch mehr Möglichkeiten und sind wesentlich flexibler als einfache Skripte. Einfache Skripte sind zwar schneller geschrieben, aber weitaus weniger flexibel. Je mehr VMs Sie einsetzen, umso ausgereifter sollten die Skripte sein.

Beispiel 3:

connect-viserver vc4nj.corp.com --user corp\administrator --password vmware Foreach ($VM  in Get-VM ctx*){ $NewMemAmount = $VM.MemoryMB / 2 Set-VM $VM-MemoryMB $NewMemAmount -Confirm:$FALSE}  Disconnect-VIServer –Server vc4nj.corp.com -Confirm:$FALSE

In meinem Fall habe ich mich entschlossen, diese letzte Methode zur Steuerung der Speichermenge zu verwenden.  An dieser Stelle möchte ich Al Renouf aus Großbritannien danken, der mir dabei half, das letzte Beispiel zu schreiben.

Der nächste Teil beschäftigt sich mit der Möglichkeit, diese PowerShell-Skripte mit Site Recovery Manager zu verbinden und deren Aufruf zu automatisieren. Ich möchte nicht die einzelnen PowerShell-Skripte direkt aufrufen müssen, sondern eine Cmd-/Bat-Datei erstellen. 

Diese soll das entsprechende Skript zur gegebenen Zeit starten. Dies reduziert die Textmenge innerhalb der Skripte, erhöht die Übersicht und verbessert noch einmal die Flexibilität der Skripte.

Durch die Verwendung von Variablen in der bat-Datei können wir diese wiederverwenden, um eine beliebige Anzahl von .PS-Dateien auf dem SRM-Server zu verwalten und aufzurufen. Durch die Kombination von PowerShell, PowerCLI, SRM und Batchdateien können Sie auf diesem Weg eine sehr effektive und ressourcensparende Methode der Wiederherstellung nutzen.

Schritt 1: Erstellen Sie eine Batch-Datei mit der Bezeichnung REDIRECT.BAT

Ich habe zum ersten Mal die Batchdatei REDIRECT.BAT erstellt und verwendet, als ich Carter Shaklins Blog-Beitrag zur PowerCLI zum Thema PowerShell-Skripte mit vCenter-Benachrichtigungen gelesen habe.

Mit Hilfe der Website von Al (Virtu-al.net) war ich in der Lage, mit einer Bat-Datei meine .PS1-Skripte zu starten. Das Skript lädt die Powershell-Umgebung zusammen mit der .PS1-Datei, welche die PowerCLI-Cmdlets in die PowerShell einbindet. Die Variable am Ende (%1) kann für jede .PS1 -Datei verwendet werden, die mit einer einzigen REDIRECT.BAT-Datei aufgerufen werden kann.

@echo off

C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe -psc "C:\Program Files\VMware\Infrastructure\vSphere PowerCLI\vim.psc1" "& '%1'"

Schritt 2: Kopieren Sie die REDIRECT.BAT und die powercli.ps-Skripte zur Wiederherstellung auf den SRM-Server

Im nächsten Schritt müssen Sie Ihre REDIRECT.BAT und  die PS-Datei(en) an den Standort und den Recovery- SRM-Server kopieren. Es ist eigentlich egal, wo Sie diese Datei speichern, solange Sie den Pfad zum Skript korrekt eingeben. Wenn Sie den Befehl in einem Recovery-Plan angeben, sollte dieser ohne Fehler ausgeführt werden.

In diesem Beispiel werden die Dateien ctx01-ram.ps1, ctx-bulk-ram.ps1 und ctx-ram-half.ps1 jeweils für die verschiedenen Aufgaben kopiert, die wir vorher besprochen haben.

Schritt 3: Fügen Sie einen Befehl in den Recovery-Plan ein

1. Im Wiederherstellungsplan sollten Sie auf der Registerkarte Wiederherstellungsschritte die Option zur Zuteilung einer hohen Priorität von Wiederherstellungsvorgängen der virtuellen Maschinen festlegen.

2. Klicken Sie auf die Schaltfläche zum Hinzufügen von zusätzlichen Befehlen, wie in der nächsten Abbildung zu sehen.

3. Geben Sie den vollständigen Pfad zum Kommandointerpreter (cmd.exe), der REDIRECT.BAT, und der PS-Datei ein, die Sie ausführen möchten. Achten Sie darauf, dass die Pfade und Bezeichnungen in den Dateien korrekt gesetzt sind. Ein Beispiel sehen Sie in der nächsten Abbildung.

Hinweis: In diesem Fall ist das Dialogfeld zu klein und der Pfad zu allen Dateien ist lang. Der richtige Befehl heißt also:

c:\windows\system32\cmd.exe /c c:\redirect.bat c:\ctx-ram-half.ps1

Der Plan sieht dann aus, wie in der folgenden Abbildung zu sehen:

Der Speicherort des PowerShell-Skriptes ist wichtig. Es muss vor der Wiederherstellung der als hoch, normal oder niedrig eingestuften VMs aufgerufen werden. Falls nicht, wird das PowerShell-Skript fehlerhafte Änderungen über den Platzhalter durchführen. 

Es werden dann die falschen Vmx-Dateien anstatt der echten Vmx-Dateien der einzelnen VMs angepasst. Denken Sie daran, während der „Prepare Storage"-Phase werden die Platzhalter-vmx -Dateien aus vCenter ausgetragen. Die echten vmx-Dateien werden an ihrer Stelle eingetragen. Daher werden alle Änderungen an der Datei placeholder.vmx einfach ignoriert und ersetzt werden.

Wenn Sie sich unwohl dabei fühlen, dass SRM diese Skripte automatisch startet, dann können Sie auch die Möglichkeit zur Einrichtung von Benachrichtigungsschritten nutzen. Dann müssen Sie die Befehle allerdings manuell ausführen.

Darüber hinaus können Sie überprüfen, wie sich Ihre PowerShell-PS-Dateien auf Ihrem vCenter authentifizieren. In meinem Fall habe ich die Dinge einfach gehalten. Ich habe den Benutzernamen und das Passwort im Klartext in der PS-Datei hinterlegt. Das ist nicht sicher, funktioniert aber. 

Achten Sie aber darauf, für diesen Fall einen eigenen Benutzernamen zu verwenden, den Sie jederzeit ändern oder löschen können. Es gibt Methoden der Authentifizierung in der PowerShell, bei denen dies nicht nötig ist. Carter Shanklin behandelt in seinem Blog die Möglichkeit, verschlüsselte Anmeldeinformationen für das lokale Systemkonto zu verwenden. In diesem Fall müssen Sie den Benutzernamen und das Kennwort nicht in der PS-Datei aufnehmen.

Achtung: Denken Sie über die Folgen der Verwendung von PowerCLI für die Steuerung des Failback von VMs genau nach und testen Sie Ihre Einstellungen gründlich in einer Testumgebung. Diese Änderungen würden zurück zu den geschützten Standort repliziert werden, sollten Sie sich entscheiden, ein Failback in den geschützten Bereich durchzuführen. 

Dann wären auch Ihre produktiven Maschinen von den Änderungen betroffen. Denken Sie daran, dass Sie hierbei Änderungen an der VMX-Datei zur Speicherzuweisung von VMs machen. Als Teil des Failback-Prozess können Sie die Replikationsrichtung ändern, um Veränderungen am Recovery-Standort zurück zu dem geschützten Bereich der Hosts zu deaktivieren. Um dieses Problem zu vermeiden, können Sie ein PS-Skript schreiben, das die von Ihnen vorgenommen Änderungen wieder zurücknimmt.

Fazit

Wie Sie sehen, können Sie mit VMware SRM und PowerCLI alle möglichen Anpassungen vornehmen, um Ihre VMs und Ihre vSphere-Plattform zu konfigurieren. Wenn Sie Recovery-Pläne ausführen, können Sie diese Skripte ausführen lassen. Und das ist noch nicht alles. In PowerCLI gibt es zahlreiche weitere Möglichkeiten und Neuerungen. 

Eine Liste aller Cmdlets die Ihnen zur Verwaltung von VMware vSPhere zur Verfügung stehen, erhalten Sie mit Get-VICommand. Wenn Sie sich tiefgehender mit der PowerCLI in VMware vSphere auseinandersetzen wollen, empfehlen wir Ihnen noch das offizielle VMware-Support-Forum für PowerCLI. Eine weitere wertvolle Seite für eine Einarbeitung in PowerCLI finden Sie hier in diesem Blog-Beitrag.

Über den Autor:
Mike Laverick ist ein professioneller Instrukteur mit mehr als 15 Jahren Arbeitserfahrung in den Bereichen Novell, Windows und Citrix. Seit August 2012 ist er bei VMware als Senior Cloud-Infrastructure-Experte tätig. In der VMware Community ist er seit 2003 beteiligt. Beim London VMware User Group Steering Committee (Benutzergruppen-Vorstand) ist er Mitglied und Forum-Moderator. Er ist außerdem Autor und Inhaber der Virtualisierungswebseite und dem Blog RTFM Education. Dort publiziert er kostenlose Guides und Hilfsmittel für VMware ESX/VirtualCenter-Benutzer. 2009 wurde er für das VMware vExpert Award ausgezeichnet und hat dazu beigetragen, schottische und irische Benutzergruppen zu erstellen. Er hat zudem Bücher bei VMware Virtual Infrastructure 3, VMware vSphere4 and VMware Site Recovery Manager veröffentlicht.

Folgen Sie SearchDataCenter.de auch auf Facebook, Twitter und Google+!

Artikel wurde zuletzt im November 2014 aktualisiert

Erfahren Sie mehr über Containervirtualisierung

- GOOGLE-ANZEIGEN

ComputerWeekly.de

Close