Hello 👋

🧑🏻‍💻 A Developers who create code that changes the world

Infrastructure/Nomad 4

[Nomad] 하나의 Nomad job으로 서비스 통합 배포

초기엔 각각의 Nomad job 파일을 별도로 작성해 배포 서비스가 늘어날수록 관리가 복잡해지고, Job 하나 바꿀 때마다 다른 서비스와의 연결 상태가 깨지거나 누락되는 문제가 발생' 아래와 같이 하나의 파일로 비슷한 유형의 서비스 일괄 배포 가능하도록 수정api-service : api task들을 group 단위로 모아 실행database-service : service들을 group 단위로 모아 실행persist-infra : system-infra와 DB등 고가용성 서비스들을 모아 실행이외에도 device관련 계층 등의 서비스를 모아 실행job "persist-infra" { datacenters = ["dc1"] group "persist-infra-group" { count = 1 ..

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

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

[Nomad] Nomad에서 raw_exec 드라이버 사용

raw_exec 드라이버Nomad에서 Docker 같은 컨테이너 기술 없이, 호스트 머신에서 직접 실행 파일을 구동하는단순한 드라이버 /etc/nomad.d 의 경로에서 nomad.hcl 파일을 수정해줘야함client { enabled = true servers = ["127.0.0.1"] options { "driver.raw_exec.enable" = "true" "driver.docker.enable" = "false" }} mongodb.nomad file 작성 예시job "mongodb" { # 이 Job은 "mongodb"라는 이름으로 정의되고 # 실행 위치는 "dc1"이라는 데이터센터(기본값)에 제한됨 datacenters = ["dc1"] type = "servic..

[Nomad] Nomad 오케스트레이션 설정 방법

컨테이너 도구(Docker 등)를 사용할 수 없다는 점을 보완하기 위해 local에 환경 설치 후 오케스트레이션 할 수 있는 Nomad 사용HashiCorp사의 Nomad란?경량화된 오케스트레이션 도구로,Docker 같은 컨테이너뿐만 아니라 바이너리 파일, JAR, 파이썬 스크립트 등 다양한 작업을 배포하고 관리할 수 있음 - 컨테이너 가상화 없이도 작동할 수 있다는 점에서 적합한 선택 작동 원리서버 - 클라이언트1,2,3 ...서버가 중심이 되어 클라이언트들에게 작업(JOB)을 지시하고, 서버와 소통하며 리소스를 효율적으로 관리하고 장애에 빠른 대응을 함 여러가지 서비스(몽고디비 등)를 JOB Specification(작업정의)하여 HCL(HashiCorp Configuration Language) 형..