Data Engineering/s3 minio

📘 [MinIO & Cilium 기반 오브젝트 스토리지 연동 시리즈 #12] MinIO를 Distributed 모드로 구성하여 확장성 실험하기

ygtoken 2025. 3. 26. 18:37
728x90

목표: MinIO를 단일 노드 모드에서 Distributed(분산) 모드로 구성하여
다중 디스크/노드 환경에서의 확장성, 내결함성(Fault-Tolerance), 안정성을 실습하고 실험합니다.


🔎 이번 글에서 수행할 작업 요약

  1. MinIO 분산 모드 개념 이해 및 구성 방식 파악
  2. Helm Chart를 이용해 분산 모드로 배포
  3. Pod 및 Volume 수에 따른 확장성 실험
  4. 장애 시 동작 확인 및 복구 실험

🧠 1단계: MinIO 분산 모드 개요

이 단계의 목적: MinIO의 분산 모드에서 요구하는 구조와 특징을 이해하고,
다중 볼륨 또는 다중 노드 기반 아키텍처의 필요성을 파악합니다.

  • 분산 모드 특징:
    • N ≥ 4 디스크(또는 볼륨) 필요 (개별 볼륨 또는 PVC)
    • 실패 디스크 허용 개수: N/2 - 1
    • 높은 안정성과 성능 제공 (멀티 파드, 멀티 디스크)
  • Kubernetes에서는 StatefulSet + PVC 조합으로 구현 가능

✅ 실제 환경에서 고가용성/확장성 요구 시 반드시 분산 모드를 사용해야 함


⚙️ 2단계: Helm Chart 기반 분산 모드 구성 (라인별 주석 포함)

이 단계의 목적: MinIO를 Helm Chart로 배포할 때, mode=distributed 옵션을 적용하고
4개 이상의 리플리카를 가지도록 설정하여 분산 구성을 실습합니다.

helm install minio bitnami/minio \
  --namespace minio --create-namespace \                            # 네임스페이스 생성 및 설정
  --set mode=distributed \                                          # ✅ 분산 모드로 설정
  --set replicas=4 \                                                # ✅ 최소 4개 이상 파드 필요
  --set auth.rootUser=minioadmin \                                  # 관리자 계정
  --set auth.rootPassword=minioadmin \                              # 관리자 비밀번호
  --set persistence.size=10Gi \                                     # 각 Pod에 연결할 PVC 용량
  --set service.type=LoadBalancer                                   # 외부 접근을 위한 서비스 노출 방식

☑️ 각 파드에 독립적인 PVC가 연결되며, 내부적으로 자동 분산 구성됨


🛰️ 3단계: 구성 확인 및 확장 실험

이 단계의 목적: 분산 구성의 상태를 확인하고,
Pod 수 또는 Volume 수를 조정할 때의 시스템 반응을 실험합니다.

# 파드 수 확인
kubectl get pods -n minio

# PVC 수 확인
kubectl get pvc -n minio

# MinIO 내부에서 분산 상태 확인 (UI 또는 mc admin info)
mc alias set local http://<EXTERNAL-IP>:9000 minioadmin minioadmin
mc admin info local

 

예상 출력:

4 MinIO servers running
Disks: 4
Drives Online: 4
Drives Offline: 0

✅ 분산 모드에서 모든 파드가 하나의 스토리지 클러스터처럼 작동함


⚠️ 4단계: 장애 시 시나리오 테스트

이 단계의 목적: 일부 Pod 또는 Volume에 장애가 발생했을 때,
시스템이 어떻게 반응하고 복구되는지를 실험합니다.

# 임의로 Pod 하나 제거
kubectl delete pod minio-2 -n minio

# 몇 초 후 상태 확인
kubectl get pods -n minio

# MinIO에서 볼륨 상태 확인
mc admin info local

📌 일부 드라이브가 오프라인이어도 시스템 전체는 정상 동작함
다만, 허용 실패 범위를 초과할 경우 오류 발생


📎 요약 및 핵심 정리

  • MinIO 분산 모드는 4개 이상의 Pod + PVC 조합으로 구성되며,
    확장성과 내결함성을 갖춘 고가용성 환경을 제공함
  • Helm Chart에서 mode=distributed와 replicas ≥ 4 옵션으로 쉽게 구성 가능
  • 일부 노드나 디스크 장애 시에도 서비스가 지속 가능하도록 설계됨
  • mc admin info 명령을 통해 현재 클러스터 상태 및 헬스체크가 가능함

 

728x90