잡 스펙의 `periodic` 블록

잡 스펙의 periodic 블록

periodic 블록은 잡이 고정된 시간, 날짜 또는 간격으로 실행될 수 있게 해요. periodic 스케줄러를 생각하는 가장 쉬운 방법은 "Nomad cron" 또는 "분산 cron"이에요.

출처: 문서

본문

배치 job -> **periodic**
job "docs" {
  periodic {
    cron             = "*/15 * * * * *"
    prohibit_overlap = true
  }
}

periodic 표현식은 기본적으로 UTC 시간대에서 평가돼요. Nomad가 여러 시간대에 걸쳐 있을 때 일관된 평가를 보장하기 위해서예요.

요구 사항 (Requirements)

  • 잡의 스케줄러 타입은 batch 또는 sysbatch여야 해요.
  • 잡은 periodic으로 업데이트될 수 없어요. 따라서 기존 잡을 periodic으로 전환하려면 먼저 nomad stop -purge «잡 이름»을 실행해야 해요. 이것은 예상된 동작이며 이 변경이 운영자에 의해 의도적으로 이루어졌음을 보장하기 위한 것이에요.

periodic 잡과 함께 매개변수를 사용하는 방법은 parameterized 문서를 참고하세요.

매개변수 (Parameters)

  • cron (deprecated : 1.6.2에서 crons로 대체됨) (string) - 잡을 실행할 간격을 구성하는 cron 표현식. cron 특유의 형식 외에도 @daily 또는 @weekly 같은 미리 정의된 표현식도 포함해요. cron 또는 crons 중 하나는 설정해야 하지만 둘 다는 안 돼요.

  • crons - 잡이 실행되는 간격을 구성하는 cron 표현식 목록. 잡은 표현식 중 하나와 일치하는 다음 가장 빠른 시간에 실행돼요. @daily와 @weekly 같은 미리 정의된 표현식을 지원해요. 지원되는 cron 스펙과 미리 정의된 표현식의 전체 세부 사항은 문서를 참고하세요. cron 또는 crons 중 하나는 설정해야 하지만 둘 다는 안 돼요.

  • prohibit_overlap (bool: false) - 이 잡의 이전 인스턴스가 완료될 때까지 기다려야 하는지 지정. 이것은 이 잡에만 적용돼요. 다른 periodic 잡이 동시에 실행되는 것을 막지 않아요. 다음 예약 실행이 시작되기 전에 이전 실행이 강제로 종료되도록 group.max_run_duration과 결합하는 것을 고려하세요.

  • time_zone (string: "UTC") - 다음 실행 간격을 평가할 시간대. 일광 절약 시간이 스케줄링에 영향을 주므로 아래 동작이 요구 사항을 충족하는지 확인하세요. 시간대는 Golang의 LoadLocation으로 파싱할 수 있어야 해요.

  • enabled (bool: true) - 이 잡이 실행되어야 하는지 지정. 이것은 이 잡이 cron 스케줄로 실행되는 것을 막을 뿐만 아니라 강제 실행도 막아요.

예시 (Examples)

다음 예시는 periodic 블록만 보여줘요. periodic 블록은 위에 나열된 배치에서만 유효하다는 점을 기억하세요.

매일 실행 (Run daily)

이 예시는 periodic 잡을 매일 실행하는 것을 보여줘요:

periodic {
  cron = "@daily"
}

시간대 설정 (Set time zone)

이 예시는 periodic 잡이 평가할 시간대를 설정하는 것을 보여줘요:

periodic {
  cron      = "*/15 * * * * *"
  time_zone = "America/New_York"
}

여러 cron 실행 (Run multiple crons)

periodic {
  crons = [
    "*/5 * * *",
    "*/7 * * *"
  ]
  time_zone = "America/New_York"
}

일광 절약 시간 (Daylight saving time)

Nomad가 time_zone 구성을 지원하지만, periodic 잡은 UTC time_zone을 기준으로 지정할 것을 강력히 권장해요. 다음 일광 절약 시간 동작이 원하는 경우에만 time_zone을 사용자 정의하세요:

  • 시간이 앞으로 건너뛸 때, 건너뛴 시간대(예: America/New_York의 새벽 2:30)에 예약된 periodic 잡은 그날(예: 3월 10일) 건너뛰어집니다.

  • 시간이 뒤로 돌아갈 때, 중복된 시간대(예: America/New_York의 새벽 1:30)에 예약된 periodic 잡은 그날(예: 11월 3일) 두 번 실행됩니다.

periodic 잡의 시간대를 구성할 때의 추가 고려 사항은 multiregion 문서를 참고하세요.

더 알아보기 (Learn more)