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.

Podobne dokumenty