JUST WRITE

What is MinIO? 본문

Data

What is MinIO?

천재보단범재 2022. 10. 20. 14:11

MinIO

What is MinIO

MinIO는 분산 Object Storage이다.

Open Source로 Private Cloud에 적합한 S3 성격의 Storage이다.

Go 언어로 개발되었으며 Docker Image도 1억건 이상 pull한 유명한 Storage이다.

사진, 비디오, Log 등 비정형화된 데이터 저장에 적합하다.

특징

  • S3 API 호환
  • Erasure Coding을 통한 보안성 강화
  • Kubernetes 환경에서 설치 가능
  • Horizontal and Vertical scaling
  • MinIO Console이라는 Web UI 제공
  • High availability(고가용성)

출처: https://min.io/docs/minio/kubernetes/upstream/

MinIO 설치

MinIO Server 설치

Standalone 환경에서 설치를 진행하였다.
MinIO User를 먼저 생성합니다.

groupadd minio
useradd -m -g minio minio
passwd minio

MinIO Server를 Download합니다.

su minio
cd ~
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio

# ~/.local/bin 폴더로 이동
mkdir -p ~/.local/bin
mv minio ~/.local/bin

MinIO storage 폴더와 설정파일을 세팅합니다.

# Storage 및 설정 폴더 생성
mkdir -p ~/minio/data
mkdir -p ~/minio/conf

# 설정파일 생성
vi ~/minio/conf/minio

# ~/minio/conf/mino 파일
MINIO_ACCESS_KEY="minio"
MINIO_VOLUMES="/home/minio/minio/data"
MINIO_OPTS="-C /home/minio/minio/conf --address :9000 --console-address :9001"
MINIO_SECRET_KEY="secret-key"

설정 파일에 세팅하는 값은 아래와 같다.

  • MINIO_ACCESS_KEY -> MinIO에 접근할 수 있는 access-key
  • MINIO_VOLUMES -> MinIO Storage 폴더 경로
  • MINIO_OPTS -> MinIO 실행 옵션
    • -C -> MinIO 설정 폴더 경로
    • --address -> MinIO Server IP, Port 설정
    • --console-address -> MinIO Console UI IP, Port 설정
  • MINIO_SECRET_KEY -> MinIO에 접근할 수 있는 secret-key

MinIO Service 파일을 생성한다.

sudo vi /etc/systemd/system/minio.service

# minio.service 파일
[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/home/minio/.local/bin/minio

[Service]
User=minio
Group=minio
ProtectProc=invisible

EnvironmentFile=/home/minio/minio/conf/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /home/minio/minio/conf/minio\"; exit 1; fi"
ExecStart=/home/minio/.local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES

# Let systemd restart this service always
Restart=always

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=1048576

# Specifies the maximum number of threads this process can create
TasksMax=infinity

# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no

[Install]
WantedBy=multi-user.target

# Built for ${project.name}-${project.version} (${project.name})

Service 생성 후 Service를 실행한다.

sudo systemctl daemon-reload
sudo systemctl enable minio
sudo systemctl start minio
sudo systemctl status minio

# minio service status
● minio.service - MinIO
   Loaded: loaded (/etc/systemd/system/minio.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2022-10-20 06:52:28 UTC; 12min ago
     Docs: https://docs.min.io
  Process: 832 ExecStartPre=/bin/bash -c if [ -z "${MINIO_VOLUMES}" ]; then echo "Variable MINIO_VOLUMES not set in /home/minio/minio/conf/minio"; exit 1; fi (code=exited, status=0/SUCCESS)
 Main PID: 834 (minio)
   CGroup: /system.slice/minio.service
           └─834 /home/minio/.local/bin/minio server -C /home/minio/minio/conf --address :9000 --console-address :9001 /home/minio/minio/data

Oct 20 06:52:28 ip-172-31-26-44.ap-northeast-2.compute.internal minio[834]: MinIO Object Storage Server
Oct 20 06:52:28 ip-172-31-26-44.ap-northeast-2.compute.internal minio[834]: Copyright: 2015-2022 MinIO, Inc.
Oct 20 06:52:28 ip-172-31-26-44.ap-northeast-2.compute.internal minio[834]: License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html>
Oct 20 06:52:28 ip-172-31-26-44.ap-northeast-2.compute.internal minio[834]: Version: RELEASE.2022-10-15T19-57-03Z (go1.18.7 linux/amd64)
Oct 20 06:52:28 ip-172-31-26-44.ap-northeast-2.compute.internal minio[834]: Status:         1 Online, 0 Offline.
Oct 20 06:52:28 ip-172-31-26-44.ap-northeast-2.compute.internal minio[834]: API: http://172.31.26.44:9000  http://127.0.0.1:9000
Oct 20 06:52:28 ip-172-31-26-44.ap-northeast-2.compute.internal minio[834]: Console: http://172.31.26.44:9001 http://127.0.0.1:9001
Oct 20 06:52:28 ip-172-31-26-44.ap-northeast-2.compute.internal minio[834]: Documentation: https://min.io/docs/minio/linux/index.html
Oct 20 06:52:29 ip-172-31-26-44.ap-northeast-2.compute.internal minio[834]: You are running an older version of MinIO released 4 days ago
Oct 20 06:52:29 ip-172-31-26-44.ap-northeast-2.compute.internal minio[834]: Update: Run `mc admin update`

MinIO 실행시 설정한 Console IP, Port로 들어가본다.

예시에서는 9001포트로 Console Web UI를 실행하였다.

Username에는 ACCESS-KEY, Password에는 SCRET-KEY를 입력해서 로그인한다.

정상적으로 설치된 것을 확인할 수 있다.

728x90
반응형

'Data' 카테고리의 다른 글

AWS EC2 Nifi 설치  (0) 2022.11.23
What is Nifi  (0) 2022.11.21
What is YARN  (0) 2022.03.27
What is MapReduce  (0) 2022.03.26
What is HDFS  (0) 2022.03.25
Comments