Guide: APC Back-UPS Pro till flera servrar i hemma labbet
Jag som bor i Värmdö kommun med 455 registrerade strömavbrott under 2012 (Vattenfall egen statistik), innebar 2012 tre trasiga hårddiskar och ett bränt nätagg. Och sådär kan vi ju inte ha det. Från ord till handling och en APC Back-UPS Pro 900 beställdes hem, men innan beställningen hade jag gjort lite beräkningar.

Beräkna hur stor UPS du behöver

Jag använde mig av APC:s egna verktyg för att beräkna storleken på min UPS, i mitt fall så beräknade jag på ca 200W belastning, och ville ha ca 30 minuters drifttid. https://www.apc.com/tools/ups_selector Av egen erfarenhet så drar en vanlig ”Labbserver” utan skärm ca 70-100w, så har du bara en maskin så kan du köra med en lite mindre modell till exempel: https://www.komplett.se/k/ki.aspx?sku=119785. Men tänkt på att du behöver ta höjd för servern maxbelastning, som vid uppstart, eller när CPU:n körs på maxbelastning. Switcharna märks knappt när man kopplar in dom i UPS:en.

Hur ska den skydda vid avbrott?

Där bestämde jag mig för att den skulle köra max 10 minuter och sedan stänga ner servern. Detta för att jag skulle ha kraft för dom oftast återkommande strömavbrotten som drabbar oss varje gång det snöar kraftigt i länet. Det har inte vart ovanligt med 5-10 strömavbrott en och samma dag för oss.
Så med andra ord skulle lösningen klara av flera kortare strömavbrott, men stänga ner servern säkert när strömavbrotten är längre än 10 minuter.

Så vilken modell ska jag köpa?

Jag beställde UPS:en med tanken att den enbart skulle skydda min Hyper-V host. Samt att jag inte ville betala för den extra kostnad som en ”server UPS” kostar, mångdubbelt mera för att klara av att stänga av flera maskiner. Så APC:s Back-UPS Pro serie föll mig i smaken, den på 900VA skulle klara sig ca 30 minuter med min belastning, samt att den har en LCD Display som bland annat visar belastning & hur lång tid du får ut från batteriet vid nuvarande belastning.
Dessutom ville jag ha en UPS utan fläkt så att den inte låter en massa, den är trots allt i rummet bredvid mitt sovrum.
d1
Dagen D
När min UPS kom så kopplade jag in den till mina datorer, det var enkelt med dom medföljande sladdarna, men för att koppla in övrig nätverksutrusning så behövdes lite moddning. Strömkablarna som medföljer UPS:en är av samma typ som kopplas direkt in i datorns nätagg. Så för ADSL modemet & switcharna så var det inte att tänka på. Lösningen var ganska enkel, nåja jag har ju el-teleteknisk utbildning i botten, så för nästa del så skall du inte genomföra detta utan att veta vad du gör.
Jag tog helt enkelt en av UPS kablarna som följde med (i mitt paket följde det med två kablar) och kapade ena ändan (kapa inte den ändan som skall in i UPS:en nu) och skarvade den med ett skarvruttag som jag köpte.
Färdiga skarven, med ADSL modemet inkopplat.
d2

Problemen

Varför är det aldrig enkelt J Två problem fanns nu att lösa, eller helt enkelt byta UPS:en till en betydligt dyrare modell. Eftersom dom surt förvärvade slantarna var mig mer kära en lite fritid, så blev det till att lösa problemen istället.
Första problemet hade med att göra att den medföljande programvaran från APC fungerade bra på alla sätt och vis, förutom att den inte stänger ner min Windows 2012 Hyper-V host. Nästa problem handlade om att jag ville koppla in min filserver också. Nu visste jag ju om att den billigare modellen inte hade stöd för nedstängning av flera servrar, men det avskräckte inte.

Lösningen

Efter lite forskande så såg jag att APC Powershute Personal Edition loggar i loggboken i Windows vid varje strömavbrott respektive när strömmen kommer tillbaks. Och det kunde jag nu använda till min fördel.
Först skapade jag en ”Custom View” i loggboken för att enkelt hålla koll på mina Strövabrott.
d3
Filtrera loggen på EventID 174 samt 61455
d4
Om du inte ser några events ännu så kan det vara dags att testa UPS:en, koppla ur strömmen en snabbis så kommer du se att båda eventen dyker upp.

Skapa skript

Jag skapade sedan två Powershell skript som stänger ner servern, och skickar lite varningar.
Första kallade jag för UPS_Email_Alert.ps1
 $Tid = (Get-Date).AddMinutes(10).ToString(”HH:mm:ss”)
$smtp = New-Object Net.Mail.SmtpClient(”smtprelay1.telia.com”)
$smtp.Send(”Alert@server.com”,”dinepost@mail.com”,”Strömavbrott!”,”Nedstängning påbörjad $Tid”)
shutdown /m \\netsrv /s /t 600 /c ”Powerfailure in progress!! Shutdown in 10 min!” /d U:6:12
shutdown /s /t 600 /c ”Powerfailure in progress!! Shutdown in 10 min!” /d U:6:12
  1. Första tre raderna är för att skicka ett mail om pågående strömavbrott.
  2. Dom två sista raderna stänger ner Hyper-V hosten & min fjärrserver på nätverket.
  3. /m = fjärrservernamnet
  4. /s = Shutdown
  5. /t 600 = 600 sekunder = 10 minuter innan den stänger ner servern.
  6. /c är ett meddelande som visas på hosten när strömavbrottet sker.
  7. /d U:6:12 står för ”Power Failure: Environment” Som orsak till nedstängningen av servern.
Andra skriptet avbryter nedstängningen ifall strömmen kommer tillbaks inom 10 minuter.
UPS_Email_Alert.ps1
 $Tid = Get-Date -Format ”yyyy.MM.dd HH:mm”
$smtp = New-Object Net.Mail.SmtpClient(”smtprelay1.telia.com”)
$smtp.Send(”Alert@server.com”,”dinepost@mail.com”,”Power on!”,”Nedstängning avbrutet $Tid”)
shutdown /a /m \\netsrv
shutdown /a /m \\hv1

Länka skripten till våra två event.

Välj custom viewn som vi skapade innan, se till att välja varningen för strömavbrott, välj attach task to this event…
d5
Ge uppgiften ett namn
d6
Klicka ”next” tre gånger till du kommer till följande val:
OBS! För att följande skall fungera så måste din Execution Policy vara satt på att tillåta skripkörning, är du osäker, läs följande https://technet.microsoft.com/en-us/library/ee176949.aspx
Välj sedan skriptet från den platsen där du sparade det. När du sparar kommer den att lägga argumenten rätt. (lägg till ”Powershell -File” för sökvägen)
 d8
Klicka i ”open the properties…”
 d9
Ändra sedan enligt bilden för att skriptet skall köras rätt.
 d10
Klicka sedan på OK.
Gör om samma procedur med andra skriptet, se bara till att välja EventID 61455 denna gång.
 d11
Nu är miljön klar för test, om du vill göra testet snabbare med avstängningen så kan du välja att minska på tiden från 600 till 60 så slipper du vänta så länge på att se om datorn stänger ner sig rätt.

Förbereda Hyper-V för UPS avstängningar

För att nedstängningarna inte skall ta en evighet och att VM:miljön inte skall bli medveten om strömavbrotten så har jag valt att spara alla VM:hostar
Ställ in Automatic Start & Stop action via Hyper-V Managern.
 d12
Du kan även ändra inställningarna via PowerShell eller via VMM.
 get-scvirtualmachine | Set-SCVirtualMachine -StopAction SaveVM
Kommandot hämtar alla dina VM:s och ställer sedan om dom till att automatiskt sparas ifall hosten skall stängas ner.
7 nya strömavbrott på en månad nu, men inga nya skador på datorerna J
Väl mött tills nästa gång.