Thursday, June 28, 2012

Server 2012 Hyper-V gebruiken in VMware Workstation

Windows Server 2012 is de nieuwste versie van Microsofts serverbesturingssysteem. Windows Server 2012 is veel meer dan alleen de nieuwste versie, het is misschien wel de eerste versie sinds Windows 2000 Server die zoveel nieuws brengt dat het niet de vraag is óf je gaat upgraden, maar wanneer. Naar verwachting wordt Windows Server 2012 later dit jaar uitgebracht maar je kunt de Windows Server 2012 Release Candidate (RC) nu al downloaden en uitproberen.

Eén van de gebieden waar veel ontwikkeling zit is Hyper-V en ik kan me voorstellen dat veel mensen de nieuwe mogelijkheden willen verkennen in een lab, bijvoorbeeld in VMware Workstation 8. In dit artikel beschrijf ik op welke manier je Hyper-V kunt gebruiken in een VM op VMware Workstation.

Het probleem

Wanneer je Hyper-V wilt inschakelen in een VM kun je tegen de volgende foutmelding aanlopen:

image

Install-WindowsFeature : A prerequisite check for the Hyper-V feature failed.
1. Hyper-V cannot be installed: A hypervisor is already running.

De oorzaak is dat we al in een hypervisor werken, namelijk in VMware Workstation.

De oplossing

Hyper-V is een hypervisor die hardware-asisted virtualisatie vereist, dat wil zeggen dat Hyper-V niet kan werken zonder dat het AMD-V of Intel-VT kan gebruiken. Daarom moeten we VMware Workstation vertellen dat het de nodige CPU features beschikbaar maakt voor onze VM. Ten eerste schakelen we Intel VT aan in de eigenschappen van de virtuele cpu:

image

De tweede aanpassing doen we in het configuratiebestand <naam VM>.vmx, deze vinden we in de werkdirectory waar de bestanden van deze VM staan. Wanneer je die lokatie niet kent kun je deze vinden op het tabblad Options van de VM eigenschappen:

image

In deze directory openen we het .vmx bestand met een text editor. In dit bestand voegen we de volgende regel toe: hypervisor.cpuid.v0 = "FALSE"

image

De exacte plek in het bestand maakt niet uit, de regel mag gewoon onderaan toegevoegd worden. Uiteraard slaan we het bestand op na het toevoegen van deze regel.

Hyper-V inschakelen

We kunnen onze VM nu starten en Hyper-V installeren via Server Manager of in PowerShell. Omdat ik op een server werk zonder GUI start ik PowerShell, in tegenstelling tot oudere versies zijn de verschillende modules al geladen dus kan ik direct het Install-WindowsFeature cmdlet gebruiken.

image

We zien dat we de Hyper-V role nu succesvol hebben ingeschakeld op een virtual machine in VMware Workstation 8.

En Hyper-V in Windows 8 dan?

Het zelfde verhaal geldt ook voor het inschakelen van Hyper-V in een VM met Windows 8, waarvan de Release Preview inmiddels beschikbaar is. Met die aantekening dat er nog een tweede regel benodigd is in het .vmx bestand: mce.enable = "TRUE".

Tot besluit

Ik hoop dat dit artikel je helpt om Hyper-V te gebruiken in een VM op VMware Workstation 8. Meer informatie over Hyper-V in de Windows Server 2012 Release Candidate kun je hier vinden: http://www.microsoft.com/en-us/server-cloud/windows-server/2012-overview.aspx Veel plezier gewenst!

Friday, June 8, 2012

Exchange 2010 en statische poorten voor load balancing

Er wordt wel eens gezegd dat je voor Exchange 2003 een storage specialist moest zijn, voor Exchange 2007 een specialist in certificaten en voor Exchange 2010 een specialist in load balancing. En eerlijk gezegd zit daar wel wat in, want hoge beschikbaarheid en load balancing is nog nooit zo belangrijk geweest.

Van alle Exchange 2010 protocollen die je kunt load balancen is MAPI wel de meest bijzondere. De reden is dat MAPI verkeer standaard gebruik maakt van dynamische hoge poorten voor de RPC Client Access en Address Book services, dat betekent dat je nooit vooraf weet welke poorten je moet load balancen. Dit kunnen we oplossen door Exchange zo te configureren dat deze vaste poortnummers gebruikt voor deze twee services.

Om te beginnen moeten we deze poortnummers bepalen. Hoewel in principe ieder hoog nummer wat niet in gebruik is voldoet, raadt Microsoft aan om een poort te kiezen binnen de range 59531 tot 60554. In dit voorbeeld ga ik uit van poort 60000 en 60001, omdat ze makkelijk te onthouden zijn als ik zo meteen de load balancing rules ga aanmaken. En het spreekt voor zich dat we de zelfde waardes gebruiken voor iedere Client Access server in deze site.

We kunnen Exchange configureren met behulp van twee registry keys. Om fouten te voorkomen raad ik aan om dit in te stellen met de volgende vier eenvoudige PowerShell regels:

New-Item HKLM:\SYSTEM\CurrentControlSet\services\MSExchangeAB\Parameters
Set-ItemProperty HKLM:\SYSTEM\CurrentControlSet\services\MSExchangeAB\Parameters RpcTcpPort 60001 -type string
New-Item HKLM:\SYSTEM\CurrentControlSet\services\MSExchangeRPC\ParametersSystem
Set-ItemProperty HKLM:\SYSTEM\CurrentControlSet\services\MSExchangeRPC\ParametersSystem "TCP/IP Port" 60000 -type dword

image

Vervolgens moeten we deze twee services opnieuw starten zodat we kunnen controleren of we het goed gedaan hebben:

Restart-Service MSExchangeAB
Restart-Service MSExchangeRPC

Nu controleren we of de server op de nieuwe poorten luistert:

netstat -ano | findstr 60000
netstat -ano | findstr 60001

image

We hebben ons werk goed gedaan, er luistert nu een proces op beide poorten. Dat betekent dat we nu de load balancer kunnen configureren voor poort 135, 60000 en 60001, maar dat valt buiten de scope van dit artikeltje.

Tuesday, June 5, 2012

Exchange 2010: Mailboxen exporteren naar PST

Een server met Exchange 2010 biedt de mogelijkheid om de inhoud van een mailbox of archief te exporteren naar een PST bestand. Dit kan handig zijn als backup voordat je mailboxen verwijdert, of wanneer je een kopie van de mailboxitems wilt bewaren tijdens troubleshooten of iets dergelijks.
In Exchange 2010 worden exports, imports en verplaatsingen van mailboxen uitgevoerd door de Mailbox Replication Service (MRS). In de praktijk betekent dit dat we een verzoek voor een bepaalde actie klaarzetten en dat de MRS het verzoek af gaat handelen. De MRS doet dit asynchroon, dat wil zeggen dat ze de verzoeken die wij klaarzetten oppakt en uit gaat voeren en niet per sé direct nadat wij opdracht geven. Het voordeel hiervan is dat het proces gewoon weer verder gaat als de server tussendoor een reboot gekregen heeft.
Eerst moeten we zorgen dat het account waarmee wij werken de juiste rechten heeft, in dit voorbeeld doe ik dit door de RBAC rol “Mailbox Import Export” toe te kennen aan de groep Organization Management:
New-ManagementRoleAssignment -SecurityGroup "organization management" -Role "mailbox import export"
Om een mailbox te im- of exporteren maken we een request met New-MailboxImportRequest of New-MailboxExportRequest, als je deze cmdlets nog niet kunt gebruiken nadat je bovenstaande aanpassing gedaan hebt dan moet je de EMS even opnieuw openen. Je zult zien dat de extra cmdlets nu tot je beschikking zijn. Een voorbeeldje nu:
$lijst = Get-Mailbox -OrganizationalUnit _users
$lijst | % { $_ | New-MailboxExportRequest -FilePath "\\ex01\c$\pst\$($_.alias).pst" }

image
In de eerste regel vullen we de variable $lijst met alle mailboxen van de gebruikers in de OU _users. In de tweede regel beginnen we met het aanroepen van de zojuist gevulde variabele, waarna we voor elk van deze mailboxen een MailboxExportRequest aanmaken. Belangrijk is dat we het FilePatch in UNC formaat moeten opgeven, maar als de beheershare c$ gebruikt dan is het een koud kunstje om naar een lokale folder te verwijzen. Verder gebruik ik de Alias-eigenschap van de mailboxen om de bestandsnaam mee op te bouwen.
Direct na het klaarzetten van de verzoeken is de status Queued, zoals te zien is in de meest rechtse kolom van het screenshot hierboven. We kunnen de status van de verzoeken op elk moment opvragen met Get-MailboxExportRequest.
image
We zien hier niet alleen de 4 verzoeken die we net klaar hadden gezet, maar ook nog enkele oudere. Als de status van deze verzoeken niet meer belangrijk is dan kunnen we die verwijderen met Remove-MailboxExportRequest.
De beloning van onze noeste arbeid, met hulp van de MRS, vinden we in de opgegeven directory:
image
Leuk detail is misschien dat mijn mailbox (jetze.pst) aanzienlijk groter is dan ik hier zie staan. Dit komt omdat ik in het screenshot hierboven alle Move Requests verwijderd heb, inclusief eentje die nog als status InProgress had. Hiermee heb ik onbedoeld het exporteren afgebroken, hebben we die vraag ook meteen beantwoord.

Snel testgebruikers aanmaken in Exchange 2010

Zo af en toe is het handig om snel een paar testmailboxen aan te maken in Exchange 2010. Vaak is testgebruiker1 tot en met testgebruiker10 al voldoende. We kunnen dit in de Exchange Management Shell (EMS) eenvoudig doen door een oplopende nummers te produceren en deze nummers vervolgens te gebruiken bij het maken van mailboxen.

Als eerste zetten we een wachtwoord in een secure string:

$password = Read-Host “Geef het wachtwoord” -AsSecureString

Vervolgens maken we onze 10 testgebruikers aan als volgt:

1..10 | ForEach-Object { New-Mailbox -Name TestGebruiker$_ -UserPrincipalName testgebruiker$_@domaina.local -Password $password }

In bovenstaande regel staat $_ voor de waarde die we aan de linkerkant van de pijp hebben gegenereerd. Er wordt dus 10 keer een regel uitgevoerd waarbij $_ de eerste keer voor 1 staat, de tweede keer voor 2, enzovoort.

image

En als je je nu afvraagt of het ook werkt als je 1..10000 gebruikt of 29..34? Probeer het maar. Smile