»Nomad Autoscaler Scaling Policies

Nomad Autoscaler scaling policies can be configured via the scaling stanza or by configuration files stored on disk. The options available differ whether you are performing horizontal application/cluster scaling or Dynamic Application Sizing.

»Top Level Options

  • enabled - A boolean flag that allows operators to administratively disable a policy from active evaluation.

  • min - The minimum running count of the targeted resource. This can be 0 or any positive integer.

  • max - The maximum running count of the targeted resource. This can be 0 or any positive integer.

»Task Group and Cluster Scaling policy Options

The following options are available when using the Nomad Autoscaler to perform horizontal application scaling or horizontal cluster scaling.

  • cooldown - A time interval after a scaling action during which no additional scaling will be performed on the resource. It should be provided as a duration (e.g.: "5s", "1m"). If omitted the configuration value policy_default_cooldown from the agent will be used.

  • evaluation_interval - Defines how often the policy is evaluated by the Autoscaler. It should be provided as a duration (e.g.: "5s", "1m"). If omitted the configuration value default_evaluation_interval from the agent will be used.

  • target - Defines where the autoscaling target is running. Detailed information on the configuration options can be found on the Target Plugins page.

  • check - Specifies one or more checks to be executed when determining if a scaling action is required.

»check Options

  • source - The APM plugin that should handle the metric query. If omitted, this defaults to using the Nomad APM.

  • query - The query to run against the specified APM. Currently this query should return a single value. Detailed information on the configuration options can be found on the APM Plugins page.

  • strategy - The strategy to use, and it's configuration when calculating the desired state based on the current count and the metric returned by the APM. Detailed information on the configuration options can be found on the Strategy Plugins page.

»Example

A full example of a policy document that can be written into the Nomad task group scaling stanza or via a file within the policy_dir can be seen below.

min     = 2
max     = 10
enabled = true

policy {
  evaluation_interval = "5s"
  cooldown            = "1m"

  target "target" {
    Job   = "example"
    Group = "example"
  }

  check "active_connections" {
    source = "prometheus"
    query  = "scalar(open_connections_example_cache)"

    strategy "target_value" {
      target = 10
    }
  }
}

»Task (DAS) policy Options

The following options are available when using the Nomad Autoscaler Enterprise to perform Dynamic Application Sizing recommendations for task resources. When using the scaling stanza for Dynamic Application Sizing, the stanza requires a label to identify which resource it relates to. It currently supports cpu and mem labels, examples of which can be seen below.

  • cooldown - A time interval after a scaling action during which no additional scaling will be performed on the resource. It should be provided as a duration (e.g.: "5s", "1m"). If omitted the configuration value policy_default_cooldown from the agent will be used.

  • evaluation_interval - Defines how often the policy is evaluated by the Autoscaler. It should be provided as a duration (e.g.: "5s", "1m"). If omitted the configuration value default_evaluation_interval from the agent will be used.

  • target - Defines where the autoscaling target is running. Detailed information on the configuration options can be found on the Target Plugins page.

  • check - Specifies one check to be executed when determining if a recommendation is required. Only one check is permitted per scaling block within Dynamic Application Sizing.

»check Options

  • strategy - The strategy to use, and it's configuration when calculating the desired state based on the current value and the available historic data. Detailed information on the configuration options can be found on the Strategy Plugins page.

»Example

The following examples are minimal blocks which can be used to configure CPU and Memory based sizing recommendations for a Nomad job task.

scaling "cpu" {
  policy {
    check "96pct" {
      strategy "app-sizing-percentile" {
        percentile = "96"
      }
    }
  }
}

scaling "mem" {
  policy {
    check "max" {
      strategy "app-sizing-max" {}
    }
  }
}