👋 Hello, I am Seung-ho Ham

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

Devops

가상화 없이 프로젝트 환경 구축 - HashiCorp Nomad를 활용한 대체 솔루션

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

프로젝트를 시작하며 가장 큰 제약 사항은 컨테이너 가상화 도구(Docker 등)를 사용할 수 없다는 점

 

원인은 보안상의 이유로 가상화를 원천 차단하는 프로그램이 실행되고 있었기 때문

 

HashiCorp사의 Nomad란?

경량화된 오케스트레이션 도구로,

Docker 같은 컨테이너뿐만 아니라 바이너리 파일, JAR, 파이썬 스크립트 등 다양한 작업을 배포하고 관리할 수 있음

 - 컨테이너 가상화 없이도 작동할 수 있다는 점에서 적합한 선택

 

작동 원리

서버 - 클라이언트1,2,3 ...

서버가 중심이 되어 클라이언트들에게 작업(JOB)을 지시하고, 서버와 소통하며 리소스를 효율적으로 관리하고 장애에 빠른 대응을 함

 

여러가지 서비스(몽고디비 등)를 JOB Specification(작업정의)하여 HCL(HashiCorp Configuration Language) 형식으로 작성하여 서버에 작업을 제출함

 

서버가 해당 작업을 받아 작업을 평가하고, 특정작업을 어디에서 실행할지 할당을 생성하고 작업을 클라이언트에 전달함

 

클라이언트는 서버에게 작업의 상태를 계속적으로 보고하는데

이를 통해 서버는 전체의 상태를 파악하고 대응을할 수 있음

 

작업 파일 작성 방법 : https://developer.hashicorp.com/nomad/docs/job-specification

 

(Nomad로 일반 애플리케이션을 컨테이너와 유사하게 사용하기)

https://www.hashicorp.com/resources/nomad

 

환경 설정 및 서비스 구성

< Nomad 설치>

Linux CentOS/RHEL 기준(아래 링크와 같이 다운로드)

 

공식 저장소 추가

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo

 

nomad 설치

sudo yum -y install nomad

 

버전 확인

nomad --version

 

nomad 설치 링크 https://developer.hashicorp.com/nomad/install

 

Install | Nomad | HashiCorp Developer

Explore Nomad product documentation, tutorials, and examples.

developer.hashicorp.com

 

< Nomad 설정 >

기본 디렉토리 생성 및 권한 설정

sudo mkdir -p /etc/nomad.d /opt/nomad
sudo chmod 750 /etc/nomad.d /opt/nomad
sudo chown -R nomad:nomad /etc/nomad.d /opt/nomad

 

기본 설정은 아래 경로의 파일에서 수정 (네트워크 인터페이스 연결, 클러스터 구성 서버 수, Nomad 서버 주소 등)

sudo nano /etc/nomad.d/nomad.hcl

 

노마드 서비스 시작 및 부팅 시 자동 시작 등록

sudo systemctl daemon-reload

sudo systemctl start nomad

sudo systemctl enable nomad