Jdi na obsah Jdi na menu
 


Virtual Server a výpadek napájení

4. 1. 2009
Musíme řešit dvě varianty:

a) Počítač, na kterém Virtual Server běží, není napájen přes UPS. To je samozřejmě špatná varianta, přijatelná snad pro testovací server, ale je třeba s ní počítat. Po výpadku napájení samozřejmě okamžitě fyzický i všechny virtuální počítače končí, a je pouze třeba zajisti jejich spuštění po obnovení napájení (a modlit se, že vše pojede).  V tomto případě je nutné

1. Nastavit v BIOSu automatické spuštění po obnovení napájení - to by mělo platit i pro jakýkoliv jiný server

2. U každého virtuálního počítače, který chceme po výpadku spustit, nastavit v konfiguraci automatické spuštění (virtuální počítač musí být vypnut, server - Edit Configuration - General Properties, nastavit spuštění pod uživatelem Administrator, + Automatically turn on virtual machine)

b) Počítač je vybaven záložním zdrojem UPS. To nám po výpadku napájení dá nějaký čas na korektní ukončení virtuálních počítačů a nakonec i toho fyzického, ale je třeba vše správně nastavit. Je třeba provést stejná nastavení jako uvarianty a) a nějaké věci navíc.

U každého virtuálního počítače je možné nastavit, jak se bude chovat v okamžiku vypnutí Virtual Serveru - natvrdo se vypne, uloží se jeho stav, nebo se pošle jeho operačnímu systému požadavek na ukončení. První varianta je samozřejmě nevhodná, s hlediska virtuálního počítače totožná se serverem bez záložního zdroje. Zbývají tedy varianty uložení stavu nebo vypnutí hostovaného systému. Zkusme si tedy rozepsat postup událostí:

- dochází k výpadku energie, přechází se na záložní zdroj
- po určité době (nastavené v konfiguraci záložního zdroje) se zahajuje vypínání operačního systému fyzického počítače
- Virtual Server dostává požadavek na ukončení
- Virtual Server začíná ukládat stav virtuálních počítačů nebo jim zasílá požadavek na ukončení
- výše uvedené operace určitou dobu trvají, typicky desíky sekund až minuty
mezitím může dojít k vyčerpání záložního zdroje, nebo překročení času pro ukončení služby Virtual Serveru (vssrvc.exe) a systém ji zabije. Obě varianty jsou špatně. Proto je potřeba konfiguraci záložního zdroje nastavit tak, aby

a) včas (dostatečně dlouho před zahájením vypínání hostitelského operačního systému) byl zaslán požadavek na ukončení Virtual Serveru a ten stačil včas uložit stav/zaslat požadavky na ukončení virtuálním počítačům
b) včas (dostatečně dlouho před zahájením vypínání hostitelského operačního systému) přímo zaslat požadavek na uložení/ukončení příslušným virtuálním počítačům, a vlastní Virtual Server (už bez běžících virtuálních počítačů) nechat vypnout spolu se systémem.

Nyní si ukážeme realizaci varianty b:

Na fyzickém serveru je nainstalovaný Virtual Server 2005 s několika virtuálními servery. Záložní zdroj je APC s kapacitou na cca 15 minut provozu, spravovaný přes aplikaci PowerChute s webovým rozhraním. Nejdříve si připravíme skript, který uloží nebo nechá ukončit virtuální počítače. Jedná se o textový soubor s příponou vbs (tedy visual basic script), např UkonciVirtualniPocitace.vbs:

Set objShell = CreateObject ("WScript.Shell")
Set virtualServer = CreateObject("VirtualServer.Application")
set vm = virtualServer.FindVirtualMachine("Jméno Virtuálního Serveru")
set saveTask = vm.GuestOS.Shutdown (pro ukončení virtuálního počítače)
nebo
set saveTask = vm.Save (pro uložení stavu virtuálního počítače)
Pro další virtuální počítače stačí řadky
set vm = virtualServer.FindVirtualMachine("Jméno Virtuálního Serveru")
set saveTask = vm.GuestOS.Shutdown (pro ukončení virtuálního počítače)
nebo
set saveTask = vm.Save (pro uložení stavu virtuálního počítače)

pokud potřebujeme, aby se některý server ukončil dříve, než se začne vypínat jiný, můžeme po set SaveTask = ... nastavit prodlevu (v milisekundách), než bude skript pokračovat - např pokud vypínám jeden server Exchange a druhý Active Directory, je potřeba s ukončením Active Directory počkat, jinak by se Exchange vypínal příliš dlouho:

WScript.Sleep 30000

Nyní je třeba nastavit v PowerChute (pro zdroje APC) časové limity a spuštění vytvořeného skriptu. Spustíme konfigurační webové rozhraní, v části Shutdown Settings nastavíme potřebné parametry - celkový čas pro ukončení počítače (tedy při jaké zbývající kapacitě v minutách je třeba zahájit vypínání), dále povolit spuštění skriptu (Enable Command File Execution), zvolit jméno souboru (soubor cmd v adresáři %instalacePowerChute%\agent\cmdfiles) a zadat, jak dlouho asi skript poběží. Dále zadáme čas, za jak dlouho po ukončení skriptu je možné vypnout napájení (OS Shutdown Delay, tedy čas potřebný pro ukončení systému po ukončení skriptu). Nakonec je třeba do cmd souboru zadat spuštění námi vytvořeného skriptu v podobě @START "" "c:\kdejeulozen\UkonciVirtualniPocitace.vbs" - včetně prázdných uvozovek. Pro jiné záložní zdroje to bude obdobné.

Nyní by proces měl běžet následovně:

Při výpadku napájení běží server dále na záložní zdroj. Když jeho kapacita (vyjádřená v minutách zbývajícího času) klesne na nastavenou hranici, spustí se vytvořený cmd skript, který spustí vbs skript, a ten postupně ukončí nebo uloží virtuální počítače. Pak se zašle signál operačnímu systému na fyzickém počítači, že se má ukončit. Po zadané době OS Shutdown Delay se vypne napájení.

Ukládat stav nebo vypínat?

Je otázka, jestli máme dát přednost vypínání virtuálních počítačů nebo uložení jejich stavu. Příjemnější se zdá ukládání stavu - mělo by být rychlejší, stejně jako následné obnovení, stav všech procesů zůstane nezměněn... Bohužel Virtual Server často není schopen uložené počítače obnovit, celý proces vytuhne a je třeba Virtual Server natvrdo zabít a virtuální počítače spustit načisto, tedy stejně jako po výpadku napájení. Jako bezpečnější varianta se proto jeví ukončení virtuálních systémů. Pokud však při testování zjistíte, že s uložením stavu nemáte na vaší konfiguraci problémy, lze ji doporučit.

Jak nastavit časové limity?

To je třeba vyzkoušet, záleží na kapacitě záložního zdroje, rychlosti serveru, jeho vytížení, konfiguraci a vytížení virtuálních počítačů... Samozřejmě je třeba mít určitou rezervu.

 
 

 

 

Z DALŠÍCH WEBŮ

REKLAMA