minio

minio는 오브젝트 스토리지로 기존 클라우드에서 사용되는 S3와 동일한 호환성을 제공하는 프로젝트이다.

오픈소스로 공개되어 개발되고 있는 minio는 간단한 도커 환경 배포부터 실 서비스를 위한 프러덕션 환경에도 대응이 가능하다고 한다.

https://github.com/minio/minio

 

GitHub - minio/minio: MinIO is a high-performance, S3 compatible object store, open sourced under GNU AGPLv3 license.

MinIO is a high-performance, S3 compatible object store, open sourced under GNU AGPLv3 license. - minio/minio

github.com

 

오브젝트 스토리지를 사용하기 위해 공식 문서을 읽어보던중 간단하게 도커로 배포가 가능하여 시도해보았다.

 

배포 및 사용을 꽤하면서 알게된 사실이지만 도커로써의 노드 확장을 사실상 불가능인거 같다. 

과거에 지원햇지만 지금은 지원하지 않는거 같구 추가적인 디스크 확장이나, 디스크 추가 등과 같은 작업은 minio의 구조때문인지 불가능하고 확장을 위해선 노드를 추가하여 다중노드다중디스크 시스템으로 결국 가야한다. 다만 이럴경우 리눅스 배포나 쿠버네티스 배포를 사용하여 배포를 진행해야 추가적인 확장이 가능한거같다.

 

minio docker 배포

아무튼 minio를 간단하게 도커를 활용하여 서비스를 올리기 위해 디스크 4장을 준비하였다.

8TB 4장을  공식문서에서 권장하는데로 xfs으로 디스크 포맷을 진행 후 도커컴포즈를 작성하였다.

 

다음은 사용할 docer-compose.yml 구성이다

version: '3'
services:
  minio:
    image: quay.io/minio/minio:latest
    command: server /data{1...4} --console-address ":9001"
    container_name: minio
    environment:
      MINIO_ROOT_USER: admin
      MINIO_ROOT_PASSWORD: 12341234!
      CONSOLE_DEV_MODE: "on"
    restart: always
    #shm_size: '1gb'  # default는 64MB
    ports:
      - "9002:9000"    # minio 서비스 포트
      - "9001:9001"    # minio 콘솔 포트
    volumes: 
     - /mnt/bay0/minio_disk1:/data1  # 버킷 데이터 저장소 위치
      - /mnt/bay1/minio_disk2:/data2  # hdd2
      - /mnt/bay2/minio_disk3:/data3  # hdd3
      - /mnt/bay3/minio_disk4:/data4  # hdd4
      - ./minio:/root/.minio # 컨테이너 실행 데이터 위치

 

 MINIO_ROOT_USER: admin
 MINIO_ROOT_PASSWORD: 12341234!

 

부분에 원하는 루트 아이디 및 비밀번호 로 설정하여 생성 및 저장 후 

docker compose up -d 

를 통해 배포 실행

웹페이지(9001) 에 접속하여 세팅을 진행한다.

 

별도 인증서를 적용하여 https를 사용하고자 할경우  다음과 같은 인증서 파일 생성이 필요하다.

  • https://github.com/minio/certgen/releases/ 설치 후 인증서 생성=>(certgen -host "127.0.0.1, localhost")
  • 생성된 두개의 파일을 minio의 실행데이터폴더의 cert 폴더에 저장(구현한 서버 환경에서는 /home/keti/docker/minio/minio/certs/ 경로로 두개파일 저장)
  • 파일 저장후  도커 컨테이너 다시 시작 및 적용 
  • 적용 후 https로 접속

버킷 생성

좌측 메뉴에서 Buckets 클릭, 우측 상단 Create Bucket 클릭하여 버킷 정보 입력 창으로 이동

 

 

버킷 이름과 추가 설정 후 Create Bucket을 클릭하여 버킷 생성

 

 

 

사용자생성

  • 좌측 메뉴에서 Identity -> Users를 클릭하여 우측 상단 Create User 클릭
  • User 이름과 비밀번호, 기타 권한 옵션을 설정 후 유저 생성
     
     
    접근키 생성(코드에서 버킷에 저장된 파일 다운로드/업로드, minio간의 동기화에 사용됨)
    • 좌측 메뉴에서 Access Keys 클릭 후, 우측 상단 Ceate access key클릭
    • 자동으로 생성된 Access Key와 Secret Key를 메모장에 복사 후 저장하여 관리

 

minio 을 사용하여 기존 분석 코드등에서 보다 손쉽게 데이터 사용이 가능하다

+ Recent posts