Op dit moment ben ik bij een klant een Cross Forest Exchange migratie aan het uitvoeren. Vanaf twee exchange 2003 omgevingen gaan we naar 1 exchange 2007 omgeving, compleet met een nieuwe AD.
We hebben besloten om de mail in één weekend, per exchange 2003 omgeving, over te zetten naar de nieuwe omgeving. In deze blog wil ik in 10 easy steps de stappen bespreken die ik heb genomen om de migratie succesvol te laten verlopen.
Stap 1) Vooronderzoek oude omgeving
Als eerste heb ik de twee oude omgevingen onderzocht. De nieuwe omgeving moet minimaal hetzelfde zijn als de oude omgeving, zowel wat betreft functionaliteit als performance. Om hier inzicht in te krijgen heb ik gebruik gemaakt van de Exchange BPA
http://www.microsoft.com/downloads/details.aspx?familyid=dbab201f-4bee-4943-ac22-e2ddbd258df3&displaylang=en
Deze tool gaf mijn de benodigde inzicht in de huidige omgeving. Daarnaast heb ik gesproken met de beheerder en hem gevraagd welke Exchange functionaliteit de huidige exchange omgeving biedt en op welke manier die functionaliteit geboden wordt. Ook het onderzoek van de huidige mailflow maakte deel uit van dit vooronderzoek
Stap 2) Ontwerp de exchange omgeving
Als tweede heb ik een ontwerp gemaakt voor de nieuwe exchange omgeving. In dit geval ging het om een mail omgeving voor 5000 gebruikers. Hierbij is het van belang dat je tijdens het ontwerpen beslissingen neemt over de volgende onderdelen:
- Welke functie van Exchange 2007 ga je inzetten
- Hoeveel servers ga je inzetten in de nieuwe omgeving.
- Hoe ga je de server sizen
- Hoe komt de mail binnen en gaat deze naar buiten
Stap 3) Bouw de nieuwe omgeving in een test omgeving
Als derde stap heb ik de nieuwe omgeving, volgens mijn ontwerp, opgebouwd in een test omgeving. We hadden besloten de nieuwe omgeving op Windows 2008 te installeren. Hierdoor is het eenvoudig om alle handelingen vanaf de command prompt uit te voeren en dus in een script te verwerken. Dit laatste geeft mij dus de mogelijkheid om de gehele installatie in de productie omgeving te replayen aan de hand van verschillende scripts.
http://technet.microsoft.com/en-us/library/bb691354.aspx
Stap 4) Live omgeving nabouwen in de test
Nadat ik de nieuwe omgeving volledig had opgebouwd in een test omgeving wilde ik graag een proef migratie doen. De reden voor een proef migratie is dat we in één weekend over willen en ik dus zo min mogelijk verrassingen wilde hebben.
Om een test migratie uit te voeren moet ik een kopie van de live omgeving in de test omgeving hebben, want testen op een live omgeving komt niet voor in mijn woordenboek
De huidige omgeving draait op een aantal fysieke servers die niet offline mochten gaan. Hierdoor hadden we een extra uitdaging. Dit hebben we op de volgende manier opgelost:
- Als eerste installeerden we een extra DC (TestDC-Live)
- Als tweede verwijderden we deze DC uit het productie netwerk en koppelden we hem aan het test netwerk.
- Daarna met NTDS util de FSMO rollen geseized en de andere DC verwijderd op de TestDC-Live AD (http://support.microsoft.com/kb/255504 en http://support.microsoft.com/kb/216498 )
- Daarna een restore gedaan van de oude Exchange 2003 omgeving in de test omgeving.
Nu hebben we een kopie van de live omgeving in de test omgeving. Stap 1, 2 en 3 kun je natuurlijk ook doen door een restore te doen van een bestaande DC.
Stap 5) Setup trust
Nu we zowel een nieuwe als een oude omgeving in de test omgeving hebben kunnen we tussen de twee omgeving, in de test, een trust opzetten. Het belangrijkste waarbij je hier moet opletten is dat je niet per ongelukt een trust opzet met de live omgeving. Dit hebben we verkomen door ook een test Vlan te gebruiken (wat per definitie wel een Best Praktische is).
Stap 6) Migratie script maken
Om de mailboxen te gaan migreren van de oude omgeving naar de nieuwe omgeving heb ik gebruik gemaakt van de move-mailbox powershell commando. Voordat ik de script laat zien vertel ik eerst wat over het Move-Mailbox commando.
In de deze situatie blijven de gebruikers in de oude omgeving, want deze gaan in een later stadium over. De mailboxen zitten dus straks in de nieuwe omgeving, maar de gebruikers account in de oude omgeving. De gebruikers loggen dus aan in de oude omgeving, maar moeten vervolgens toegang krijgen tot de mail in de nieuwe omgeving. Het move-mailbox commando doet dat op de volgende manier:
- Als eerste maakt hij een MIG-id account aan met daaraan een mailbox gekoppeld.
- Vervolgens geeft hij de gebruikers account uit het oude domain Full-Control rechten op de mailbox
- Daarna verplaatst hij alle mail.
Doordat de gebruiker uit het oude domain toegang krijgt tot zijn nieuwe mailbox kan hij met dezelfde credentials blijven werken.
Om niet steeds het hele move-mailbox commando in te tikken heb ik een script geschreven .
<Script>
- # Variable Definities
- $DCOLD = "DC-oude.domain.local"
- $SourceMailboxDatabase = "Exchange2003-Mailserver\Mailbox Store Oud"
- $TargetMailboxDatabase="Exchange2007-Mailserver\Nieuwe-MailboxDatabase"
- # Administrator oude domain
- $CrSource= Get-Credential
- Write-Output "Start migratie"
- Get-date
- Get-Mailbox -DomainController $DCOLD -Credential $CrSource -Database $SourceMailboxDatabase | Move-Mailbox -NTAccount "OU=Move Mailbox Accounts,DC=NieuweDomain,DC=local" -TargetDataBase $TargetMailboxDatabase -SourceForestCredential $CrSource -SourceForestGlobalCatalog $DCOLD -MaxThreads 15 -SourceMailboxCleanupOptions none
- Get-Date
</Script>
In regel 2,3,4 definieer ik 3 variabelen.:
- $DCOLD is een oude DC die move-mailbox gebruikt tijdens de migratie
- $SourceMailboxDatabase is een database op de oude exchange server
- $TargetMailboxDatabase is een database op de nieuwe exchange server
Regel 6 zorgt er voor dat je een popup scherm krijgt die je vraagt om administrator aanlog gegevens van het oude domain.
Regel 9 is dan DE migratie regel. Het commando Get-Mailbox -DomainController $DCOLD -Credential $CrSource -Database $SourceMailboxDatabase leest alle account die een mailbiox hebben op $SourceMailboxDatabase vanuit het oude domain in ($DCOLD ) in. De uitkomst wordt vervolgens door gegeven aan move-mailbox. Met het move mailbox zijn een aantal opties mee gegeven:
- NTAccount zorgt er voor dat er in OU "OU=Move Mailbox Accounts,OU=Import,DC=NieuweDomain,DC=local" en MIG account aangemaakt worden
- TargetDatabase vertelt naar welke database de mailboxen verplaatst moeten worden.
- SourceForestCredential vertelt met welke credentials er aangelogd moet worden op de oude omgeving
- SourceForestGlobalCatalog vertelt met welke GC er gewerkt moet worden.
- MaxThreads vertelt wat de maximale aantal mailboxen zijn die tegelijkertijd verhuist worden
- SourceMailboxCleanupOptions vertelt wat er moet gebeuren met de oude mail. In mijn geval staat er none, dus de mail blijft ook aanwezig in de oude omgeving. In dit geval kopieer ik de mail. Mocht het dus mis gaan dan kan ik zo terug naar de oude omgeving. Dat is dus mijn fall-back optie.
De Get-date gebruik ik om te weten hoe laat hij begonnen is en hoe laat hij klaar is, is geen noodzakelijke log.
Dit script run ik op een exchange server in het nieuwe domain.
Stap 7) Migratie test
Met dit script heb ik eerst een test migratie gedaan. Aangezien het om 820 GB aan mail ging wilde ik graag weten of ik het in 1 weekend ging halen. Tijdens de eerst test kwam ik er achter dat ik 10 GB per uur haalde. Ik deed toen 1 database van 35 GB in 3 ½ uur
De 820 GB is verdeeld over twee server en per server 4 stores. We gaan alle store simultaan migreren. In een tweede test deed ik 430 GB in 36 uur. Dat geeft bijna 12 GB per uur.
Na de migratie hebben we met aantal users in de test omgeving geprobeerd aan te loggen op de “nieuwe” mailbox. Dit werkte zonder problemen.
Daarnaast maakt move-mail een aantal XML log bestanden. Deze kun je het beste openen met Excel. In deze log bestanden stonden het aantal mislukte mailboxen. In totaal waren er 20 (van de 1800) mailboxen mislukt. Meer dan de ½ van de 20 mailboxen waren nooit gebruikt. Dat wat niet lukt, doen we later met de hand wel. Het gaat tenslotte maar om enkele tientallen
http://technet.microsoft.com/en-us/library/aa997599.aspx
Stap 8) Bouwen productie
We kunnen nu stap 3,5,6 herhalen in de productie omgeving en exchange 2007 live brengen.
Stap 9) Eindgebruiker op de hoogte brengen.
Aangezien het om een grote migratie gaat die de mail omgeving voor minimaal 48 uur plat legt is het verstandig je gebruiker hiervan op de hoogte te brengen. Natuurlijk hebben we alles goed getest in stap 7, maar …..
http://en.wikipedia.org/wiki/Murphy's_law
Stap 10) De migratie
Voordat we starten met de migratie stoppen we eerste de mailflow. Al de mail moet ergens in een SMTP queue opgevangen worden. Dan kan bij een provider of op een anti-spam appliance. Dit moet je wel van te voren uitzoeken.
Daarna zorgen we dat er geen gebruikers meer bij hun mail kunnen komen om op die manier de oude omgeving te bevriezen. Je kunt dit niet doen door de oude mail omgeving uit te zetten of de database te dismounten. Move-mailbox gebruikt namelijk mapi calls om de mail in te lezen. Je zal dus op een andere manier je gebruiker de toegang tot de mail omgeving moeten ontzeggen. Bijvoorbeeld met een firewall of extra een VLAN.
Daarna start je de script en ga je wachten en wachten
Ondertussen kun je de client herconfiguratie script klaarzetten. Nog niet uitvoeren, dit doe je pas als je zeker weet dat de mail succesvol over is.
Ook alle servers en printers moeten naar de nieuwe mail server wijzen. Hier kun je ook vast wat zaken klaar voor zetten, maar niet uitvoeren totdat……
Lekker koffie drinken, ga wat slapen. Exchange doet het nu allemaal voor je en is waarschijnlijk wel 36 uur bezig (in ons geval).
Stap 11) Feest (oeps een stap te veel)
Als het gelukt is, is het tijd voor een klein feest. Er is tenslotte wel iets te vieren.
Martijn Bellaard