Infrastructure/Nomad

[Nomad] HashiCorp Nomad 오케스트레이션 이슈 정리

Potato_H 2024. 12. 16. 17:56
반응형

nomad job 스크립트 자동 재시작 기능 (restart policy)

Nomad는 작업이 죽었을 때 자동으로 재시작하거나 재배치를 시도할 수 있음
하지만 불필요하게 반복 재시작되면서 리소스를 과도하게 점유 할 수도 있음
restart {
    attempts = 3         # 최대 재시도 횟수
    interval = "5m"      # 이 시간 내에 실패 횟수 초과하면 중단
    delay = "15s"        # 재시작 간격 둠
    mode = "delay"     # 즉시 중단
    }

nomad job 스크립트 리소스 과소/과다 할당

Nomad는 작업이 죽었을 때 자동으로 재시작하거나 재배치를 시도할 수 있음
하지만 불필요하게 반복 재시작되면서 리소스를 과도하게 점유 할 수도 있음
resources {
    cpu = 500               # MHz
    memory = 256        # MB
    }

서비스가 systemd와 겹쳐 충돌

Nomad로 실행 중인 서비스가 systemd에서 이미 돌아가고 있었음
sudo systemctl stop kong
sudo systemctl disable kong
# 모든 systemctl 서비스 종료 후 nomad에서 관리하도록 전환

Nomad 작업 로그 및 배포 상태 확인

에러의 원인들을 찾기 위해 작업이 정상적으로 할당되고 실행되었는지 확인이 필요
nomad alloc status {할당된id}
nomad logs {할당된id}
# stdout,stderr 로그를 통해 디버깅

Nomad 작업 실행 시 config 파일 반영이 안되는 문제

작업 실행 시 config 파일 경로를 상대 경로로 적거나, 잘못된 위치에 둠
config {
    command = "/usr/bin/python3"
    args = ["main.py", "--config", "/etc/servicename/config.conf"]    # config 파일은 절대 경로로 명시
    }

Nomad 실행 오류 (raw_exec 권한 문제) 

Nomad 작업에서 실행할 바이너리의 경로가 잘못되었거나 실행 권한이 없었음
chmod +x 옵션으로 실행 권한 부여
반응형