잡 스펙의 `scaling` 블록

잡 스펙의 scaling 블록

scaling 블록은 Nomad Autoscaler 같은 외부 오토스케일러와 Nomad UI를 통한 스케일링을 지원하기 위해 task 또는 group의 스케일링 옵션을 구성할 수 있게 해요. 이 블록은 system 타입의 잡에서는 지원되지 않아요.

출처: 문서

본문

배치 job -> group -> **scaling**
job -> group -> task -> **scaling**

group 레벨에 배치되면 스케일링 정책은 수평 애플리케이션 스케일링 타입이 되고, 그룹의 count 값을 제어해요.

job "example" {
  datacenters = ["dc1"]

  group "cache" {
    count = 1

    scaling {
      enabled = true
      min     = 0
      max     = 10

      policy {
        # ...
      }
    }
    # ...
  }
}

task 레벨에 배치되면 스케일링 정책은 Dynamic Application Sizing 타입이 되고, 태스크의 resources 값을 제어해요. 이 시나리오에서 scaling 블록은 어떤 리소스를 제어할지 나타내는 레이블을 가져야 해요. 유효한 이름은 cpu와 mem이에요.

job "example" {
  datacenters = ["dc1"]

  group "cache" {
    task "redis" {
      driver = "docker"

      config {
        image = "redis:7"
      }

      resources {
        cpu    = 100
        memory = 256
      }

      scaling "cpu" {
        enabled = true
        min     = 100
        max     = 500

        policy {
          # ...
        }
      }

      scaling "mem" {
        enabled = true
        min     = 64
        max     = 512

        policy {
          # ...
        }
      }
    }
  }
}

매개변수 (Parameters)

  • min - (int: nil) - 태스크 그룹의 최소 허용 count. 외부 오토스케일러가 이를 존중해야 해요. Nomad도 잡 업데이트와 스케일링 작업 중 이를 존중해요. 기본값은 지정된 태스크 그룹 count예요.

  • max - (int: <required>) - 태스크 그룹의 최대 허용 count. 외부 오토스케일러가 이를 존중해야 해요. Nomad도 잡 업데이트와 스케일링 작업 중 이를 존중해요.

  • enabled - (bool: false) - 스케일링 정책이 활성화되었는지 여부. 오토스케일링 정책을 일시적으로 비활성화하도록 허용하기 위한 것이며, 외부 오토스케일러가 이를 존중해야 해요.

  • policy - (map<string|...>: nil) - 오토스케일링 정책. 이건 Nomad에 불투명하며 외부 오토스케일러만 소비하고 파싱해요. 따라서 그 내용은 오토스케일러에 따라 다르며, 자세한 내용은 Nomad Autoscaler 문서를 참고하세요. 여기에는 Schedule-based Autoscaling에 문서화된 일정 기반 정책과 체크 제어가 포함돼요.

더 알아보기 (Learn more)