설명
- 오픈 소스로 제공되는 분산 스토리지 솔루션
- 파일이나 블록 스토리지를 지원하지 않고 오브젝트 스토리지 형태로 제공되며 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 |