Network Administrator Guide
LigandScout,
iscreen
or
idbgen
allows to execute tasks through a network. Multiple nodes can be used to
execute multiple tasks in parallel to take full advantage of multi-core and/or multi-processor systems.
On the client side a screening or conformation generation task can be started directly in LigandScout
or through the command line using idbgen. The task is divided into multiple small tasks and distributed
to connected worker nodes (iworkers) in the network. The iworker executes the tasks and sends the results
back to the client.
Discovery of iworkers and Connection Establishment
To build connections to iworkers, first, they need to be found in the network. Therefore,
the iworkers connection data which consists of an address/host-name and the TCP port
(defaults to 30000, but can be changed if needed), where they listen for incoming connection requests,
is distributed through the network. The data is sent to the multicast group 255.1.1.1 using UDP
(the UDP outgoing port number is the same as the TCP incoming port number which is 30000 by default).
Note that multicasting/broadcasting has to be enabled in the firewall. Clients with multicast discovery
enabled are registered to this multicast group (255.1.1.1) and listen on the UDP port 40000 for such data.
When data is received the appropriate host:port pair is added to the iworkers list of this client.
Alternatively, the connection data (host:port) can be added to the iworkers list of the client manually.
The client tries to connect to the iworkers in the list periodically until a connection is successfully
established (see
Figure A.6, “Discovery of iworkers in a network”
). Alternatively, a list of iworkers can be specified
statically in the
LigandScout preferences
or with command-line options of
iscreen
or
idbgen
using the '- -host-list' option.
iworkers are permanently running. Only if clients possess tasks to be executed,
a connection will be established to the iworkers. A connection stays open until the client finishes
sending tasks or the iworker is terminated. Note that the TCP port needs to be opened on the iworker-side
(check the firewall) so that the client can build the connection to the clients. Furthermore, to allow
multicast discovery broadcasting needs to be enabled in the network.
After the connection establishment between the client and iworkers, the client sends
tasks to the iworkers. To prevent idle time, iworkers store incoming tasks in a queue which can be accessed
very fast if an execution seat is available. The iworker executes the tasks in parallel. The amount of
parallel tasks can be specified by the user and defaults to the number of CPU’s. The queue size is limited
depending on the number of tasks that can be executed at the same time. As long as the task queue is not full,
the iworker request tasks from clients it is connected to. The queue is processed by the 'First in First Out'
principle. The first task to be added to the queue will be the first task to be executed, then processing
sequentially in the same order. The iworker sends the results back to the client once these are available.
The client gathers the part results and provides the overall result.
Failure Tolerance/Error Treatment
If a client loses connection to an iworker it has sent tasks for execution,
the client removes the iworker from its iworkers list and resubmits these tasks to other
iworkers it is connected to. Analogue, if an iworker loses connection to a client it cancels
all tasks in execution which have been submitted by this particular client, and all tasks in
the queue submitted by this client are also dropped.
Summary of Network Information
To configure network traffic, the following ports will be used for communication.
If firewalls are used on the specific systems, for the systems running the iworker process, the
'TCP incoming port' (default: 30000) must be open. On the client side (i.e. the computer running the iworker,
idbgen or LigandScout process, connections to UDP port 40000 must be allowed.
iworker ports for firewall configuration:
Client (i.e. idbgen, iscreen or LigandScout) port for firewall configuration: