FME Version
Introduction
Distributed deployments in the cloud, like FME Server (Distributed Deployment, Windows), require load balancing services to make sure the application is highly available and potentially also fault tolerant. In this article, we will describe recommended load balancing scenarios for distributed FME Server deployments.
Types of Load Balancers
There are different types of load balancers. We will discuss 2 different types that are suitable for FME Server deployments and describe their use cases.
Application load balancer
Application load balancers like Azure Application Gateway or AWS Application Load Balancer offer various Layer 7 (OSI Model) load-balancing capabilities. They can make routing decisions based on additional attributes of an HTTP request, for example, URI path or host headers. For example, you can route traffic based on the incoming URL. Additionally, application load balancers support TLS termination and can also easily be combined with web application firewalls to protect the application.
Network load balancer
Network or traditional load balancers like Azure Load Balancer and AWS Network Load Balancer operate at the transport layer (OSI layer 4 - TCP and UDP ) and route traffic based on source IP address and port, to a destination IP address and port.
Load balancing for a distributed FME Server
For FME Server, both types of load balancers can be used for various scenarios that should be supported. The most common reason for a load balancer is to achieve high availability and fault tolerance of a web application.
High availability & fault-tolerant configuration
As described in the possible architectures for a fault tolerant FME Server deployment a load balancer is required to balance the request between 2 active FME Server cores. This way the traffic is not only distributed between the 2 FME Cores, but in the case of an FME Core failure FME Server will still be available and ready to process requests with the second core. This resiliency can also be increased by having a third FME Core available. This scenario is supported by both types of load balancers and the decision to choose one over the other should be based on additional requirements of the implementation. For a deployment in Azure it is recommended to use an Azure Application Gateway if at least one of the following requirements applies:
- Web Application Firewall (WAF)
- TLS termination
- Web Socket support
This recommendation is slightly different if FME Server is deployed in AWS, because AWS Network Load Balancers do support TLS termination and Web Sockets. Therefore an AWS Application Load Balancer should be used if the following requirement applies:
Web Application Firewall (WAF)
These are just the first considerations and usually for a cloud deployment decisions will very often also be based on other factors, like applications that are already deployed in the cloud, services that are already in use and how applications need to be accessed. For example, while it is possible to make FME Server publicly available with network load balancers, application load balancers are more specifically designed for applications with public frontends and make it easier to protect your application with a firewall.
FME Engines
While the architectures for a fault tolerant FME Server deployment do not display additional network load balancers between the FME Core and the FME Engines we still recommend implementing a network load balancer to make sure the FME Engines can reconnect with both FME Cores in case of a failure. This is especially important if the FME Cores are deployed in Azure VM Scale sets or AWS Autoscaling Groups because these machines will not have a reliable hostname or IP address that the engine can use to register with a core. Registering through a load balancer ensures that an engine will also successfully register with a core if there’s one available. This will make sure FME Engines will switch over to an active FME Core in case of an FME Core failure seamlessly.
Additional Resources
Please consider posting to the FME Community Q&A if you have further questions or issues that are not addressed in this article. There are also different support channels available.
The FME Server documentation has some guidance on setting up load balancers.
You may also find it useful to browse other resources or forum questions regarding load balancers in case this addresses our concerns.
Comments
0 comments
Please sign in to leave a comment.