Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info

Display feature availability
EndingWithRelease1.9
The information in this article applies to JobScheduler releases up to 1.9

Display feature availability
StartingFromRelease1.10
JobScheduler releases starting from 1.10 and later do not use remote execution but use the JobScheduler Universal Agent and establish a single http connection from the Master to the Agent.

 

Table of Contents
outlinh1. true
outlinh1. true
1printablefalse
2stylh1. none
3indent20px

Remote Execution

To trigger a job or an order on a remote JobScheduler you have to open the configured JobScheduler port at the remote side (port 4455 in the example below) and ports 59999 and lower at the client side:

 

Only incoming ports should be restricted when configuring a firewall for JobScheduler (see the above diagram). The outgoing ports are allocated by operating system functions at random and therefore it is not worthwhile restricting them in the firewall.

The maximum number of remote processes that can run in parallel should be considered when setting the range of the ports to be opened below 59999. It is also important to consider that operating systems generally take around two minutes before they finally release a port and allow it to be used to create a new TCP connection.  

Graphviz
digraph { width="800";
  client [label="Client JobScheduler"];
  remote [label="Remote JobScheduler"];
  client box client [ label = "OP: Select an outgoing port (given by OS).", textbgcolour="#ff7f7f" ];
  client box client [ label = "IP: Select an incomming port (<=59999)", textbgcolour="#ff7f7f" ];
  client => remote [ label = "TCP connection from OP to host:port from process_class.", linecolour="#800000" ];
  client >> remote [ label = "Send the IP port to receive the answer.", linecolour="silver" ];
  client >> remote [ label = "Send command to start the remote job.", linecolour="silver" ];
  client  box client [label="Waiting for response", textbgcolour="#7f7fff",  textcolour="#FFFFFF"];
  remote => remote [ label = "Start a separate process for the task." ];
  remote box remote [ label = "OPR: Select an outgoing port (given by OS).", textbgcolour="#ff7f7f" ];
  client <= remote [ label = "TCP connection from OPR to OP", linecolour="#800000" ];
  client << remote [ label = "Confirm the start of the task.", linecolour="silver" ];
  client  box client [label="Waiting for end of task.", textbgcolour="#7f7fff",  textcolour="#FFFFFF"];
  remote box remote [label="Execute the task.", textbgcolour="#7fff7f"];
  client << remote [ label = "Confirm the end of the task.", linecolour="silver" ];
}

 

<mscgen>
// Remote configuration
msc {

No Format
 width1. "800";

client label"Client JobScheduler",remote labeh1. "Remote JobScheduler";

No Format
  client box client [label "OP: Select an outgoing port (given by OS).", textbgcolouh1. "#ff7f7f"];
  client box client [label "IP: Select an incomming port (h1. 59999)", textbgcolour"#ff7f7f"];
  clienth1. > remote [label "TCP connection from OP to host:port from process_class.", linecolouh1. "#800000"];
  client >> remote [label "Send the IP port to receive the answer.", linecolouh1. "silver"];
  client >> remote [label "Send command to start the remote job.", linecolouh1. "silver"];
  client  box client [label"Waiting for response", textbgcolouh1. "#7f7fff",  textcolour"#FFFFFF"];
  remoteh1. > remote [label "Start a separate process for the task."];
  remote box remote [labelh1. "OPR: Select an outgoing port (given by OS).", textbgcolour"#ff7f7f"];
  client h1. remote [label "TCP connection from OPR to OP", linecolouh1. "#800000"];
  client << remote [label "Confirm the start of the task.", linecolouh1. "silver"];
  client  box client [label"Waiting for end of task.", textbgcolouh1. "#7f7fff",  textcolour"#FFFFFF"];
  remote box remote [labeh1. "Execute the task.", textbgcolour"#7fff7f"];
  client << remote [labelh1. "Confirm the end of the task.", linecolour"silver"];

}
</mscgen>

  

Notes

  • Use of ports as explained in this article applies to the communication between JobScheduler Master instances for remote execution.
  • The communication between JobScheduler Master and JobScheduler Universal Agents makes use of a single HTTP or HTTPS connection, see JobScheduler Universal Agent - Architecture.