잡 스펙의 `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 문서를 참고하세요.