설명

  • 오픈 소스로 제공되는 분산 스토리지 솔루션
  • 파일이나 블록 스토리지를 지원하지 않고 오브젝트 스토리지 형태로 제공되며 Amazon S3 클라우드 스토리지 서비스와 완벽하게 호환되기 때문에 AWS S3 SDK를 사용할 수 있음.
  • 파일에 대한 직접적인 수정은 불가능하며 항상 덮어쓰는 overwrite 방식이 사용됨
  • S3 스토리지로 마이그레이션 하더라도 애플리케이션 코드를 수정할 필요가 없음
  • 노드 연결을 통한 용량 확장 가능
  • 파이썬에서 boto, minio 등의 s3호환 라이브러리를 사용하여 코드에서 직접 파일에 접근 가능

 

  • 데이터 중복 수준을 설정할 수 있고, 설정된 중복 수준으로 데이터 및 패리티 블록으로 분산 저장한다.
  • web UI를 제공해서 편리하게 관리할 수 있다.
  • 고가용성이다. 스토리지 클러스터를 구축하여 데이터의 용량과 처리 능력을 확장하고 데이터를 분산하여 저장 및 복제한다.
  • kubernetes 환경에서 손쉽게 설치가 가능함
  • 전송 중인 데이터를 암호화하거나 데이터를 암호화하여 보관할 수 있다.

 

Minio를 사용하게 된 목적은 서버와 user마다 경로를 수정(상대경로)해야하는 불편함을 개선하고자 사용했다. 

Minio로 절대경로를 사용함으로써 모든 서버와 user에서 동일한 경로에서 진행이 가능해 훨씬 편리해졌다. 또한 데이터 전처리 및 분석으로 발생하는 데이터를 로컬에 저장하여 DB에 따로 저장해야하는 번거로움을 없애고 바로 minio에 업로드하여 처리 시간을 줄일 수 있었다. 

 

구축

  • 설치: 독립환경을 위해 docker 사용

1. docker-compse.yml 파일 작성

  •  다중 디스크 사용 (권장 사항: 데이터 안정성 및 속도를 위해 디스크 4개 사용
  • 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: 사용자 지정
          MINIO_ROOT_PASSWORD: 사용자 지정
          MINIO_PROMETHEUS_JOB_ID: minio-job
          MINIO_PROMETHEUS_URL: "http://~~~~~~~~"
          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 # 컨테이너 실행 데이터 위치

2. 컨테이너 실행

docker-compose up -d​

 

3. web UI 접속

  • http://localhost:9001로 접속하면 아래와 같이 웹 화면을 확인 가능 (접속 계정은 docker-compose.yaml 파일에 기재한 정보로 로그인)
  • 1. 내부용 TLS 자체서명 인증서 생성
    • https://github.com/minio/certgen/releases/ 설치 후 인증서 생성=>(certgen -host "127.0.0.1, localhost")
    • 생성된 두개의 파일을 minio의 실행데이터폴더의 cert 폴더에 저장(구현한 서버 환경에서는 /home/keti/docker/minio/minio/certs/ 경로로 두개파일 저장)
    • 파일 저장후,  도커 컨테이너 다시 시작 및 적용 
  • 적용 후 서버에서 http://localhost:9001 접속 or 포트포워딩 후, 웹 url 접속
  • 버킷 생성 - 좌측 메뉴에서 Buckets 클릭, 우측 상다 create bucket 클릭
  • 버킷 이름과 추가 설정 후 버킷 생성
  • 사용자 생성 - 좌측 메뉴에서 Identity -> user 이름과 비밀번호, 기타 권한 옵션 설정 후 유저 생성
  • 접근키 생성- 좌측 메뉴에서 Access Keys (코드에서 버킷에 저장된 파일 다운로드/업로드, minio간의 동기화에 사용됨)
  • 자동으로 생성된 Access key와 Secrete key 메모장에 복사 후 저장 및 관리
  • 버킷별 정책생성(삭제주기등등)
    • 별도의 클라이언트를 통하여 파일 접근가능
    • cyberduck(https://cyberduck.io/)
    • 다양한 프로토콜 지원(ftp, s3, nextcloud 등등), 필요시 사용

'Language & OS > DB' 카테고리의 다른 글

DBeaver 설치 및 사용방법  (0) 2024.05.20
SQL과 NoSQL의 차이  (0) 2023.01.13
[DB] docker container를 활용해 MongoDB에 데이터 입력하기  (0) 2022.11.22
[DB] mongoDB 기본 개념  (1) 2022.11.18

+ Recent posts