Load Balancing Backend Servers Farms

Applications that are published using UAG can benefit from its built-in load balancing functionality. Multiple backend servers can be configured per application, and Web Farm Load Balancing (WFLB) will take care of distributing traffic across the different servers and maintaining clients’ affinity.

Let’s assume I am publishing Outlook Web App (OWA). There are two Client Access Servers in my Exchange 2010 deployment, EX14-CAS-01 and EX14-CAS-02. My trunk’s public host name is portal.contoso. com, but instead of using that I would like users to access OWA using mail.contoso.com. Considering the published OWA application is consumed by a Web browser, I can improve the experience with cookie-based affinity; distributing traffic across the array in a more evenly manner (avoiding the problem with forward proxies of multiple users behind the same IP address). All of these configuration settings are reflected in Figure 1:

clip_image002

Figure 1 - Exchange Web Farm Configuration

The above illustrates a plain vanilla scenario. In contrast, some farms tend to be pickier on how they are being approached. For instance, they may require the Host: name in the HTTP header request to point to the farm’s name instead of a particular backend server. You can instruct UAG to do that by selecting the Use the farm name in the HTTP check box and specifying the designated farm name in the Server farm host name edit box. UAG also replaces backend farm links that match the content of this edit box with the public host name. Figure 2 illustrates how to bake all of this into WFLB configuration settings.

clip_image004

Figure 2 – Advanced Farm Configuration

With the above settings, UAG HTTP requests to backend farm servers look as follows:

  • GET / HTTP/1.1
  • Host: partners.contoso.com (instead of Host: EN-RWS-01 or EN-RWS-02)

Content from backend servers that contains references with EN-RWS-01 will be modified, as UAG will replace them with partners.contoso.com. Effectively, end-users will not be exposed to the internal hosts’ names but to the public host name only.

Michel Biton