Page History
...
The Agent Cluster brings horizontal scalability and fail-over capabilities for Agents without any a single point of failure.
Use of anAgent Clusteris subject to the JS7 - License.
We find separate tiers in the architecture of Agent Clusters, see JS7 - System Cluster Architecture:
- Controller (Cluster) → Director Agent (Cluster)
- Director Agent (Cluster) → Subagent Cluster
...
- Fail-over is an automated operation that occurs when a Subagent or Director Agent instance is aborted forcibly terminated or killedcrashed. Fail-over is applied in case of abnormal termination.
- Switch-over is a manual operation performed by users disabling/enabling Subagents or switching the active role of Director Agent instances.
...
The Agent Cluster fits into the JS7 architecture like this, see JS7 - System Cluster Architecture:
Operational Layer
The architecture applies to an Agent Cluster including the clustering of Director Agents and the clustering of Subagents for high-availability and scalability purposes.
...
The Director Agent can be operated as a single instance and from a an active-passive Director Agent Cluster of two Director Agent instances.
...
If the Director Agent is operated as a cluster then the active instance synchronizes its journal with the standby instance. If the journals of both active and standby Director Agent instances are in sync then in case of fail-over (automatically) or switch-over (by user intervention) the Director Agent instances will switch the active rolesrole.
During fail-over and switch-over of Director Agent instances any jobs running on related Subagents are continued.
...
- Subagents execute jobs on behalf of the Director Agent.
- They report back log output and the execution results of jobs to the Director Agent.
- If a Subagent fails then the Director Agent can hand-over the job execution request to the next Subagent.
- A Subagent kills running terminates running jobs if the connection from the Director Agent is lost or if it is instructed by the Director Agent to suspend/killforce or to cancel/killforce an order.
- For details see JS7 - FAQ - How does JobScheduler terminate Jobs
- This behavior is intended to prevent double job execution by more than one Subagent.
- If the connection from the Director Agent can be re-established within a given timeout then the Subagent will continue to execute jobs.
...
- A Subagent Cluster is specified by a Selection and Scheduling Mode:
- The Subagent cluster can include a single Subagent, a number of Subagents or all Subagents.
- The Scheduling Mode is one of fixed-priority or , round-robin or metrics-based.
- Any number of Subagent Clusters can be configured reusing the same Subagents.
...
Graphviz | ||
---|---|---|
| ||
digraph { compound=true; rankdir=LR; JOC [shape="rectangle",label="JOC Cockpit",style="filled",fillcolor="lightskyblue",fontname="Arial",fontsize="10pt"] Controller [shape="rectangle",label="Controller\nStandalone / Cluster",style="filled",fillcolor="lightskyblue",fontname="Arial",fontsize="10pt"] Workflow [shape="ellipse",label="Workflow",style="filled",fillcolor="darkorange1",fontname="Arial",fontsize="10pt"]; Job1 [shape="ellipse",label="Job 1",style="filled",fillcolor="orange1",fontname="Arial",fontsize="10pt"]; Job2 [shape="ellipse",label="Job 2",style="filled",fillcolor="orange1",fontname="Arial",fontsize="10pt"]; Job3 [shape="ellipse",label="Job 3",style="filled",fillcolor="orange1",fontname="Arial",fontsize="10pt"]; Subagent1_1 Job4 [shape="rectangleellipse",label="SubagentJob 14",style="filled",fillcolor="darkolivegreen2orange1",fontname="Arial",fontsize="10pt"]; Subagent1_21 [shape="rectangle",label="Subagent 1",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"]; Subagent1_2 [shape="rectangle",label="Subagent 2",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"]; Subagent2_1 [shape="rectangle",label="Subagent 1",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"]; Subagent2_2 [shape="rectangle",label="Subagent 2",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"]; Subagent3_1 [shape="rectangle",label="Subagent 1",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"]; Subagent3_2 [shape="rectangle",label="Subagent 2",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"]; Subagent3Subagent4_31 [shape="rectangle",label="Subagent 31",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"]; Subagent3Subagent4_42 [shape="rectangle",label="Subagent 42",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"]; Subagent4_3 [shape="rectangle",label="Subagent 3",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"]; Subagent4_4 [shape="rectangle",label="Subagent 4",style="filled",fillcolor="darkolivegreen2",fontname="Arial",fontsize="10pt"]; { rank = same; JOC -> Controller -> Workflow } Workflow -> Job1; Workflow -> Job2; Workflow -> Job1> Job3; Workflow -> Job4; Job1 -> Subagent1_1 [lhead=cluster_subagent_passive]; WorkflowJob2 -> Job2Subagent2_1 [lhead=cluster_subagent_active]; WorkflowJob3 -> Job3;Subagent3_1 [lhead=cluster_subagent_metrics]; Job4 Job1 -> Subagent1Subagent4_1 [lhead=cluster_subagent_passiveselection]; subgraph cluster_subagent_passive { Job2 -> Subagent2_1 [lhead=cluster_subagent_active]label="Subagent Cluster 1"; Job3 Subagent1_1 -> Subagent3Subagent1_1 [lhead=cluster_subagent_selection]; 2 [label=" fixed-priority ",fontname="Arial",fontsize="10pt"]; } subgraph cluster_subagent_passiveactive { label="Subagent Cluster 12"; Subagent1Subagent2_1 -> Subagent1Subagent2_2 [label=" fixed-priority round-robin ",fontname="Arial",fontsize="10pt"]; Subagent2_2 -> Subagent2_1; } subgraph cluster_subagent_activemetrics { label="Subagent Cluster 23"; Subagent2Subagent3_12 -> Subagent2Subagent3_21 [label=" round-robin " metrics-based ",fontname="Arial",fontsize="10pt"]; Subagent2_2 Subagent3_1 -> Subagent2Subagent3_12; } subgraph cluster_subagent_selection { label="Subagent Cluster 3" Cluster 4"; Subagent4_1 -> Subagent4_2; Subagent4_2 -> Subagent4_3; Subagent3Subagent4_13 -> Subagent3Subagent4_24; Subagent3Subagent4_24 -> Subagent3Subagent4_31 [label=" round-robin ",fontname="Arial",fontsize="10pt"]; Subagent3_3 -> Subagent3_4; Subagent3_4 -> Subagent3_1="Arial",fontsize="10pt"]; } } |
Subagent Cluster
Jobs in workflows are assigned a Subagent Cluster that includes a Selection and Scheduling Mode of Subagents:
- Subagent Clusters present a logical view of the way a given number of Subagents co-operate for job execution.
- Any number of Subagent Clusters can be configured using the same Subagents.
- The Selection makes use of one or more Subagents.
- Subagents are used for job execution according to their ordering in the Selection.
- A Subagent can be a member in one or more Subagent Clusters.
- The configuration of Subagent Clusters is performed using the JOC Cockpit and is forwarded to the Controller and to the active Director Agent.
- The Scheduling Mode is one of:
- fixed-priority: execute jobs with the first Subagent and switch to the next Subagent only if the first Subagent becomes unavailable (active-passive clustering).
- fixed-priority: execute jobs with the first Subagent and switch to the next Subagent only if the first Subagent becomes unavailable (active-passive clustering).
- For details see JS7 - Agent Cluster - Active-Passive Subagent Cluster.
- round-robin: execute each next job on the next Subagent (active-active clustering).
- For details see JS7 - Agent Cluster - Active-Active Subagent Cluster.
- metrics-based: execute each next job on the Subagent that best matches metrics such as number of parallel tasks, CPU and memory consumption.
- For dtails see JS7 - Agent Cluster - Metrics-based Subagent Cluster
- .
Network Connections
Network connections use the HTTP protocol and can be secured using TLS/SSL certificates.
...
- The Director Agent will execute a number of JS7 - Workflow Instructions, for example Retry, Try/Catch, Fork, which are in the scope of the Director Agent.
- The Director Agent will request execution of jobs as available from the JS7 - Job Instruction with a Subagent. When choosing the Subagent the Director Agent considers the Selection of Subagents and Scheduling Mode of the Subagent Cluster that is assigned the job. For example, a specific Subagent will be selected for a fixed-priority Scheduling Mode.
- The Director Agent will hand back the order to the Controller if it meets an instruction that is out of the scope of a single Agent, for example in case of a JS7 - Lock Instruction.
...
Resources
- JS7 - Management of Agent Clusters
- JS7 - System Architecture
- JS7 - Controller Cluster
- JS7 - JOC Cockpit ClusterJS7 - Implementation Architecture
- Fail-over and Switch-over Scenarios
...