728x90
✅ 목표: MinIO를 단일 노드 모드에서 Distributed(분산) 모드로 구성하여
다중 디스크/노드 환경에서의 확장성, 내결함성(Fault-Tolerance), 안정성을 실습하고 실험합니다.
🔎 이번 글에서 수행할 작업 요약
- MinIO 분산 모드 개념 이해 및 구성 방식 파악
- Helm Chart를 이용해 분산 모드로 배포
- Pod 및 Volume 수에 따른 확장성 실험
- 장애 시 동작 확인 및 복구 실험
🧠 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