Scaling and High Availability
Enable HA Scaling on the Keeper Gateway

The Keeper Gateway powers Connections, Tunnels, Discovery, and Password Rotation.
Scaling lets you run multiple Gateway instances with the same configuration. Those instances form one Gateway pool. The pool improves capacity and availability for PAM workloads.
A Gateway pool distributes requests across healthy instances in round-robin order.
How Scaling Works

When Gateway scaling is enabled, you can operate multiple Gateway instances using identical configuration. These instances form a Gateway pool that collectively manages PAM workloads.
Workload distribution — requests are distributed across available Gateway instances.
Automatic failover — if one instance becomes unavailable, traffic shifts to healthy instances.
Configurable maximum — you define how many instances can run at once.
Cross-platform support — instances can run on any supported Gateway platform.
pam gateway list in Commander shows the Gateway Pool as a single entry. Use pam gateway list --verbose to see additional details including OS, machine type, and device name. Individual running instances are not listed separately.
Scaling Down
Reducing the maximum instance count doesn't automatically stop running Gateways — manual intervention is required. If you lower the limit (example: 3 → 2), existing instances continue running until you manually stop them to comply with the new maximum.
Setup
Prerequisites
Before you enable scaling, make sure you have:
Keeper Gateway version 1.7.6 or higher
Keeper Commander version 17.2 or higher
A user who can create, deploy, and manage Keeper Gateways
An existing Gateway deployment
1. Set Maximum Gateway Instances
After logging into Keeper Commander, retrieve your gateway list:
Configure scaling for your gateway:
Where <GATEWAY_UID_OR_NAME> is your Gateway's UID or name, and <MAX_INSTANCES> is your desired concurrent instance limit (minimum: 1).
Example:
2. Run Another Gateway with the Same Configuration
Deploy the same Gateway configuration to additional servers or environments. Each instance joins the same Gateway pool and respects the configured maximum.
Copy the configuration from an existing running Gateway and reuse it on each new host. If you created the original Gateway with the base64 configuration option, reuse that printed GATEWAY_CONFIG value.
For full deployment steps, see the platform guides:
Deploying new Instances
Gateway initialization methods differ depending on what system the gateway is deployed on:
Windows-native and Linux-native gateways are initialized with a One-Time-Token.
Docker gateways are initialized with a Base64 Configuration file.
Docker Instance
Deploying multiple instances of the same gateway is straightforward with Docker deployments, as the configuration file is the same, therefore you can deploy new instances with the same command:
Linux Instance
Since Linux-native gateways deploy with a One-Time-Token, you cannot add a new instance with the same command. Instead:
Install the gateway without a configuration:
Copy the gateway configuration JSON file from your first gateway:
Restart your gateway
Windows Instance
Since Linux-native gateways deploy with a One-Time-Token, you cannot add a new instance with the same command. Instead:
Install the Windows gateway service without starting it:

Copy the gateway configuration JSON file from your first gateway:
Start the Keeper Gateway service from your Windows Services list.
Viewing Gateway Instances
After a restart, the gateway should be running as an instance of the gateway pool, and the temporary gateway can be safely discarded. You can verify running instances with Keeper Commander:
Converting JSON and Base64 Configuration Files
If you want to run a Linux-native / Windows-native gateway and a Docker gateway together in a pool, the configuration is stored in different formats:
Linux stores the configuration in JSON
Docker stores the configuration in Base64 (in the docker-compose.yml file)
To work with both formats, you can encode into / decode from Base64
Encode a JSON config (Linux / Windows) into Base64 (Docker):
Decode a Base64 config (Docker) into JSON (Linux / Windows):
In the above command, > /etc/keeper-gateway/gateway-config.json will write the JSON directly into the gateway config file. Remove it to print the JSON to stdout.
Last updated
Was this helpful?

