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 = "service" # 서비스 형태로 지속적으로 실행되는 작업
group "mongo-group" {
count = 1 # 이 task group의 인스턴스를 1개만 실행
network {
port "db" {
static = 27017 # MongoDB의 기본 포트 고정
}
}
task "mongodb" {
driver = "raw_exec" # 컨테이너 없이 호스트에서 직접 실행
config {
command = "/usr/bin/mongod" # 실행할 MongoDB 바이너리 절대경로
# mongod 실행 시 전달할 인자들
args = [
"--port", "27017", # 포트 설정
"--dbpath", "/var/lib/mongo/data", # 데이터 저장 경로
"--bind_ip", "0.0.0.0", # 외부 접속 허용
"--replSet", "rs0" # Replica Set 이름 설정
]
}
resources {
cpu = 1000 # CPU 1000MHz 할당 (1 core)
memory = 2048 # 메모리 2GB 할당
}
logs {
max_files = 5 # 로그 파일 최대 5개 보관
max_file_size = 10 # 각 로그 파일 최대 10MB
}
service {
name = "mongo" # Nomad 서비스 이름
port = "db" # 위에서 정의한 27017 포트 사용
tags = ["database", "mongodb"] # 서비스 태그로 분류 가능
check {
name = "mongodb-alive" # 헬스 체크 이름
type = "tcp" # TCP 포트가 열려 있는지 확인
interval = "10s" # 10초마다 체크
timeout = "2s" # 2초 내 응답 없으면 실패로 간주
}
}
}
}
}
nomad로 실행하기
nomad job run mongodb.nomad #해당 명령어로 몽고디비를 nomad로 띄움
mongodb 내리기
nomad job stop mongodb.nomad #해당 명령어로 몽고디비를 nomad 멈춤
mongodb 재시작
nomad job restart mongodb.nomad #해당 명령어로 몽고디비 재시작
'Infrastructure > Nomad' 카테고리의 다른 글
[Nomad] 하나의 Nomad job으로 서비스 통합 배포 (0) | 2024.12.18 |
---|---|
[Nomad] HashiCorp Nomad 오케스트레이션 이슈 정리 (0) | 2024.12.16 |
[Nomad] Nomad 오케스트레이션 설정 방법 (0) | 2024.08.08 |