Introduction
Agents can be clustered for high availability and scalability. Motivations for clustering include:
- High availability: Should a server node in the scheduling environment fail then jobs are executed with the remaining server nodes.
- Performance: A single Agent can execute thousands of jobs in parallel tasks, however, for a number of use cases it might be preferable to distribute server load. This applies particularly to applications that require horizontal scaling across a number of server nodes instead of vertical scaling on a single server node.
Agent Clustering is subject to the agreements of the JS7 - License and is available to commercial license holders. Use of Standalone Agents is available to Open Source License holders and to commercial license holders.
Architecture
The architecture is explained with JS7 - Agent Cluster.
The architecture includes to consider two layers of clustering:
- The Operational Layer covers installation of Cluster Agents that is no different from installation of Standalone Agents. In addition it covers registration of Agents as members of an Agent cluster.
- The Functional Layer is situated on top of the Operational Layer and defines a number of logical Agent clusters.
Operational Layer
The architecture includes the clustering Agents in the role of Director Agents for restart capabilities and the clustering Agents acting as Subagents for high availability and scalability.
- The components involved in an Agent Cluster are represented as one Agent to the Controller.
- A Controller can manage any number of Agents either from different Agent Clusters or as a number of Standalone Agents.
Functional Layer
The architecture allows to define any number of Subagent Clusters that include a Selection and Scheduling Mode of Subagents:
- Any number of Subagents can be selected to be part of a Subagent Cluster.
- The selection includes to specify the Scheduling Mode being one of fixed-priority or round-robin
- fixed-priority: execute jobs with the first Subagent and switch to the next Subagent only if the first Subagent becomes unavailable (active-passive cluster).
- round-robin: execute each next job on the next Subagent (active-active cluster).
Set up Agent Cluster
The JS7 - Agent Installation On Premises and JS7 - Agent Installation for Docker Containers are the same for Cluster Agents and for Standalone Agents.
The
icon in the main menu offers to select the Manage Controllers/Agents view:
This brings forward the following view:
- The view is grouped in Controllers (indicated by testsuite and standalone).
- For each Controller separate lists of Standalone Agents and Cluster Agents are displayed.
For Cluster Agents the following excerpt from the above list is used:
- In a first position a Director Agent is available. Optionally a second Director Agent can be available.
- Below the Director Agent the list of Subagents is displayed.
Add Agent Cluster
The Agent Cluster is situated in the operational layer and includes specification of Director Agents and Subagents.
To add an Agent Cluster users can start from the Controller's action menu to which the Agent Cluster should be added:
This brings forward the following popup window:
Explanation:
- The first group of input fields specifies the Agent Cluster:
- Agent ID: A unique identifier of the Agent Cluster. Uniqueness is required for all Standalone Agents and Agent Clusters assigned a Controller. This identifier cannot be changed later on.
- Agent Cluster Name: The name of the Agent Cluster as displayed in the JOC Cockpit GUI. The name can be changed at any point in time.
- Title: An individual description that later on can be searched for.
- Alias Name: The same Agent Cluster can appear with a number of alias names. This allows to map use of different Agent Clusters, for example in a production environment, to use of fewer Agent Cluster using alias names in a test environment.
- The second group of input fields specifies the Primary Directory Agent:
- Subagent ID: A unique identifier of the Subagent. Uniqueness is applied for all Director Agents and Subagents in the same Agent Cluster. This identifier cannot be changed later on.
- Title: An individual description that later on can be searched for.
- URL: The protocol HTTP or HTTPS, host name or IP address and port by which the Director Agent is accessible to the Controller.
- The third group of input fields specifies the Secondary Directory Agent should Directory Agents be clustered.
Add Subagent
With the Agent Cluster being added users can then add further Subagents from the Agent Cluster's action menu:
This brings forward the following popup window:
Explanation:
- Subagent ID: A unique identifier of the Subagent. Uniqueness is applied for all Director Agents and Subagents in the same Agent Cluster. This identifier cannot be changed later on.
- Title: An individual description that later on can be searched for.
- URL: The protocol HTTP or HTTPS, host name or IP address and port by which the Subagent is accessible to the Director Agent.
Manage Subagent Cluster
The Subagent Cluster is situated in the Functional Layer and includes specification of logical clusters that make use of Subagents.
To add a Subagent Cluster users can start from the Agent Cluster's action menu to which the Subagent Cluster should be added:
This brings forward the following view:
- The view displays the list of available Subagent Clusters.
- The indicated status signals that the Subagent Cluster has been deployed or not not deployed.
- The indicated synchronization status signals that the definition of the Subagent Cluster in the JS7 inventory and the version deployed to the Controller are in sync.
The
When the checkboxes available with each Subagent Cluster are checked then buttons for the following bulk operations become available:
- Revoke: The Subagent Cluster is revoked from the Controller, i.e. the deployment is undone. The definition of the cluster remains in place and can later on be deployed once again.
- Delete: The Subagent Cluster is deleted from the Controller and from the JS7 inventory. This operation cannot be undone.
- Deploy: The Subagent Cluster is forwarded to the Controller and can be used for assignments to jobs.
Add Subagent Cluster
To add a Subagent Cluster the Create Subagent Cluster button can be used.
This brings up the following popup window:
- In the left panel the list of Subagents is available and can be dragged & dropped to the middle panel.
- The middle panel holds a drop area to which a Subagent can be dropped.
With the first Subagent being added to the cluster the middle panel offers additional drag & drop areas:
- The next Subagent can be dropped to the area above the existing Subagent to specify its role as the first Subagent used with the fixed-priority scheduling mode.
- In this mode the first Subagent is used and only if it becomes unavailable then the next Subagent will be used.
- The next Subagent can be dropped to the area below the existing Subagent to specify its roles as the next Subagent used with the fixed-priority scheduling mode.
- In this mode the next Subagent is used only if the first Subagent becomes unavailable.
- The next Subagent can be dropped to the area right to the existing Subagent to specify use of the round-robin scheduling mode.
- In this mode each next task is executed with the next Subagent.
If the next Subagent is added below the existing Subagent then a cluster with fixed-priority scheduling mode is created:
If the next Subagent is dropped right to the existing Subagent then a cluster with round-robin scheduling mode is created:
Users can add any number of Subagents to a cluster and can combine both fixed-priority and round-robin scheduling mode within the same cluster.