The Three UC Amigos

Three Microsoft UC technology specialists covering U.S. Education

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

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

  • Comments 30
  • Likes

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.

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

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

  • good catch! thanks I will correct.

  • 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

  • Exchange14,

    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.

  • 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”

  • 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?

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

  • 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 :)

  • Dirk,

    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.

  • 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

  • Dirk,

    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:

  • 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 ?

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

    Is there any reason to have different name like ?

  • Mego,

    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.

  • Question:

    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!



Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment