상태 저장 워크로드
상태 저장 워크로드 (Stateful workloads)
Nomad를 사용하면 로컬 또는 원격 스토리지 볼륨의 영구 데이터를 여러 방식으로 작업 환경에 마운트할 수 있어요.
출처: 문서
본문
다음과 같은 방법이 있어요:
- 컨테이너 스토리지 인터페이스(CSI, Container Storage Interface) 플러그인
- Nomad 동적 호스트 볼륨(dynamic host volumes)
- Nomad 정적 호스트 볼륨(static host volumes)
- Docker 볼륨 드라이버 같은 작업 드라이버 전용 볼륨
Nomad의 컨테이너 스토리지 인터페이스(CSI) 통합은 클러스터 안에서 실행되는 상태 저장 워크로드의 외부 스토리지 볼륨을 관리할 수 있어요. CSI 공급자는 Nomad 작업으로 실행되는 서드파티 플러그인이며, 클라우드 또는 스토리지 공급자가 생성한 볼륨의 생성과 마운트를 조율할 수 있어요. AWS Elastic Block Storage, Azure disk, GCE Persistent Disk, Alicloud Disk는 사용 가능한 블록 디바이스 CSI 플러그인의 몇 가지 예시예요. 더 포괄적인 목록은 CSI 개발자 문서에서 찾을 수 있어요.
Nomad는 스케줄링 과정에서 CSI가 관리하는 볼륨을 인지하므로, 특정 클라이언트에서 볼륨을 사용할 수 있는지에 따라 워크로드를 스케줄링할 수 있어요.
Nomad의 호스트 볼륨에는 동적(dynamic)과 정적(static) 두 가지 유형이 있어요. 동적 호스트 볼륨은 CSI 볼륨과 유사하게 플러그인의 도움으로 Nomad가 관리해요. 플러그인이 볼륨을 만들어 클라이언트에 마운트하고, Nomad가 볼륨을 작업 그룹에 제공해요. 플러그인은 스토리지 요구 사항에 맞는 플러그인을 누구나 작성할 수 있게 하는 명세를 따르고 있어요.
정적 호스트 볼륨(Static Host volumes)은 Nomad 클라이언트의 기존 디렉터리를 할당(allocation)에 마운트할 수 있게 해줘요. 이러한 디렉터리는 클라이언트의 디렉터리일 수도 있고, NFS, SeaweedFS, GlusterFS 같은 네트워크 또는 클러스터 파일 시스템을 마운트한 것일 수도 있어요. 정적 호스트 볼륨은 클라이언트 구성 파일에서 정의되며 해당 클라이언트에서 실행되는 모든 작업에 사용할 수 있어요.
Docker 작업 드라이버의 볼륨 지원 덕분에 Nomad는 Docker를 기본 지원하는 소프트웨어 정의 스토리지(SDS) 솔루션과 통합할 수 있어요. Nomad가 실제로 스토리지 풀이나 복제를 관리하지는 않는다는 점을 명심해요. 이러한 작업은 SDS 공급자에게 위임되기 때문이에요. 이러한 공급자를 사용해 상태 저장 워크로드(예: 프로덕션 데이터베이스)를 실행할 때는 모든 요소와 위험을 평가해 주세요.
Nomad의 상태 저장 스토리지 옵션에 대한 자세한 내용은 상태 저장 워크로드 고려 사항(Considerations for Stateful Workloads) 가이드를 참조해요.
이 가이드에서는 상태 저장 애플리케이션을 Nomad 클러스터에 배포하고, 데이터가 할당(allocation)의 수명을 넘어도 유지된다는 것을 보여줄 거예요.