LOAD BALANCING/FAIL OVER

Top  Previous  Next

UnForm supports load balancing and automatic fail-over by enabling a client connection to attempt to access one of several servers.  The job can then run on an available server.

 

A list of servers can be provided in the -server option of the uf100c command line, or in a server= line in uf100c.ini.  The servers are delimited by semicolons, so the whole option should be quoted to avoid misinterpretation by shells.

 

 -server "192.168.1.10;192.168.1.60"

 

When multiple servers are specified, the uf100c.ini minavail=n setting is used.  The first server with either 0 jobs in use, or at least n job slots available, is chosen.  If n is 0, and all servers have at least one job slot in use, the one with the least proportion of jobs in use vs. licensed is chosen.

 

Archiving

If archiving is used, one server should be designated as the archiving server.  All archive updates are then sent to that server, or queued if it is not available, so that only one set of libraries is created.  The archive server is defined in the [archive] section, server=server:port setting.  This value should not be set on the archive server, but should be set on all the other servers used to run jobs.

 

File Synchronization

When there are several servers that might produce jobs, managing rule files and their associated dependencies across the different servers can be tedious.  To help with this, you can configure automatic file synchronization across the machines.

 

There should be a primary server where rule files and other files are maintained.  On this server, maintain the [syncfiles] of uf100d.ini.  This can be done manually or in the Server Manager browser interface.  This section contains a list of file names, or file wildcards, one per line.  Note that wildcards can only be in the file portion of the name, not a directory portion, which must be specified explicitly.

 

On the child systems, in their uf100d.ini files, set syncfrom=server:port in the [defaults] section.  Optionally update the syncinterval=n value as well.  Every n minutes, the client systems will ask the primary server for a list of files and their content hashes.  These are compared with local copies of those files, and any changed files are copied from the primary server.  Pathnames of the files will be consistent, and will be auto-created on the child machines.  Note that this means if you rely on relative names, then all machines should have UnForm installed in the same path.

 

Unique Server Settings

If different servers use different authkey or proxy options, you can specify them in the -server option.  Each server can have up to five colon-delimited segments:

 

 servernameOrIP:port:authkey:proxynameOrIP:proxyport

 

Any segment value overrides what might be in uf100c.ini or other specific command line options.

 

Library Access

While archive command results are automatically on a configured archive server (see Archiving, above), if a job requires access to a library during its processing, that job must run on the server where the libraries are.  For example, if a library object is required, or the getimage() function is used, the job must execute on the server where the libraries reside.  To support this in a load balance environment, you can add the following code to rule sets that require it:

 

prejob{

inifile=new("inifile","uf100d.ini")

arcserver$=inifile'getitem$("archive","server")

drop object infile

if arcserver$>"" then

 runjobon(arcserver$)

 skip=1

end if

}

 

See the runjobon function in the Internal Functions table for more details.