How to setup an Exchange 2010 CAS Array to load balance MAPI

Since Exchange 2010 CAS servers now handle all internal and external client traffic to Exchange mailbox servers including Outlook MAPI traffic, the need for a highly available CAS array is critical to your design.

CAS arrary

So how do you load balance MAPI traffic? I found a some useful bits of information to help out:

  1. Load balance your CAS servers in a CAS array by whatever method you choose – Both Hardware LB or Windows Network LB are supported load balancers

  2. Create a MAPI A record in your internal DNS infrastructure that resolves to the Virtual IP Address (VIP) of the CAS load balancing array.  The DNS entry, for example, could be

  3. Configure your load balancing array to load balance the MAPI RPC ports:

    1. TCP 135

    2. UDP/TCP 6005-65535; or set static ports

  4. Use the new-clientaccessarray cmdlet to create the CAS array object. Such as:

New-ClientAccessArray –Name “School CAS Array” –Fqdn “” –Site “Boulder”

More here.

    5.  You need to revisit any Exchange databases that were created before the CAS array was created and set the rpcclientaccessserver property to match the newly created CAS array. Such as:

Set-MailboxDatabase DB1 -RpcClientAccessServer “”

For more on Exchange Server 2010 CAS visit here.

Comments (30)

  1. markga says:


    The new-casarray site parameter is based on Active Directory site. Therefore, if you wanted everything in a single CAS array you would need an AD site that spanned two locations or you would need a unique CAS array residing in each site. It is currently recommended to maintain two separate AD sites.

    When a failover to the alternate datacenter occurs, the database would need to be associated with the CAS array associated with the alternate AD site.

    For load balancers, you can leverage Microsoft’s software based NLB (Part of Windows Server) or you could leverage any hardware based load balancer. Some HW load balancers provide geo-failover capabilities which will provide an easier failover to an alternate CAS array.

  2. markga says:

    Appologies to Henrick for using his own CAS diagram. I was unaware this was not from MS. I changed the diagram.

  3. Anonymous says:


    Is there a way to do this in the EMC?

    I ask b/c we recently setup what I think is a CAS array but maybe they are currently just 2 separate servers with a # of roles being ran on each.

    As an Example we have 2 servers listed in EMC under Server Configuration > Client Access.

    Is it safe to assume they are in a CAS array?

    My next question is how do I get clients to use the Cluster IP address of the hardware load balancer for say items like RPC for internal MAPI clients?

    My guess would be that it would be a DNS value that points to a cluster IP address which has a cluster configured versus an individual server.

    Looking forward to your response!



  4. markga says:


    See this Exchange 2010 site failover article under 'activating CAS roles':…/dd351049.aspx

    It will more likely involve manual DNS changes to make it work with different subnets/sites.

  5. markga says:

    Mr. H,

    I wouldn't recommend using the same IP for CAS Array and DAG. Two different failover and availability solutions.

  6. markga says:


    If the secondary site is passive, please read this failover article under 'activating CAS roles':…/dd351049.aspx

    It will more likely involve manual DNS change during a site failover.

  7. markga says:

    good catch! thanks I will correct.

  8. markga says:

    @ Raxit –

    The CAS Array is indeed an AD object however you still need to load balance your pool of CAS servers with the steps in posted in the blog post.

  9. markga says:


    It depends on how your AD sites are configured. Do you have one AD site per location?

    The mapping is one CAS array mapped to one AD site.

  10. markga says:


    This would imply TWO CAS arrays since it is a one to one mapping. Manual DNS switching would be required for CAS failover if you have TWO DAGs amongst the two sites. If you have stretched DAG across the two sites you would have to re-associate the users to the CAS Array in Site 2 using the Set-Mailboxdatabase -RPCClientCASserver cmdlet above to manually change the CAS Array in Site 2.

    Here are some good information:

  11. markga says:


    You want a unique FQDN for your CAS Array since it is used for load balancing all CAS traffic amongst your CAS servers.  You can use whatever name you want of course for your CAS array.  It certainly could replace your OWA FQDN with and then specific subdirs such as /owa routes to OWA and MAPI RPC routes Outlook traffic, etc.

  12. Bhalchandra says:

    The cmdlet mentioned for creating CAS array is incorrect; the correct command should be:

    New-ClientAccessArray –Name “School CAS Array” –Fqdn “” –Site “Boulder”

  13. Exchange14 says:

    Thank you for this post.

    What would be CASArray configuration if we use Recovery center in different site, which is same time might server few clients (let’s assume it is 3rd DAG).


    Main site can be:

    New-ClientAccessArray –Name "OurorgArray” –Fqdn “” –Site “MainSite”

    In Recovery center will it be same, or something like:

    New-ClientAccessArray –Name "OurorgArray” –Fqdn “” –Site “RecoverySite”

    Any recommendation for a simple hardware load balancer, with main role to play as a FailOver, or whatever solution that can play that role.

    Thank you

  14. Anand N says:

    I did not get the command to work as you have it:

    Set-MailboxDatabase DB1 -RpcClientAccessServer “”

    I had to use a format as

    Set-MailboxDatabase DB1 -RpcClientAccessServer “School Cas Array”

  15. Kenan DUZDAS says:

    Hi everyone,

    I have a problem,I have two CAS server and two Mailbox exchange,I have configured CAS-NLB but i haven’t connectted to database,When I used that command "Set-MailboxDatabase DB1 -RpcClientAccessServer “” I got the following warning " WARNING: The command completed successfully but no settings of ‘Mailbox Database 0774792730’ have been modified." i didn’t configure DAG on mailbox exchange, is this important? or what is the problem?

  16. dirk says:

    hi everyone,

    i have a question about configuring cas arrays.

    We have one domain with 2 Sites. On each site is one Mailbox Server and one Cas server. DAG is running between the 2 mailbox server.

    When on site A the database makes a failover to Site B, the internal clients (Site A) can still connect to the database located on site B. But the external access (webmail) don’t work.

    So i want to make an cas array and here is my question.

    Do i need on each site 2 cas servers (one from site a and one from site b) or can i configure the cas array with only 2 cas server ( one site A and one Site B) ?

    thx for your help 🙂

  17. dirk says:

    yes we have one Ad site per location with different

    ip’s. (for example: AD Site A  192.168.x.x and AD Site B 172.25.x.x)

    thx a lot

  18. Flash says:

    When configuring the windows LB we need to define the "Full Internet name" of the NLB.

    can this be the same as the CAS array ?

  19. Mego says:

    Can we use as CAS Array FQDN same as OWA FQDN?

    Is there any reason to have different name like ?

  20. Mr H says:

    Do you know if it is supported to use the DAG IP address for the CAA? In a 2 node DAG, seems a sensible way to achieve automatic failover?

  21. cyw77 says:

    If we have CAS Servers on different data centers across sites and we will be planning to use a 3rd party NLB. Do we still need to create the CAS Array using the command New-ClientAccessArray?

  22. cyw77 says:


    Sorry I might need to rephrase my question. I will give you my setup


    PRODUCTIONDC – This is a Production DC

    PRODUCTIONEXC – This is a Production Exchange Server running all roles. HT/CAS/MB

    CAS Configuration for PRODUCTIONEXC

    External URL:

    Internal URL: http://PRODUCTIONEXC


    DRDC – This is a DR DC

    DREXC – This is a DR Exchange Server running all roles. HT/CAS/MB

    CAS Configuration for DREXC

    External URL:

    Internal URL: http://DREXC

    Both have DAG configured, because if I stop the Information Store on PRODUCTIONEXC, the database will failover to DREXC and this is working correctly.

    I am using a 3rd party virtual appliance NLB. I have configured both PRODEXC and DREXC as part of the pool. Do I still need to configure the CAS Array if I have created a pool in my NLB?

    Currently all my Outlook users are connecting to PRODUCTIONEXC.

    My question is when PRODUCTIONEXC is down, how do I load balance the CAS Array across sites based on my setup?

    Do I still need to reconfigure the Outlook (as it is currently pointing to PRODUCTIONEXC) for it to get it working?

  23. nick says:


    Can you please advise on the following setup?

    We have two datacenters with different subnets but both are in a single AD site as they are conencted by a high speed link.  One is for production and one is for recovery, but we plan to use the same external url for both.

    We are looking to implement a single CAS array with a CAS server in each location being a member of the array.

    A DAG group with a node in each location will be used for mailboxes.

    Each location will also have an edge server for mail routing.

    My question is,

    Can we use the CASArray to provide redundancy for the external accesses such as OWA and Outlook Anywhere. So if the CAS server in the array in the prod location failed, would external users be directed to the CAS in the DR site for remote access as it is all in one site?



  24. tom says:

    Do we need to perform Set-MailboxDatabase for Exchange 2003 databases if we wish to use ClientAccessArray for Exchange 2003 databases?


  25. avinashbhucs says:

    Hi All,

    I have six virtual machines in which I have configured AD and DNS on one machine and CAS1 (Exchange 2010) , CAS2, Mailbox1 (for CAS1), Mailbox2 (for CAS2) and CASARRAY on another machines. And they all are in the same domain. I add NLB features on CAS1, CAS2 and CASARRAY. I have added CAS1 and CAS2 in the nlb and gave ip address of CASARRAY as cluster IP. The status for CAS1 and CAS2 is showing "converged" in NLB. I have run command for creating new cas array and assigned mailbox to this cas array. But I am unable to open "OWA" page from cluster ip. Either it is opened by ip address of CAS1 or CAS2 but not through cluster's ip.

    So kindly give some comments about above to resolve the issue.

    Thanks and Regards,


  26. two servers has all the rules says:


    i have two servers each one have all the rules hub mb cas … is it recommended to run cas array and DAG between them ?

    i saw microsoft article not recommend these kind of setup due to the HW conflict between failover and nlb

    what is ur opinion ?

  27. Raxit says:

    HI Markga,

    This is ggood article but i am confused with CAS array and its load balancing stuff.

    You have mentioned that "Load balance your CAS servers in a CAS array" now this statement is opposite to the one mentioned in to below technet…/demystifying-the-cas-array-object-part-1.aspx

    in this post, brian has mentioned that CASarray doesn't load balance your traffic. CASArray is an Active Directory object used to automate some functions within Exchange and that's all. it never load balance OWA,OA,MAPI,OAB,andd other web seervices.

    Could you please let me know whether Cas array load balance traffic or not

  28. jorgesac says:

    Nice job. Mark, best regards.

    I met you in SFC, IPTV team.

  29. John says:

    Can I use the WLB with a Non-DAG Exchange 2010 setup as I understand WLB is not supported in a DAG configuration.



  30. Swissnic says:

    John – NLB is not supported when you use multi-role servers with DAG. You can set up seperate Mailbox servers with a DAG and then use NLB with stand-alone CAS servers… if this helps… ;o)