We recently upgraded from unity 7 to unity 8 and have also upgraded to support exchange 2010. Everything is working well except we still need to change our partner server to 2010. We are running our exchange 2010 environment as a load balanced server array. I was hoping to have the partner server look at the load balancer and then have that tell it where to go so it wouldnt matter if one of the servers were up or down as long as one in the array is available.
Does anyone have any solutions to get this to work? Its really a big limitation.
Excellent question. I first want to direct you to the "Determining the Partner Exchange Server for Cisco Unity 8.0, 7.0, and/or 5" section of this article
Using Microsoft Exchange 2010 with Cisco Unity Versions 8.0, 7.0, and 5.0
As the guide suggests, you can choose to assign a partner Exchange server as a mailbox database within an Exchange DAG (Database Availability Group) or an Exchange server outside the DAG.
Does this help? If not, I'd like to ask you to go into more details about where your load balancer exists in relation to your Exchange 2010 mailbox database servers and CAS servers.
In addition to Tim's comments (+5), it has been seen that Cisco ACE works with this setup. However, we've seen situations where other 3rd party load balancers by default don't come configured with persistent connections, rather a round robin setup. As long as the NLB continues to use the same server for the life of the MAPI connection it should work. What ends up breaking MAPI communication is when a connection is setup by the NLB, then while still using the same connection it redirects the connection to a different CAS. You'll start seeing MAPI errors and various side effects with Unity with message delivery/retrieval/MWI, etc. You'll start seeing the infamous MAPI_E_NETWORK_ERROR.
Hope that helps,
Thanks for the quick response guys!
We are using 2 Kemp Loadmaster 2500 load balancers in a hot failover mode which then connect to our CAS array. The load balancers are set for a persistent connection for a duration of 3600 milliseconds.
I have followed the cisco documentation and am currently in the MSCW but do not have an option to select the load balancer. I can only accept one of my servers directly. How can I get it so I can select the load balancer? We want to have it utilize the load balancer because we have set up the environment so it doesnt matter if one server is not available. If we have to partner to a single server then we will have to make sure that server is always available.... something we dont want to do.
You can't really load balance communications with Exchange clients and Mailbox Databases servers. The partner Exchange server role for a Unity server is defined as the Exchange Mailbox Database server which hosts Unity system mailbox accounts. CAS servers by definition don't host mailboxes. CAS servers are merely "traffic cops" for Exchange client device communication such as for Microsoft Outlook or Cisco Unity. Eventually, communication needs to be directed to a specific Exchange Mailbox Database server. If your concern is single point of failure for Exchange communications, Microsoft included the Database Availability Group feature to accommodate such desires. The following Microsoft Exchange blog post describes the concept.
In a nutshell, as far as Unity is concerned, it wants to have a Mailbox Database to talk to when it communicates with the Exchange system in certain circumstances. If the Mailbox Database you choose as the "partner" is part of a DAG, then one of the Mailbox Database servers can go down unexpectedly, and another one will take over. Unity will pick up on the change in the DAG and start communicating with the other server instead.
Having an ACE or third-party NLB certainly helps utilize your array of Exchange 2010 CAS servers evenly, and adds another layer of resiliency, but it's not your all-inclusive Exchange server redundancy solution.
Does this clear some things up?
Ok. That makes sense. Yes they are part of a DAG (well they will be shortly.. we are in the middle of the 2010 exchange upgrade as well). So if I understand correctly, as long as I choose a store that
is already spread across our server array, unity will be able to take care of which server it is actually talking to
in the event that one goes offline. Correct?
You mention that Cisco Ace works in this setup. We have Cisco Ace and are plauged by the problems you mention about MWI, MAPI, etc.. Microsoft recommends to configure Source-IP based affinity(persistence) for the MAPI ports when load balancing Exchange 2010. We did not follow this recommendation and my load-balancer engineer is reluctant to now go and make the change since Outlook clients use MAPI and work fine. Can you provide a snippet of a working Ace configuration specifically showing the affinity method for the MAPI ports? Can you also provide a recommendation on this topic?
Unfortunately, I don't have this configuration so I'm not sure how the ACE is actually configured. The question may be more suited for someone who has deployed this setup, or for the appropriate ACE TAC team. I can just say that I know it's been tested.