본문으로 건너뛰기

플랫폼 레이어

Kubernetes 기반 배포

MASS의 관리 플레인은 Kubernetes 위에서 동작합니다. Kubernetes의 선언적 상태 관리를 활용해 스토리지 서버 클러스터 생명주기를 관리하며, 컴포넌트 장애 시 자동으로 복구됩니다.

Manager

Manager는 클러스터에 단 하나 실행되는 중앙 오케스트레이터입니다.

주요 역할:

  • REST API / Dashboard: VolumeGroup, Volume, 스냅샷, 백업 등 모든 스토리지 자원의 생성·조회·삭제 진입점입니다.
  • 스케줄링: VolumeGroup 생성 요청이 들어오면 노드 토폴로지, NUMA 구성, 잔여 용량을 고려해 배치 노드를 결정합니다.
  • 오케스트레이션: 클러스터 전체 상태를 추적하고 각 노드의 Agent에 프로비저닝 작업을 위임합니다.
  • 인증 및 접근 제어: mTLS 기반 인증과 역할(Role) 기반 접근 제어 정책을 관리합니다.

Manager는 리더 선출(Leader Election) 방식으로 고가용성을 유지합니다. 장애 시 대기 인스턴스가 즉시 리더 역할을 인계받습니다.

Agent

Agent는 각 스토리지 노드마다 하나씩 실행되는 노드 레벨 컨트롤러입니다.

주요 역할:

  • 스토리지 서버 생명주기: 스토리지 서버 프로세스를 시작·중지하고, 상태 변화를 감지해 필요한 작업을 스토리지 서버에 위임합니다.
  • 드라이버 호출: Manager가 결정한 프로비저닝 의도를 스토리지 서버에 실제로 전달하는 역할을 합니다.
  • 하드웨어 관리: CPU·NIC·NVMe 온도, NVMe 슬롯 인벤토리, BMC(전원·팬·LED) 모니터링 및 제어를 담당합니다.
  • 상태 보고: 노드 용량(사용량·전체), 스토리지 엔진 수, 하드웨어 이상 여부를 Manager로 보고합니다.

프로비저닝 흐름

VolumeGroup 생성을 예로 들면:

사용자 → Manager REST API 요청

스케줄러: 배치 노드 결정

Agent (해당 노드)

스토리지 서버에 풀 생성

생성 완료 → REST API로 상태 조회 가능

프로비저닝이 완료된 이후, 클라이언트의 I/O는 이 경로를 거치지 않습니다. 클라이언트는 스토리지 서버와 직접 통신합니다.

정보

Agent는 각 노드에서 비동기로 동작합니다. 대규모 풀 생성처럼 시간이 걸리는 작업도 Manager는 블로킹 없이 진행 상황을 폴링 방식으로 추적합니다.