Note:
We do not recommend any specific architecture but below is a description of what some of our customers are doing in production environments to achieve a High Availability Architecture. We describe this by level - moving down from the Web Tier to the output.

  1. Web Server 

    Using a Reverse Proxy Server or Load Balancing Server lets you distribute jobs to more than one FME Server ensuring high-availability. FME Server is not really involved at this level but you may need to ask us about a configuration to make sure that the link FME Server creates for data downloads matches the outside host name correctly.

  2. FME Services and Core

    Install the FME Server services and FME Server Core on more than one physical machine (for example ServerCoreMachineA and ServerCoreMachineB).  Configure the FME Server core on both machines to use the same production database (e.g. Oracle) to ensure robust job mangement recoverability (See Appendix B in the Administrator's Guide). You must make sure this database itself also runs in with high availability

  3. FME Engines

    You can run more than one FME Engine on a single host and you can install FME Engines on more that one separate host. FME Engines are the main processing component of FME Server and can each run one workspace at one time. By running multiple FME Engines on multiple machines we can scale the FME Server solution to meet expanding demand. In the scenario we have been describing you may want to install FME Engines on FMEEngineMachine1 which connect to ServerCoreMachineA and FME Engines on FMEEngineMachine2 which connect to ServerCoreMachineA. Both FME Engines can be configured for failover so that they can failover to the other core machine if one goes down. (See Article #000001464 and also Chapter 8 - Configuring FME Server for Fault Tolerance of the (FME Server Administrator's Guide). In this scenario as long as the FME Server Core’s are both configured to pull jobs from the same database either FME Server core can distribute jobs in the queue to available FME Engines.  A couple of things to keep in mind: a single FME Engine only processes one workspace at one time. One FME Engine can only use one CPU core at one time. This means that the number of FME engines on a machine should not exceed the number of CPU cores. Virtual Machines are fully supported, but keep in mind the number of physical CPU's available to the Virtual Machine and the number of FME Engines. When processing large volumes of data it is important to be aware of the amount of memory a single FME Engine can take advantage of. A standard 32 bit FME Engine can utilize up to 2Gb of RAM on Windows 32 bit machines, or 3Gb if we use the operating system’s 3 Gb switch (please see Using the 3GB Switch with FME (Article #000001547). On 64 bit windows machines a standard 32 bit FME Engine can utilize up to 4 GB of RAM.

    Another performance consideration is disk speed.  If your workflows involve writing large files (particularly rasters) consider configuring FME Server to write to a high speed disk. (See Configuring FME Engines in Chapter 8 of the FME Server Administrator's Guide.


Resources

FME Server Architecture Whitepaper
FME Server Administrator's Guide