Question

FME Server 2022 Load Balancer Mode with Docker


Badge

Hi,

 

I am trying to set up server 2022 with the load balancer. I have 2 core servers working with shared storage and database. I have a load balancer configured to handle ports 443 and 7070 for engine registration. In our architecture we will not have engines running on the core servers, we will deploy engines on dedicated machines and they will use load balancer URL to connect to the core. When I try to start the engine with FMESERVERHOSTNAME = loadblancer I get the following error.

 

       FME 2022.0.1.1 (20220617 - Build 22350 - linux-x64)

             FME Engine (node locked-crc)

            Machine host name is: 77286cef6ed1

        Operating System: Ubuntu 20.04.4 LTS (Focal Fossa)

         Copyright (c) 1994 - 2022, Safe Software Inc.

                Safe Software Inc.

 

INFORM: FME_SHARED_RESOURCE_DIR is unset

INFORM: FME_SHARED_RESOURCE_DIR has been changed and is now '/data/fmeserverdata/resources/engine'

FME_INSTANCE_NAME 77286cef6ed1

Registering with FME Server on host 'fme-dev.deo.aws.in.here.com'...

tcmalloc: large alloc 1213489152 bytes == 0x558917e4e000 @ 

Could not read from socket; connection may have been lost

 

Could not read from socket; connection may have been lost

Program Terminating

 

Translation FAILED.

 

If I do telnet on port 7070 from an engine docker container to load balancer hostname it works fine. So there is no network issue from a docker container to load balancer port 7070

 

fmeserver@77286cef6ed1:/fmeengine$ telnet fme-dev.deo.aws.in.here.com 7070

Trying 10.107.22.105...

Connected to internal-fme-server-2022-1417338625.us-east-1.elb.amazonaws.com.

Escape character is '^]'.


2 replies

Badge +2

@namanpatel​ 

 

We chatted about this on a call and I believe it's working correctly now.

 

A few things we did to get this work:

  • Made sure to use NLB instead of ALB, and use TCP and not HTTP
  • For the engine compose file, make sure:
    • FMESERVERHOSTNAME is set to the dns/ip of the NLB
    • NODENAME is set to a resolvable dns/ip (the core can resolve)
    • EXTERNALHOSTNAME should be the external address to access FME Server (this might be ALB)

 

Note that the engines must be on a different machine to the core, so there's no issues with network routing. If the core and engine are on the same machine, the NLB will not be able to route traffic back to itself and will fail to connect an engine.

Badge

Also, one more observation, if the FMESERVERHOSTNAME variable is set on the core, it has to be IP address of the host. Using LB DNS was causing 2 issue

 

-> When setting up a new database and containers, the core was not starting. UI was showing 403 error on browser console, and on docker logs following error waiting for service to be initialized

imageimage2 -> This was also causing issues with file share folder/files creation, it was not creating dashboards & sample workspaces when new docker containers were being started from scratch.

 

Reply