By Paul M. Diop
In the last couple of weeks several of our enterprise customers have asked me how to ensure 100% availability of the license server for their critical concurrently licensed applications. The requirement has 4 main components:
- Low implementation cost
- Consistency across vendors
- Reliability
- Must be automatic
For instance, the license server is hosted in Europe while engineers in China are using licenses from it. If the license server were to fail, then the system should recover without the need for someone in Europe to wake up and fix the problem manually. For quite some time there have been 3 options. Recently a new solution has emerged from the ‘cloud’. Let’s review the former solutions and their limitations and then expand on the cloud solution.
Option 1: The first option is to build a “Triad” (three redundant servers) architecture.
Option 2: The second option is to ask the software publisher to duplicate two or more sets of licenses with the promise that only one server would be running at any point in time. The servers would then be referenced using a list on the %LM_LICENSE_FILE% environment variable.
Option 3: The third option would be to divide the number of licenses in two and have the first set of licenses on one server and the second set on another server. If one license server fails then we still have another set running on the other machine.
Limitations of these approaches
Although the triad architecture is resilient, it requires more attention from the license administrator. Under heavy network traffic, a triad can become unstable because of the heartbeat message not reaching the destination on time. In addition, triad types of licenses are often more expensive than regular licenses. Moreover, you need to buy 3 servers for this purpose. The triad is a robust solution but it does not meet the “low cost” requirement asked for by Flexera Software’s customers. It has higher maintenance and hardware costs.
The duplicated license file set solution can be used by only a few big companies that can ask software publishers to deliver these licenses for different machines. The drawback here is that only a few publishers will accept this licensing request. This solution also places a burden on the publisher back office as they now need to deliver licenses twice. It can lead to an expensive adjustment to their back office systems which will then be reflected in future license costs. Moreover, no matter how trustworthy a company is, accidents can happen and licenses could be used from the two systems at the same time. We can clearly see that this solution is costly, and will not be available from all vendors which leads to inconsistent license server implementation across vendors.
Dividing the number of licenses is the third option. However if a license server fails then you lose part of your available licenses. Moreover, some applications will need to be re-programmed as they will not be able to automatically grab licenses from the second server if the first server fails while some licenses were already checked out. This is therefore not reliable and rather application dependant which renders the solution inconsistent.
For all these reasons we needed to look for new ways to provide high availability for license servers. With the advent of cloud computing and virtualization it seemed to be a good place to start our investigation.
As noted above, we need a solution that will be easy to maintain, is not expensive, does not cause overload to the network infrastructure and is automatic.
Concurrent licensing requirements
Before we delve into the solution, let’s recall what the requirements of a concurrent (e.g. FlexNet) licensing system are. A concurrent licensing system is composed of the concurrently licensed (e.g. FlexEnabled) client applications that are requesting the license, and the license server. A FlexEnabled application is an application that has been linked with the FlexNet Publisher libraries. When the application starts or needs to run a licensed functionality it requests a license from a license server.
A license server is a set of processes (license server manager, vendor daemon) and files (license, option report and debug log files) that are there to serve and monitor license features for FlexEnabled applications. The FlexEnabled application and the license server communicate over TCP/IP. Once the application is granted a license, it is its responsibility to query the license server to make sure it is up and running. These messages are what we call a “heartbeat”.
If for any reason the communication is lost (network down or license server down) the application will try, by default, 5 times every 2 minutes to reconnect. If after that time, the server is still not available, the application will terminate. The length of time and the way the application terminates is at the discretion of the application vendor. This information needs to be provided by the application vendor so that their customers know what the grace period is before licenses are lost. To be conservative we can assume that we have at least 8 to 10 minutes before the application loses its licenses.
High availability solutions
High availability in this case means providing the ability for FlexEnabled applications to always have access to a license server. We can describe this situation by saying that the socket (PROTOCOL:PORT@HOST) connection that binds the license server to its applications needs to be recreated when lost in order to prevent applications/users from losing licenses. With that, we know that a good solution would involve providing an abstraction layer so that the license server that is bound by the socket could be anywhere on the network or recreated at will.
If we want to provide high availability we need to have the (PROTOCOL:PORT@HOST) connection abstracted away so that a FlexEnabled application that requests a feature from a machine is always likely to find a license server at the receiving end. Virtualization technology allows us to create this abstraction layer and allows us to make the cloud answer the license request from a FlexEnabled application. The cloud is conceptually represented here by using Microsoft Hyper-V or VMware vSphere virtualization technologies.
We know that Hyper-V, for example, can monitor the health of virtual machines that it controls, so the solution proposed is to use the Hyper-V’s own high availability functionality. The license server is created as a virtual machine (virtual image) that can be transferred from one physical host to another if the current hosting machine fails. This image is then always active no matter which physical host is serving it. Hyper-V is able to detect failure and transfer images as necessary. Please see a representation of this implementation in the diagram below:

By default, if a FlexEnabled application loses the connection with a license server, there must be a gap of around 8-10 minutes (as described earlier) before it loses the license and terminates. The above Hyper-V based solution has been implemented by King Abdullah University of Science to provide zero downtime for their critical license servers.
A long-time customer of Flexera Software, Siemens Energy in Frankfurt, has implemented a cloud based license server using a VMware vSphere high availability solution. The license servers have been implemented as virtual images within vSphere. The vSphere HA engine is responsible for making sure the server is always running no matter where the image was started physically. If the machine where the image is hosted becomes unavailable, the vSphere engine will start another instance of this image within seconds in another location. This is completely transparent to the application user as the socket will be broken for less than a heartbeat. See below a diagram representing how high availability has been achieved using VMware vSphere:
We can say that using either technique we have fulfilled the requirements for our customers. The price of implementation and maintenance over time is lower than that of a triad. The solution is consistent across vendors as we abstract the whole machine. The solution is reliable as it is based on strong and proven virtualization technology from the big players in the industry. If you need a high availability solution for your critical license servers, consider one of these virtualization/cloud based approaches; based on our experience, these are the best solutions for reaching 99.99% availability of your license servers.
[For more information on tracking and managing concurrently licensed applications please visit our website.]