잡 스펙의 `migrate` 블록

잡 스펙의 migrate 블록

migrate 블록은 드레이닝 중인 노드에서 할당을 마이그레이션하는 그룹 전략을 지정해요. 생략하면 기본 마이그레이션 전략이 적용돼요. 잡 레벨에서 지정하면 그 설정이 잡 안의 모든 그룹에 적용돼요. count가 1보다 큰 서비스 잡만 migrate 블록을 지원해요.

출처: 문서

본문

배치 job -> **migrate**
job -> group -> **migrate**

마이그레이션은 Nomad 노드가 드레이닝될 때 발생해요. 노드가 유실되면 Nomad는 할당을 교체하고 migrate 블록을 무시해요. 에이전트가 할당을 설정하지 못하거나 할당의 태스크가 restart 블록이 허용하는 것보다 많이 실패하면 Nomad는 할당을 재스케줄링하고 migrate 블록을 무시해요.

job "docs" {
  migrate {
    max_parallel     = 1
    health_check     = "checks"
    min_healthy_time = "10s"
    healthy_deadline = "5m"
  }
}

하나 이상의 노드가 드레이닝 중일 때는 한 번에 max_parallel 할당만 중지돼요. 교체 할당이 min_healthy_time 동안 healthy 상태를 유지하거나 healthy_deadline에 도달할 때까지 노드 드레이닝은 계속되지 않아요.

노드의 드레인 deadline은 그 노드의 할당에 대해 migrate 블록을 덮어쓴다는 점에 유의하세요. migrate 블록은 잡 작성자가 서비스를 어떻게 마이그레이션할지 정의하는 것이고, 노드 드레인 deadline은 시스템 운영자가 드레인이 얼마나 오래 걸릴 수 있는지에 하드 한도를 두는 것이에요.

노드 드레이닝에 대한 자세한 내용은 Workload Migration Guide를 참고하세요.

매개변수 (Parameters)

  • max_parallel (int: 1) - 동시에 마이그레이션할 수 있는 할당 수. 마이그레이션 중 count - max_parallel이 실행 중으로 남게 되므로 이 수는 그룹의 총 count보다 작아야 해요.

  • health_check (string: "checks") - 할당의 건강 상태가 결정되는 메커니즘. 가능한 값:

    • "checks" - 모든 태스크가 실행 중이고 관련 checks가 healthy일 때 할당이 healthy로 간주되고, 태스크 중 하나라도 실패하거나 모든 체크가 healthy가 되지 않으면 unhealthy로 간주되도록 지정. "task_states" 모드의 상위 집합이에요.

    • "task_states" - 모든 태스크가 실행 중일 때 할당이 healthy로 간주되고 태스크가 실패하면 unhealthy로 간주되도록 지정.

  • min_healthy_time (string: "10s") - 할당이 healthy로 표시되고 추가 할당 마이그레이션의 잠금이 풀리기 전에 healthy 상태에 있어야 하는 최소 시간. "30s" 또는 "15m" 같은 레이블 접미사로 지정돼요.

  • healthy_deadline (string: "5m") - 할당이 healthy로 표시되어야 하는 deadline. 이후 할당은 자동으로 unhealthy로 전환돼요. "2m" 또는 "1h" 같은 레이블 접미사로 지정돼요.

더 알아보기 (Learn more)