I wouldn’t be surprised if I saw this topic covered at TechEd next year. I have many clients ask me the following question a lot, “do I need a CAS Array in my organization?” I imagine that there are many people out there wondering the exact same thing. So, do you need a CAS Array for your Exchange 2010 organization?
Well, let’s start out by looking at how Exchange 2010 will work without a CAS array. In the event where you do not have a CAS Array when you create a Database the database will configure the “RpcClientAccessServer” (the RPC Endpoint for Outlook Client Connectivity) based on one of the following:
- If you have both the Client Access server role and the Mailbox server role on the same physical server, the value of RPCClientAccessServer property for a particular Mailbox server will be the same as the Mailbox server.
- If you have the Client Access server role on a separate maching the RPCClientAccessServer property for a particular Mailbox server will be set to a random Client Access server within the Active Directory site.
What this means is that the Mailbox Database that you created will either assign the RPCClientAccessServer property based on one of the two options above. Which brings me to Scenario one.
Scenario one:
Let’s say you have two Exchange Servers deployed within your organization EXCH1 and EXCH2. Each server is running the Mailbox, Hub Transport, and Client Access role in the same Active Directory Site. Now say you deploy one databases on each server Database1 on EXCH1 and Database2 on EXCH2. Each Database will be assigned the RPCClientAccessServer property with the server name the database resides on. i.e. Database1 will have a RPCClientAccessServer set to EXCH1 and Database2 will have a RPCClientAccessServer set to EXCH2.
Next we deploy a DAG within our two nodes and replicate the two databases between the servers. Even with a DAG deployed in the event that EXCH2 goes off line all users in Database2 will lose their connection! This is because their RPCClientAccessServer points to EXCH2 even thought their database is mounted on EXCH1. The RPCClientAccessServer property does not get updated automatically.
End Scenario one
Now let’s take a look at how Exchange 2010 behaves if the CAS Array is already created. When you create a Database the database will configure the “RpcClientAccessServer” (the RPC Endpoint for Outlook Client Connectivity) based on one of the following:
- In the event that you have first created a CAS Array and then second created a mailbox database Exchange will assign the RPCClientAccessServer property with the name of the CAS Array for that Active Directory site.
Which brings me to Scenario two!
Scenario two:
Let’s say you have two Exchange Servers deployed within your organization EXCH1 and EXCH2. Each server is running the Mailbox, Hub Transport, and Client Access role in the same Active Directory Site. There is no hardware load balancer in your organization but you decided that before creating any databases in your organization you would create a CAS Array. (for info on creating a CAS Array see my article: Exchange 2010 Client Access Server Array (CAS Array)
Once the CASArray has been created you go out and create a DNS entry, in this case cas.scottfeltmann.com. For an IP address for this DNS entry you type in the IP Address of EXCH1 and set the time to live to 5 minutes or less (you could do DNS round robin but in the event of an outage 50% of the users will be off line).
Now that we have our CAS Array created we can move forward and create our two new databases, Database1 and Database2. Each Database will reside on their respective servers EXCH1 and EXCH2. Since we have created our CAS Array the RPCClientAccessServer property will be set with the CAS Array name, in this case “cas.scottfeltmann.com”.
As a final step a DAG has been deployed to replicate the mailbox databases between the two servers within our organization. Since our CAS Array is currently pointing to cas.scottfeltmann.com which points to EXCH1 in the event that we lose the server EXCH1 our users will lose their connection. Once this occurs a manual process needs to take place to update the DNS entry cas.scottfeltmann.com to point to EXCH2. Once DNS updates, all users will be back on line and working again! Much better than the scenario one if you ask me.
End Scenario 2.
Honestly to simply the failover process I always suggest a Hardware Load Balancer like Kemp Technologies (http://www.kemptechnologies.com/us/) which will automatically re-establish the connection.
Also keep in mind that if you created a Mailbox database before the creation of a Client Access array or the installed a Client Access server within the Active Directory site, you’ll need to reconfigure the value of the RPCClientAccessServer property. If no Client Access server exists in the Active Directory site when the Mailbox database is created, the value of the RPCClientAccessServer property will be set to the FQDN of the Mailbox server. To configure the value of the RPCClientAccessServer property, use the following command: Set-MailboxDatabase DBName -RPCClientAccessServer cas.scottfeltmann.com (or whatever your CAS Array name is). In some rare instances you may run into a bug where you created the CAS Array after the databases were deployed, and updated the RPCClientAccessServer property on the Database. For more information on that bug see my article Outlook Profile not updating after creating CAS Array.
So, to answer the question, “Do I need a CAS Array?” The answer is Yes! Most certainly! Absolutely!
Edit — I should point out, even if you have a single Exchange 2010 Server in your entire Organization you should use a CAS Array!
Questions? Comments? Please Share!





