Monday, March 5, 2007

Mailbox Load Balancing Made Simple - Part 3

Previously I detailed mailbox provisioning based upon database file size and user count. Finally, I will demonstrate random dispersal of mailboxes.

Random Distribution

Statistically, given a large enough number, a random distribution of accounts will create mailbox databases with a similar number of users. Once again a random database can be chosen easily within PowerShell.

[PS] C:\>$MailboxDatabases = Get-MailboxDatabase
[PS] C:\>$Random = New-Object Random
[PS] C:\>$TargetDatabase = $MailboxDatabases[$Random.Next(0,$MailboxDatabases.Count-1)]

Pros: This method is quick and easy for load-balancing users across multiple servers.

Cons: With the random method you don’t have control in which database new mailboxes are created. There will be instances when a new mailbox is added to the biggest database in terms of both size and number of users. When/if you add new databases they will be populated at the same rate as existing databases and thus never achieve the same size as the existing databases.


Each method has its merits and should be chosen based upon your environment. I personally used a hybrid solution: For existing user migrations I used the the smallest database in terms of file size method. Load balancing in terms of users per database took too long for our provisioning process with thousands of mailboxes; so I opted to use the random distribution method for new mailbox creations. If/when we add new servers/databases I will have to manually move users between databases to achieve a balance.

Hopefully this is helpful if you are increasing the size of your Exchange organization or are re-writing your provisioning code for Exchange 2007.


1 comment:

The Real Buckwheat said...

Check out this link.