We help IT Professionals succeed at work.

Setting up high database availaibility for Exchange 2010

cchibonga asked
I have exchange 2003. I will be migrating to exchange 2010 for the reason of high availibility. I have setup a test environment and need help with getting this high availibility option figured out.

I have 2 exchange server in my test environment Ex1 and Ex2 both running MB, CAS, & HUB role. I have a witness server regular w2k8 R2 server. I have set up a DAG for Ex1 & Ex2, replication is fine, in fact when one server goes down the other server mounts the databases.

I got the DAG part down, where i am having problems is getting my clients to remain connected when one server goes down. here is what i have tried and the issues i have faced:

1. Setting up CAS array for the 2 servers Ex1 & Ex2, that does not work coz windows NLB cannot coexist with clustering for DAG. Other resources i have read recommend using a third party device or software to do NLB, don't want that yet coz cost is an issue already.

2. Setting up witness server as the server clients connect to in outlook, it wont even let me do that it says the server cannot be found. i used the command below:
get-mailboxdatabase | set-mailboxdatabase -rpcclientaccessserver <FQDN of the array>

3. tried DNS round robin but it does not detect the state of the services for exchange so if server goes down it will continue sending traffic to the dead server.

I am trying to minimize my cost, i don't want to pay for any more exchange licenses, just want to use the the 2 that i have.
 i don't want to buy new software or a new device to do the load balancing either.

Any input will be appreciated.

Watch Question

Solutions Architect
you pretty much nailed the problem Windows Load balancing cannot work if you have  clustering enabled

you have 3 options

1. Buy a hardware loadbalancer (not a cheap solution)
2. move you CAS to dedicated servers and build a windows nlb
3. keep your setup as is and
   a. create a cas array say array.domain.com
   b. in dns create 2 entries for array.domain.com each pointing to one of the servers with a low TTL
   c. enable the mailbox database to use array.domain.com as it RPCClientAccessServer (set-mailboxdatabase databasename -RPCClientAccessServer array.domain.com)

so far pretty much like DNS round robin
   d. when a failure occurs you will need to manually edit the DNS to delete the record of the failing one
The Second Command that you have tried to should work for you.

get-mailboxdatabase | set-mailboxdatabase -rpcclientaccessserver

If this gives you an error, try with

Get-MailboxDatabase -identity  | fl

Check for the RPCClientAccessServer Name.
See if it is pointing to the CAS Server.

If not again run the command.

Set-MailboxDatabase -identity  -rpcclientaccessserver


I have tried what you described. I created an A record called Array.domain.local pointed to  IP for Ex1 and then created another A record Array.domain.local pointed to IP for Ex2.

when i go into outlook and try to setup a client, and point to Array.domain.local. however when i hit the check name it give me an error " the name cannot be resolved. please check if exchange is online" not sure how long it will be before it recognizes

what do we need to do? Did i miss something?

AkhaterSolutions Architect

a. from the client if you try ping array.domain.local is it being resolved to a name ?
b. did you create your CASArray array.domain.local using the new-clientaccessarray cmdlet ?
c. did you point all your databases RPCClientAccessServer to array.domain.local


ok. I got it to resolve now. so outlook client is pointing to the CAS array that part is good.

I shutdown the Ex1 server where database are, checked outlook and it  was disconnected went into DNS and deleted the host record for array.domain.local, restarted outlook but still disconnected. I tried to ping array.domain.local but it gets request timed out. and is pointing to EX1's IP address.

I am using W2k8 R2 as my DNS server, when u create A records it does not give you an option setting TTL.

Any ideas on how we can make this replication happen fast.
AkhaterSolutions Architect

As I told you in the first part you should create the DNS record array.domain.com. to have a very TTL


ok i'll try that.

one question though.
when i installed my first exchange 2010 EX1 i run these commands:
Setup.com /PrepareLegacyExchangePermissions
Setup.com /PrepareSchema
Setup.com /PrepareAD
I am getting ready to install a second exchange 2010 EX2 do i need to run those commands again?

AkhaterSolutions Architect

no these commands needs to be ran only once