Sunday, July 25, 2010

EXCHANGE 2010 and Load Balancer Story


You probably heard so much about Exchange 2010 and excited already. The one of the most exciting future in Exchange 2010 is DAG ( Data Availability Group) which makes Exchange redundant just like Active directory domain controllers. Now you start planning your exchange server and found out you can run your entire mail operations from two physical servers, with 7200 RPM SATA drives. You also want to make your messaging environment redundant by taking advantage from DAG technology which comes out the box with Exchange 2010. I think at this point you need to be aware of some limitations as I will try to explain shortly.

Summary of Limitations



We set up Exchange 2010 servers and utilizing DAG with two Physical Servers, Servers called mail1 and mail2 with fallowing roles.


As you can see each server has two database copy. When MAPI Clients connect to their corresponding mailbox databases by using & utilizing MAPI end-point to get their mail, they don’t talk directly to mailbox server, they talk to CAS server instead. This is also called middle tier facilitation, the new services handles client and database connection communication now is running from CAS server role in Exchange 2010.

  • RPC Client Access service
  • Handles all data connections for mailboxes
  • Address Book Service
  • Handles all data connections for access to Active Directory

Each database must be unique and each database has attribute called “RPCClientAccessServer” which tells MAPI client what database to connect too.

Imagine MAPI clients opens outlook, outlook goes out there and finds CAS server, CAS server  looks at the databases DB1, DB2, DB3, DB4 ( in this example) and read the attribute called “RPCClientAccessServer”  to find out where outlook MAPI clients needs to connect too.


Now if you have not set the CAS array the attribute is set to first servers introduced as CAS server, which is mail1 in this example.

Imagine now you are user 1 and your mailbox database is MB1, MB1 has two copy on both server but you will only get connected to “Mounted” database in this example it will be Mail1  Server and outlook will open up, you are happy.

Imagine now you are user 1 and your mailbox database is MB2, MB2 has two copy on both servers but you will only get connected to “Mounted” database in this example it will be Mail2  Server and outlook will open up, you are happy. ( in this example both servers are up and running ) you get connected to Mail2 because mail1 is up and running. Remember MAPI client ask CAS where to connect CAS server check the Attribute RPCClientAccessServer=Mail1 ( First CAS server)

image *** Fact all databases set to same attribute which is pointing to MB1.***


Now if mail1 goes down , what will happen while Mail2 is up and running?

MAPI Client goes to CAS server ( mail2) , CAS server looks at databases and reads the attribute called RPCClientAccessServer=Mail1 and MAPI clients tries to connect to Mail1, which obviously wont work since mail1 is hard shutdown!!!!!!! now you have to deal with outage, even though you have mail2 is up and running and you have mounted databases there. The problems is MAPI clients do not know how to connect to mail2.

Now lets set CAS array and do this, we go to AD/DNS and create A record called


Now we set the attribute RPCClientAccessServer


Here are the Databases will look like

DB1 RPCClientAccessServer Outlook.smtp25.local
DB2 RPCClientAccessServer Outlook.smtp25.local
DB3 RPCClientAccessServer Outlook.smtp25.local
DB4 RPCClientAccessServer Outlook.smtp25.local

If you remember the IP addresses for Mail servers

Server Name IP Address

Now all you need to do is to change this A record and update the IP address as which will tell MAPI clients to connect to mail2 and get their mails.

As you can easily see if you do have load balancer this will be handled automatically as well as you will not be tied up into these restrictions we have talked about earlier.

Oz Casey, Dedeal

MCSE 2003, M+, S+, MCDST
Security+, Project +, Server +
Http:// (Blog
Http:// (Blog)
Http:// (Blog)

No comments: