Storm docs logo
Search the docs.../
Explore Storm Products

ClusterManager Settings - Storm Streaming Server

The ClusterManager is the central coordination module of a Storm Streaming Server cluster. It tracks all active streams, coordinates distributed transcoding, and handles authentication between cluster nodes. Every origin, transcode, and edge application in the cluster connects to at least one ClusterManager instance.

Sample Configuration

The ClusterManager is configured within the <ClusterManager> block of the config/preferences.xml file. This is a server-level setting, not an application-level one.

config/preferences.xml - ClusterManager configuration
Code iconxml
<ClusterManager enabled="true">
    <Identity>ClusterManager01</Identity>
    <GlobalStatistics>true</GlobalStatistics>
    <Authentication>
        <IPWhiteList>192.168.10.2, 192.168.10.3, 192.168.10.4</IPWhiteList>
        <Secret>MySecretKey123!</Secret>
    </Authentication>
    <ClusterTranscoding enabled="true" active="true">
        <MinimalSourceResolution>1280x720</MinimalSourceResolution>
        <StreamGraceTimeout>300</StreamGraceTimeout>
        <StreamEvaluationInterval>30</StreamEvaluationInterval>
        <AliasMode>false</AliasMode>
        <StreamWeightOverrides enabled="false" />
    </ClusterTranscoding>
    <AWSModule enabled="false">
        <AccessKeyID>AKIAIOSFODNN7EXAMPLE</AccessKeyID>
        <SecretAccessKey>wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY</SecretAccessKey>
        <Regions>
            <Region>us-east-1</Region>
            <Region>eu-west-1</Region>
        </Regions>
    </AWSModule>
</ClusterManager>

General Settings

ParameterDescriptionRequired
enabledEnables or disables the ClusterManager module. Attribute on the <ClusterManager> element.Yes
<Identity>A unique identifier for this ClusterManager instance (minimum 3 characters). Useful for distinguishing between primary and secondary instances in redundant setups (e.g. Primary, Secondary).Yes
<GlobalStatistics>If set to true, the ClusterManager collects and aggregates statistics from all connected nodes.No

Authentication

The <Authentication> block controls how cluster nodes authenticate when connecting to the ClusterManager.

Authentication block
Code iconxml
<Authentication>
    <IPWhiteList>192.168.10.2, 192.168.10.3, 192.168.10.4</IPWhiteList>
    <Secret>MySecretKey123!</Secret>
</Authentication>
ParameterDescriptionRequired
<IPWhiteList>Comma-separated list of IP addresses or CIDR ranges allowed to connect. If empty, all IPs are permitted.No
<Secret>Shared secret that all applications must present when connecting to this ClusterManager. Minimum 8 characters, must contain at least one special character.Yes
Security Warning

Leaving the IP whitelist empty is not recommended for production environments. Restrict access to known cluster node IPs whenever possible.

Cluster Transcoding

The <ClusterTranscoding> block configures distributed transcoding — the ClusterManager's ability to dynamically assign and revoke transcoding tasks across transcode nodes based on stream demand.

ClusterTranscoding block
Code iconxml
<ClusterTranscoding enabled="true" active="true">
    <MinimalSourceResolution>1280x720</MinimalSourceResolution>
    <StreamGraceTimeout>300</StreamGraceTimeout>
    <StreamEvaluationInterval>30</StreamEvaluationInterval>
    <AliasMode>false</AliasMode>
    <StreamWeightOverrides enabled="false" />
</ClusterTranscoding>
ParameterDescriptionDefault
enabledEnables or disables distributed transcoding within the cluster.false
activeRuntime state of transcoding. Can be toggled via the Control Panel without restarting the server. When false, no new transcoding tasks are assigned.false
<MinimalSourceResolution>Minimum source resolution (e.g. 1280x720) required for a stream to qualify for transcoding. Streams below this resolution are skipped.
<StreamGraceTimeout>Grace period in seconds during which a stream, once assigned for transcoding, is protected from having its transcoding revoked.300
<StreamEvaluationInterval>Interval in seconds at which the ClusterManager re-evaluates all streams to determine whether transcoding should be assigned or revoked.30
<AliasMode>If set to true, alias-based stream identification is used for transcoding decisions.false

The ClusterManager dynamically allocates transcoding based on demand. Each transcode node has a defined maximum number of concurrent tasks. When capacity is limited, the ClusterManager prioritizes streams with the highest number of viewers (or based on the weight system, if enabled).

Stream Weight Overrides

By default, the ClusterManager uses the number of viewers to prioritize which streams should be transcoded. The <StreamWeightOverrides> system allows you to override this behavior by fetching custom weights from an external API.

StreamWeightOverrides block
Code iconxml
<StreamWeightOverrides enabled="true">
    <WeightTimeout>3600</WeightTimeout>
    <RequestURL>https://api.example.com/weights/{streamKey}</RequestURL>
    <XApiKey>your-api-key</XApiKey>
</StreamWeightOverrides>
ParameterDescriptionDefault
enabledEnables weight-based transcoding prioritization via an external API.false
<WeightTimeout>Cache timeout in seconds — how long a fetched weight is valid before the ClusterManager requests fresh data.
<RequestURL>API endpoint for weight queries. Use {streamKey} as a placeholder for the stream key.
<XApiKey>API key sent as X-Api-Key header with each request.

The {streamKey} placeholder in the URL is replaced with the actual stream key at request time.

Expected JSON response:

Weight API response
Code iconjson
{
  "weight": 10,
  "weightStrategy": "value"
}

Available weight strategies:

StrategyDescription
addAdds the number of viewers to the provided weight.
multiplyMultiplies the number of viewers by the provided weight.
setUses the provided weight directly, ignoring the viewer count.
valueUses the number of viewers as the weight (default behavior).

AWS Module

The <AWSModule> block enables integration with Amazon Web Services for cloud-based cluster deployments.

AWSModule block
Code iconxml
<AWSModule enabled="true">
    <AccessKeyID>AKIAIOSFODNN7EXAMPLE</AccessKeyID>
    <SecretAccessKey>wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY</SecretAccessKey>
    <Regions>
        <Region>us-east-1</Region>
        <Region>eu-west-1</Region>
    </Regions>
</AWSModule>
ParameterDescriptionRequired
enabledEnables or disables AWS integration.Yes
<AccessKeyID>AWS IAM access key ID.Yes
<SecretAccessKey>AWS IAM secret access key.Yes
<Regions>List of AWS regions where cluster resources can be deployed.Yes
Security Tip

Use environment variables for AWS credentials to keep them out of configuration files: <AccessKeyID>${EV:AWS_ACCESS_KEY_ID}</AccessKeyID>.

Environment Variables

All parameters (except enabled and active attributes) support environment variables using the ${EV:VARIABLE_NAME} syntax. This is particularly recommended for sensitive values like the cluster secret and AWS credentials.

Environment variable examples
Code iconxml
<Authentication>
    <Secret>${EV:CLUSTER_SECRET}</Secret>
</Authentication>
Note

Fields locked by environment variables cannot be modified via the REST API.

Support Needed?

If you have any questions or need assistance, please create a support ticket and our team will help you.

Blog
Support
About us
Patents
Term of use
Privacy policy
Contact
©2026 Storm Streaming Media. All Rights Reserved.