Client Access Arrays were introduced in Exchange 2010 as a means to provide High Availability scenarios for RPC clients (MAPI).
In previous versions of Exchange RPC / MAPI access was handled by the Mailbox Server role, where OWA and HTTP access were handled by the Client Access Server role.
In Exchange 2010 – the Client Access Server Role services all methods of connecting to your Exchange mailboxes.
Now, whilst this is a good thing as you can separate you CAS Servers from your Mailbox Servers therefore ensuring that the overhead of all Client Connectivity is taken away from the Mailbox Role, which is very useful in large / high demand environments – there is one small problem.
Once your Outlook client has made a connection to a Client Access Server in your Exchange 2010 environment, the routed connection stays with that CAS.
Therefore if the CAS Server goes down for any reason, you lose the connection to the Mailbox Server, and will not failover to any other CAS in your site.
This is where Client Access Arrays come into play.
The idea behind a Client Access Array is to group together all the CAS Servers within your AD site (remember that CAS Arrays are AD Site Based), and then using a load balancing solution provide a single connection point for RPC clients which is made up of a number of CAS endpoints.
This can be accomplished using Windows Network Load Balancing – however the best practice recommendations from Microsoft state that you should use a Hardware load balancer solution, this is the point where you might be asking the question why?
- Windows NLB is not supported on the same server as Failover Clustering – therefore, if you are running Exchange 2010 servers that combine the CAS and Mailbox Server role and you wish to use DAG – the you are out of luck
- Windows NBL Does not provide the ability to monitor dependency services – for example; if a request to port 443 is being routed via a NLB and IIS is down on the CAS, NLB is completely in the dark – most hardware Load Balancers provide “Service Awareness” and can monitor for you
- NLB does not scale well in large client basis – a standard Outlook client will initialise 6 sessions to NLB (4 MAPI + 2 HTTP) – so if you have 5000 clients that’s 30000 sessions that the CAS and NLB have to deal with – and NLB is not really recommended beyond 8 target nodes, so you are limited in what you can do
Therefore given given the above – a simple, visual overview of the above might look like the following in a production environment;
The CCAA Tool
Now that we have covered (very quickly and not in a great deal of detail) – the premise behind Client Access Arrays – we now move into how you can create them. Now, I will not go into huge amounts of detail here – as there are a number of good articles out on the web which take you through the process for example; here and here – however suffice to say the following are the basic steps:
- Create a DNS [A] Record pointing to the Published Address of you LB solution
- Drop into Powershell and Execute the “New-ClientAccessArray” cmdlet
- Add Mailbox Databases to the Array using the “Set-MailboxDatabase –RpcClientAccessServer”
Now the above process is simple enough, however being the type of guy whom really like simplicity – I started to think – surely I could write a little bit of software that provides a GUI overlay to the above which automates the process by performing the following tasks:
- Creating the DNS [A] Record
- Creating the Client Access Array
- Adding Databases to the Client Access Array
In order to get the best from this tool your host system should meet the following requirements:
- This application will only run on x64 Systems
- .NET 3.5 or above installed
- Exchange 2010 Management Tools
The tool can be downloaded from the following location:
In order to install the CCAA tool, double click on the “Exchange2010CCAA-Inst.exe” file when you have downloaded it to your Exchange Server:
You will be presented with a welcome message – click on “OK” to continue – see below
Chose an installation location on your Server – or – accept the defaults, when ready click on the “Unzip” button – see below
When the installer has finished extracting files you will be presented with the following message – click on the “OK” button – see below
Using the CCAA Tool
When the installer has finished the tool will automatically load – see below
- In the section entitled “DNS Server Name” – provide the FQDN or the IP address of the DNS Server where you would like to create the [A] Record for your Client Access Array, when you have done so – click on the “Get DNS” button.
- The section below the “Please select the DNS Zone that you wish to create the A record in:” will populate – select a DNS zone.
- In the section entitled “A Record Name” type in the name that you would like the CAS-Array to be known by
- In the section entitled “A Record IP” provide an IP address for the [A] record – this should be the published connection address of your Load Balancer solution.
– See below –
- The “Save” button will now be enabled – click on it – and the “Save Status” will change to show that the record has been save to the DNS Server.
- You might want to double check this by pinging the DNS record.
When you have clicked on the DNS Save button, the area at the top right of the application window entitled “Client Access Array Name” will change to reflect the name of the CAS array – click on the “Create” button – see below
When you have clicked on the “Create” button – the “Client Access Array Configuration” window (located at the bottom of the application window) will change to reflect your settings so far – see below
In the “Exchange Databases” section (below the “Client Access Array Name” area) – click on the “Refresh” button to retrieve a list of all your Mailbox Databases. Select the Databases that you wish to be within the Client Access Array – and then click on the “Add” button – see below
When you have added your Databases, you will see that the “Client Access Array Configuration” window changes to show you what you have added so far. When you are happy with your selections – click on the “Commit” button.
It is at this point where the Client Access Array configuration is saved by the tool and made active within your environment – see below
You can check to see if the configuration tool has completed successfully by opening an Exchange Management Shell command prompt and typing “Get-ClientAccessArray” – see below
I hope that you enjoy the tool, and indeed that someone finds it useful. As always let me know of any features, changes, problems that you may encounter – and above all else – remember, test the tool in a lab before you use it in production!