Hello readers. As always I hope this finds you well.
Recently Kemp Technologies announced a free version of its hugely popular Virtual LoadMaster which can be downloaded from freeloadbalancer.com. What it gives you is a VLM that is only limited by throughput at just 20 Mbps, and lack of Kemp Support. Kemp says it is for lab’s, development, testing, and proof of concept, however I think SMBs will definitely be taking them up on this, at least temporarily. I think this is a stroke of genius by someone at Kemp to get more people on board the Kemp train.
I spread the word on social media and got a huge response. I can only imagine Kemp did as well as the news probably went viral. At the same time I heard that Kemp also give a complimentary NFR copy of LoadMaster VLM-2000 for personal and non-commercial use to Microsoft Certified Professionals.
Just to set the scene, before hearing about the free version of the VLM I was acutely aware that Kemp was a popular choice for Reverse Proxy and “Hardware” Load Balancer for Lync. It is something that I have been meaning to try out but never quite got around to it. The news of free perpetual licenses was just the motivation I needed.
Why do we need one?
I’ll start by giving a high level overview of the need for both Reverse Proxy and Hardware Load Balancers for Lync.
First there is the Reverse Proxy.
The Reverse Proxy provides an extra layer of security between the internet and the Lync Front End pool. The Lync Front End servers host some internal and external facing websites in IIS such as the meeting space (meet.domain.com). The internal sites listen and respond to requests on standard HTTP/HTTPS ports 80 and 443. The external sites listen on 8080 and 4443 so they don’t conflict with the internal websites. Since most firewalls do not allow for 8080 and 4443 out or in to a corporate network it is necessary to do port address translation (PAT) to convert 80 to 8080 and 443 to 4443.
Figure 1: HTTP Reverse Proxy using PAT
Load Balancing Reverse Proxy
In addition to the function to translate the ports it is also necessary to load balance the traffic when there are multiple Front End servers in a pool. Adding multiple Front End servers behind the Reverse Proxy adds high availability to the HTTP traffic. Thus ensuring that there is always a Front End to service the request. Adding to that a distribution method known as least connection ensures that the requests are evenly spread between the Front End servers at all times. Least connection means that the next connection request is sent to the Front End with the fewest number of active sessions.
Figure 2: Load balancing Reverse Proxy using PAT and Least Connection
Hardware Load Balancer
The role of a Hardware Load Balancer in a Lync topology is partly to do with spreading the load evenly among a pool of servers…
Figure 3: Load balanced HTTP
…and partly to do with persistence. Lync relies on this persistence in order to ensure the client that initiated the session stays connected to the same server throughout the life of the session. Lync 2010 relied on cookie based persistence at Layer 7 to keep sessions connected. Microsoft went through great pains to reduce or remove the reliance on cookie based persistence. In Lync 2013 you have the option to use Source IP persistence at Layer 4 or Cookies at Layer 7. Microsoft recommend using Source IP persistence by utilizing TCP affinity to keep the session connected to the same destination server. Kemp goes one step further and recommends using Super HTTP persistence. Super HTTP functions by creating a unique fingerprint of the client browser. The fingerprint is based on the combined values of the User-Agent field and, if present, the Authorization header. It then uses that fingerprint to ensure that the session stays connected to the same server.
Figure 4: Super HTTP Persistence
My topology in brief
I have a 2012 R2 server Hyper-V host running a Domain Controller with DHCP, DNS and CA, Exchange 2013, SQL 2012 R2, a 3 server Lync Enterprise Pool, two Standard Edition Servers pool paired, an Office Web Apps server. Persistent Chat is deployed on one of the Standard Edition Front Ends. The SQL server hosts the Enterprise Pool CMS, Monitoring, Archiving and PChat Databases as well as SQL reporting services with the Lync Monitoring Reports.
- 2 x Virtual Processors
- 2 GB RAM
- 32 GB Virtual Hard Drive
- 2 x Virtual NICs
At the time of writing the VLM server is running version Vers:7.1-24b(Hyper-V).
- Browse and locate your virtual machine files.
- Then click next.
- Select the virtual machine from the list.
- Then click next.
- Select “Copy the virtual machine (create a new unique ID)”
- Then click next
- In Hyper-V Manager, right click on LoadMaster VLM and click Settings.
- Expand Network Adapter
- Click on Advanced Features
- Under MAC Address – Choose Static and tick Enable MAC Address Spoofing
- Repeat for the second Network Adapter
- Click OK
Configuration
General Configuration
First there are some general recommendations for a LoadMaster configured for Lync which are listed in section 3 in the link above. However I have added the details below.
To configure the Network Options follow the steps below:
- In the main menu of the LoadMaster Web UI (WUI), select System Configuration > Miscellaneous Options > Network Options.
- Remove the check from the Enable Server NAT check box.
- Select the Subnet Originating Requests check box.

- To configure dropping connections, click System Configuration.
- Click Miscellaneous Options.
- Click L7 Configuration.
- Select the Drop Connections on RS failure checkbox.
- To configure the Connection Timeout, click System Configuration.
- Click Miscellaneous Options.
- Click L7 Configuration.
- Enter 86400 (1 day) in the L7 Connection Drain Time (secs) field and click Set Time.

Import Templates
Certificates
You should hopefully have a public certificate to use for your reverse proxy. I usually recommend combining the Edge and Reverse Proxy certificate SANs onto a single public certificate. This has a couple of advantages. Firstly, you only have one certificate to request, order, purchase and renew. And the most important one is that you can use the Edge Server certificate request wizard to generate the request for your public certificate provider. All you need to do in the wizard is add the Subject Alternate Names you need for your Lync web services. Such as meet.domain.com, lyncdiscover, lyncweb etc.
Once the certificate has been issued from your provider you should get a certificate file and an intermediate file. You must save the certificate in a format which includes the public key. Otherwise the import will fail.
To import the certificate Expand Certificates and click on SSL Certificates.
When the certificate has been imported you should repeat to import the intermediate. Once done you should have a similar screen to the below.
UPDATE: If your Virtual Services (VIPs) are in the same range as the IP address you assigned to the Network side NIC (ETH0) there is nothing else to configure in networking.
If, however, you set your Hyper-V Nirtual NIC for Trunk mode and need Multiple VLANs on a single Kemp interface you can add VLANs and IP ranges to the Virtual Interfaces (as you will see below).
- Expand System Configuration
- Click on ETH1 (network side)
- Click VLAN Configuration
- Enter the VLAN ID and click Add New VLAN
- Click on ETH1, below is a dropdown of your virtual interfaces.
- Choose the interface you want to configure.
- On the right, enter the IP Address range and click Set Address.
- Expand Virtual Services and click Add New
- In the Use Template drop down list choose Lync Reverse Proxy 2013
- Enter the IP address that your public IP will NAT to
- Change the port to 4443
- Click Add this virtual service
- Enter the IP address of your internal web services VIP address
- Choose the template
- Click Add this virtual service
- Enter the IP address that your public IP will NAT to
- Choose the template
- Change the port to 443
- Click Add this virtual service
- Expand SSL Properties, choose your certificate in the list of available certificates
- Click the right arrow to add to the assigned certificates box
- Click Set Certificates
- Enter the IP of your first Front End
- change the port to 4443
- Click Add this real server
- Repeat for the rest of your Front End servers
Configure the Certificate
- Expand SSL Properties, choose your certificate in the list of available certificates
- Click the right arrow to add to the assigned certificates box
- Click Set Certificates
- Enter the IP of your first Front End
- Leave the port set to 443
- Click Add this real server
- Repeat for the rest of your Office Web Apps servers
You should have the following as a minimum:
- Lync Internal WebSvc HTTP
- Lync Internal Front-End DCOM
- Lync Internal WebSvc HTTPS HLB Only
- Lync Internal Front-End SIP
- Lync Reverse Proxy HTTPS
- Office Web App Servers
UPDATE: Internal Virtual Services
Since this is a two-armed configuration we have to cater for the internal Virtual Services. For instance the Internal Web Services HTTPS Hardware Load Balancer. Since the internal Virtual Services are on the internal LAN range and the internal NIC (ETH1) doesn’t have a default gateway we need to configure a Service Based Default Gateway.
These are services such as:
- Lync Internal WebSvc HTTP
- Lync Internal Front-End DCOM
- Lync Internal WebSvc HTTPS HLB Only
- Lync Internal Front-End SIP
In the Properties page
- Expand Advanced Properties
- Add the Default Gateway IP for the internal subnet
- Click Set Default Gateway
- Click Back to go back to your list of virtual services
- Repeat for the rest of your Internal Virtual Services
- Enter the IP of your first Front End
- Leave the port as the default
- Click Add this real server
- Repeat for the rest of your Front End servers
- Dial In Conferencing Settings URL – https://dialin.domain.com
- External Persistent Chat Room Management URL – https://lyncweb.domain.com/PersistentChat/RM/
- Internal Persistent Chat Room Management URL – https://lyncwebint.domain.com/PersistentChat/RM/
- External Web Scheduler URL – https://lyncweb.domain.com/Scheduler
- Internal Web Scheduler URL – https://lyncwebint.domain.com/Scheduler
- Office Web Apps discovery URL test – https://wac.domain.com/hosting/discovery/
- External AutoDiscover with WebTicketService –https://lyncweb.domain.com/WebTicket/WebTicketService.svc
- Meeting Space URL – https://meet.domain.com
- Internal AutoDiscover with WebTicketService –https://lyncwebint.domain.com/WebTicket/WebTicketService.svc
- Choose Lync/OCS Server
- Under Microsoft Lync Tests choose Lync AutoDiscover Web Service Remote Connectivity Test and click Next.
- Enter the Verification Characters and click Verify
- Click Perform Test