Cluster Management
The gns3util cluster command group makes it easy to coordinate multiple GNS3 servers and keep their configuration in sync. This page walks through the common workflows for building and maintaining a cluster.
Prerequisites
- Access to each GNS3 server you plan to add to the cluster
- Valid credentials for the servers (set via flags or environment variables)
- A configured
gns3utilbinary (seegetting-started/installation.md)
Create a Cluster
Give your cluster a name and optional description. Creation only needs to run once.
# Create a new cluster with a descriptive label
gns3util cluster create \
--name lab-cluster \
--description "Primary training cluster"
If you omit --name, the command prompts interactively. Re-run the command with the same name to update the description.
Add Cluster Nodes
Use cluster add-node for one server or cluster add-nodes for multiple servers at once. Supply the server URLs and (optionally) scheduling weights.
# Add a single server with a lower scheduling weight
gns3util cluster add-node lab-cluster \
--server https://gns3-host-a.example.com:3080 \
--weight 3 \
--user admin \
--password "$GNS3_PASSWORD"
# Add several servers in one command (comma-separated list)
gns3util cluster add-nodes lab-cluster \
--server https://gns3-host-b.example.com:3080,https://gns3-host-c.example.com:3080 \
--weight 7 \
--user admin \
--password "$GNS3_PASSWORD"
Tip: Set GNS3_USER and GNS3_PASSWORD environment variables so you do not have to pass --user and --password every time.
Control Group Capacity
Each node limits how many user groups it can host. Adjust the limit when adding nodes:
# Allow a node to host up to 5 student groups at once
gns3util cluster add-node lab-cluster \
--server https://gns3-host-a.example.com:3080 \
--max-groups 5
Manage Cluster Configuration Files
gns3util keeps a local cluster configuration file that you can edit and apply. The config workflow uses three subcommands:
# Open the configuration in your $EDITOR (create it if necessary)
gns3util cluster config edit
# Align the config file with the current database state (writes to disk)
gns3util cluster config sync
# Apply the config on disk back into the local database
gns3util cluster config apply
This round-trip lets you version-control the cluster definition while ensuring the local database matches the file.
Inspect Clusters
List all clusters or scope the listing to a single name:
# Show every cluster you can access
gns3util cluster ls
# Show detailed membership for one cluster
gns3util cluster ls lab-cluster --raw --no-color | jq '.'
--raw outputs JSON so you can pipe to jq or other tooling.
Recommended Workflow
- Create the cluster with
cluster create. - Add servers using
cluster add-nodeorcluster add-nodes, assigning weights and group limits. - Run
cluster config syncto capture the state in a file. - Commit the configuration file to version control.
- When changes are needed, edit the file, apply it with
cluster config apply, and re-sync to confirm the database state.
By following this loop, you maintain a reproducible record of your cluster topology and can scale your GNS3 environment confidently.
Important limitation: GNS3 clusters do not provide a single shared UI session. Administrators and students must log directly into each server URL they use. As a result,
gns3util class lsorexercise lsonly report items on the active server. Treat the cluster feature as a scheduling workaround: targeting--cluster <name>or-s/--serverhits a single node at a time, and a one-node cluster created via--serveris still stored in the local cluster config. Plan class scheduling so each group knows which server (or cluster node) they must connect to.