Artykuł w wersji pdf - Support Online Sp. z o. o.
Transkrypt
Artykuł w wersji pdf - Support Online Sp. z o. o.
„Wsparcie w Twoim biznesie” Raportowanie i wznawianie replikacji maszyn wirtualnych (HyperV + PowerShell) W ostatnich czasach, bardzo popularna stała się wirtualizacja środowisk serwerowych. W firmach często zastosowane są dwa serwery pełniące rolę Hypervisorów. Dla bezpieczeństwa danych i dla szybkiego włączenia serwerów wirtualnych w przypadku awarii jednego z Hypervisorów, często stosuje się mechanizm replikacji serwerów wirtualnych pomiędzy Hypervisorami. Do jednych z czynności administracyjnych osoby sprawującej opiekę nad danymi serwerami powinno być zalogowanie się na serwery pełniące rolę HyperV i sprawdzenie czy replikacja serwerów wirtualnych działa. Ponieważ replikacja odbywa się w trybie rzeczywistym i dane pomiędzy serwerami wysyłane są bieżąco lub w małych odstępach czasowych, status powinno się sprawdzać kilka razy dziennie, co przy innych pracach administracyjnych jest często nie możliwe. Replikacja maszyn wirtualnych skonfigurowana, zazwyczaj działa prawidłowo, lecz z moich obserwacji wynika, że „raz na jakiś czas” potrafi się po prostu wyłączyć (przejść w status Suspended), bez błędów w event logu, przez co trzeba się zalogować na serwer i ją wznowić. Niestety w roli HyperV nie ma takiej funkcjonalności jak wysyłanie monitów o wyłączeniu się replikacji, dlatego w celu ułatwienia codziennej pracy i zachowania ciągłości replikacji maszyn wirtualnych, został zmodyfikowany skrypt z poprzedniego artykułu (Raportowanie wykonania kopii zapasowych (DPM + PowerShell)). Została zmodyfikowana funkcja generująca raport, oraz dodana funkcja sprawdzająca status replikacji, która w przypadku, gdy status jest inny niż „Normal”, wznawia ją i dodaje do wiadomości e-mail z raportem i odpowiednią informację o wznowieniu replikacji. Kod źródłowy skryptu: function GenerujRaport() { #Zawartość nagłówka html ze stylem CSS, żeby raport się ładniej prezentował:) $htmlhead=@' <style> body {background-color:#FFFFFF; font-family: Calibri; font-size: 13px;} table {border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;} th {border-width: 1px;padding: 2px;border-style: solid;border-color: black; background-color:#E0E8F0;} td {border-width: 1px;padding: 2px;border-style: solid;border-color: black; background-color:#FFFFFF;} p {color: red;} </style> '@ #Generowanie pliku z raportem Strona 1 z 5 Support OnLine Sp. z o.o., ul. Poleczki 23, 02-822 Warszawa, NIP: 951-20-32-692, Regon: 017431975, KRS: 0000078497, XIII Wydział Gospodarczy Krajowego Rejestru Sądowego w Warszawie, Kapitał zakładowy: 50 000 PLN - opłacony w pełnej wysokości. „Wsparcie w Twoim biznesie” $Data = Get-VMReplication | Select-Object Name,State,Health,Mode,PrimaryServer,ReplicaServer $Data | ConvertTo-Html -head $htmlhead | Out-File C:\HyperVReports\HyperV_Replica_$(get-date -format d).html } function WyslijEmail() { #Nadawca wiadomosci $Nadawca = "[email protected]" #Odbiorca wiadomosci $Odbiorca = "[email protected]" #Adres serwera smtp $Serwer = "adres.serwera.smtp" #Temat wiadomości $Temat = $env:computername+": HyperV Replica report of "+(Get-Date -Format d) #Zawartość wiadomości z pliku wygenerowanego wczesniej $Zawartosc = (Get-Content C:\HyperV-Reports\HyperV_Replica_$(Get-Date -format d).Html) #Dane autentykacji konta do wysyłki, ustawienia portów serwera, ssl itp. $SMTPclient = new-object System.Net.Mail.SmtpClient $Serwer #$SMTPClient.port = 587 #$SMTPclient.EnableSsl = $true #$SMTPAuthUsername = "nazwa_uzytkownika" #$SMTPAuthPassword = "haslo" #$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($SMTPAuthUsername, $SMTPAuthPassword) $Wiadomosc = new-object System.Net.Mail.MailMessage $Nadawca, $Odbiorca, $Temat, $Zawartosc $Wiadomosc.IsBodyHtml = $true; $SMTPclient.Send($Wiadomosc) } function EnableReplica() { Get-VMReplication | where {$_.Mode -eq "Primary"} | foreach { if ($_.Health -ne "Normal") { Resume-VMReplication -VMName $_.Name $VMReplicationName = $_.Name $HTMLContent= get-content C:\HyperV-Reports\HyperV_Replica_$(get-date -format d).html $HTMLContent= $HTMLcontent | foreach {$_ -replace "</body></html>", ("<p>"+ $VMReplicationName +" : Replikacja maszyny została wznowiona.`n </body></html> ")} $HTMLcontent= $HTMLContent | Set-Content C:\HyperV-Reports\HyperV_Replica_$(getdate -format d).html } } } #Wywołanie funkcji GenerujRaport GenerujRaport #Wywołanie funkcji EnableReplica EnableReplica #Wywołanie funkcji WyslijEmail WyslijEmail Strona 2 z 5 Support OnLine Sp. z o.o., ul. Poleczki 23, 02-822 Warszawa, NIP: 951-20-32-692, Regon: 017431975, KRS: 0000078497, XIII Wydział Gospodarczy Krajowego Rejestru Sądowego w Warszawie, Kapitał zakładowy: 50 000 PLN - opłacony w pełnej wysokości. „Wsparcie w Twoim biznesie” Uruchamianie skryptu: 1. Do uruchamiania skryptów powershell z plików należy zmienić ExecutionPolicy poleceniem: Set-ExecutionPolicy – unrestricted (http://technet.microsoft.com/pl-PL/library/dd347628.aspx) 2. Skrypt należy dodać do zaplanowanych zadań: 3. Należy utworzyć zadanie uruchamiane z najwyższymi uprawnieniami: 4. Dodanie akcji do zaplanowanego zadania Strona 3 z 5 Support OnLine Sp. z o.o., ul. Poleczki 23, 02-822 Warszawa, NIP: 951-20-32-692, Regon: 017431975, KRS: 0000078497, XIII Wydział Gospodarczy Krajowego Rejestru Sądowego w Warszawie, Kapitał zakładowy: 50 000 PLN - opłacony w pełnej wysokości. „Wsparcie w Twoim biznesie” Należy uruchomić PowerShell z wykonaniem skryptu: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noninteractive -nologo C:\Scripts\ReplicaCheck.ps1 Poniżej wygenerowany i wysłany raport: Name State Health Mode PrimaryServer ReplicaServer DC2-Srv Suspended Warning Primary Hyper2.firma.local Hyper1.firma.local FS-Srv Replicating Normal Primary Hyper2.firma.local Hyper1.firma.local SQL-Srv Replicating Normal Replica Hyper1.firma.local Hyper2.firma.local Wsus Replicating Normal Primary Hyper2.firma.local Hyper1.firma.local DC1-Srv Replicating Normal Replica Hyper1.firma.local Hyper2.firma.local Ex-Srv Replicating Normal Replica Hyper1.firma.local Hyper2.firma.local Linux Replicating Normal Replica Hyper1.firma.local Hyper2.firma.local DC2-Srv : Replikacja maszyny została wznowiona. Raport zostanie również zarchiwizowany na dysku w lokalizacji C:\HyperV-Reports\ Powłoka PowerShell, zapewnia szeroki zestaw komend i możliwości, dla każdej z ról, jakie może pełnić Windows Server poprzez importowanie modułów. Umożliwia pisanie skryptów generujących i zestawiających dane, eksport tych danych do różnych formatów plików, tekstowych, excelowych, html i innych. Możliwa jest też wysyłka wiadomości e-mail z wygenerowanymi raportami, co przedstawiono w powyższym artykule. Zapewnia też możliwość przesyłania wyniku z jednej komendy, jako zestawu zmiennych do drugiej komendy, przez co można dokonywać edycji na wielu obiektach, bez konieczności zmieniania wielu rzeczy za pomocą „miliona” kliknięć. W produktach firmy Microsoft wydawanych od kilku lat, można zauważyć też, że niektórych funkcji nie można już znaleźć w interfejsie graficznym danego produktu, lecz trzeba skonfigurować je przez powłokę PowerShell, a i sam interfejs graficzny jest tylko swego rodzaju nakładką „budującą” i wykonującą zestaw poleceń PowerShell. Artykuł opracował: Bartek Kamiński, Support Online Sp. z o.o. Strona 4 z 5 Support OnLine Sp. z o.o., ul. Poleczki 23, 02-822 Warszawa, NIP: 951-20-32-692, Regon: 017431975, KRS: 0000078497, XIII Wydział Gospodarczy Krajowego Rejestru Sądowego w Warszawie, Kapitał zakładowy: 50 000 PLN - opłacony w pełnej wysokości. „Wsparcie w Twoim biznesie” Support Online Sp. z o.o. świadczy szeroki zakres usług IT dla firm oraz instytucji: kompleksowa obsługa informatyczna, częściowe wsparcie IT, projekty informatyczne, helpdesk IT, system kopii zapasowych plików SBBS, telefonia VoIP, audyty informatyczne i wiele innych. Jeśli jesteście Państwo zainteresowani współpracą w tym zakresie lub innymi usługami informatycznymi – zapraszamy do kontaktu. Support Online Sp. z o.o. tel. + 22 335 28 00 e-mail: [email protected] www.support-online.pl Źródło: 1. Opracowanie własne 2. http://msdn.microsoft.com/pl-pl/library/system.net.mail.aspx 3. http://technet.microsoft.com/en-us/library/hh848559.aspx Strona 5 z 5 Support OnLine Sp. z o.o., ul. Poleczki 23, 02-822 Warszawa, NIP: 951-20-32-692, Regon: 017431975, KRS: 0000078497, XIII Wydział Gospodarczy Krajowego Rejestru Sądowego w Warszawie, Kapitał zakładowy: 50 000 PLN - opłacony w pełnej wysokości.