In Exchange 2010, system functionality is split into five server roles (Mailbox, Client Access (CAS), Unified Messaging, Hub Transport (HT) and Edge Transport).  Mandatory roles are Mailbox, Client Access and Hub Transport. The Edge Transport and Unified Messaging roles are optional and depend on the infrastructure and operational requirements. The CAS role does not have any built-in load balancing functionality. The HT role does provide load balancing functionality for server to server mail traffic, but not external SMTP traffic that arrives from other applications or from outside the organization directly to the HT server.

Based on this, it is a common requirement to load balance both the CAS and HT roles. In some cases only the CAS role is load balanced. The exact load balancing requirements depend on the number of servers in use and how / where the roles are deployed.

LOAD BALANCING CONSIDERATIONS:

Load Balancer Deployment Method

As with several other Microsoft applications, the load balancer for Exchange 2010 is deployed in one-arm SNAT mode (Source Network Address Translation) at layer 7 using HAProxy. This mode is recommended by Microsoft and also has the advantage that it requires no changes to the Exchange 2010 servers.

Persistence (aka Server Affinity) Requirements

Some Exchange 2010 protocols require affinity and others do not. For more details please refer to this Microsoft Technet article.

For additional information on the various affinity options, please refer to this Microsoft Technet article:

Summary of Persistence Requirements:

Persistence – Required Persistence – Recommended Persistence – Not Required
Outlook Web App Outlook Anywhere Offline Address Book
Exchange Control Panel ActiveSync AutoDiscover
Exchange Web Service Address Book Service POP3
RPC Client Access Service Remote PowerShell IMAP4

Virtual Server/Service (VIP) Requirements

  1. CAS role – HTTPS & HTTP services
  2. CAS role – RPC services
  3. CAS role – IMAP4 or POP3 services (if used / required)
  4. HT role – SMTP services

Using multiple VIPs for the CAS role allows the settings for each VIP to be customized (e.g. persistence/affinity options) to suit the service being load balanced and also ensures more granular health-checks.

Port Requirements

The following table shows the port list that must be load balanced for the CAS and HT roles. Note that some services such as IMAP4 or POP3 may not be used in your environment.

TCP Port Role(s) Uses
25 HT SMTP
80 CAS HTTP – various
110 CAS POP3 clients
135 CAS RPC end point mapper
143 CAS IMAP4 clients
443 CAS HTTPS – various
993 CAS Secure IMAP4 clients
995 CAS Secure POP3 clients
60200* CAS Static port for RPC client access service
60201* CAS Static port for Exchange address book service
HT = Hub Transport Server,  CAS = Client Access Server

*These ports have been chosen as the static RPC ports. Microsoft recommends that any port within the range 59531 to 60554 should be used, and that the same ports should be used on all Client Access Servers within the same AD site.

For a full Exchange Server 2010 port list, please refer to this Microsoft Technet article.

Deployment Architecture

There are multiple ways to deploy Exchange, but in this example two servers are used. Each server hosts the CAS & HT roles, as well as the Mailbox role in a DAG configuration. This provides high availability for these three key Exchange roles and uses a minimum number of Exchange servers.
Exch1

Note: The load balancer can be deployed as a single unit, although Loadbalancer.org strongly recommends a clustered pair for resilience & high availability.

More Information

For more information please refer to our complete deployment guide available here.