minio object storage 구축

MinIO는 GNU Affero General Public License v3.0에 따라 출시 된 고성능 개체 스토리지이며 Amazon S3 클라우드 스토리지 서비스와 API와 완벽하게 호환된다.

자세한 정보는 minio 홈페이지에서 확인할 수 있다.

설치
yum 등을 이용해서 설치도 가능하지만 quick-guide 페이지를 참조해 바이너리를 다운 받아 구동해본다.

haedong@haedong:~:]$ wget --no-check-certificate https://dl.min.io/server/minio/release/linux-amd64/minio
--2021-08-18 16:10:33--  https://dl.min.io/server/minio/release/linux-amd64/minio
...중략...
Proxy request sent, awaiting response... 200 OK
Length: 91971584 (88M) [application/octet-stream]
Saving to: ‘minio’
100%[==========================================================================================>] 91,971,584  17.4MB/s   in 5.3s
2021-08-18 16:10:39 (16.6 MB/s) - ‘minio’ saved [91971584/91971584]

구동

구동이 먼저 나온 이유는, 배포되는 minio 파일이 바로 실행파일이기 때문이다. 기본 옵션 플래그만 붙여서 실행하면 싱글노드 구동은 즉시 가능하다. 데이터가 저장될 디렉토리를 생성하고 서비스를 실행해보자. 딱히 설정파일 등을 만들 필요 없이 명령 한줄로 실행된다.

haedong@haedong:~:]$ mkdir data
haedong@haedong:~:]$ chmod 700 minio
#755 등을 줘도 무방하다.
haedong@haedong:~:]$ ./minio server --address :9000 --console-address :9090 /home/haedong/data
API: http://192.168.192.168:9000  http://127.0.0.1:9000
RootUser: minioadmin
RootPass: minioadmin

Console: http://192.168.192.168:9090 http://127.0.0.1:9090
RootUser: minioadmin
RootPass: minioadmin

Command-line: https://docs.min.io/docs/minio-client-quickstart-guide
   $ mc alias set myminio http://172.17.172.110:9000 minioadmin minioadmin

Documentation: https://docs.min.io
WARNING: Detected default credentials 'minioadmin:minioadmin', we recommend that you change these values with 'MINIO_ROOT_USER' and 'MINIO_ROOT_PASSWORD' environment variables

갤러리 추가

표준 출력으로 출력된 RootUser 는 username, RootPass는 password로 하여 서비스 콘솔에 접속할 수 있다. 로그인 이후 접속을 위한 endpoint access key를 생성하거나 Bucket을 생성하고 웹 UI를 통해 데이터를 업로드할 수 있다.

멀티 노드 구성
싱글노드와 달리 몇가지 정보를 추가해 주는 것이 관리에 용이하다.
minio 디렉토리를 생성하고 관리를 위한 정보들을 추가한 구동 스크립트를 생성하자.
vi ~/minio/start.sh

#!/bin/bash

MINIO_HOME=$HOME/minio
MINIO_BIN_DIR=$MINIO_HOME/bin
MINIO_DATA_DIR=$MINIO_HOME/data
MINIO_LOG_DIR=$MINIO_HOME/logs
export MINIO_ROOT_USER=haedonggang
export MINIO_ROOT_PASSWORD=haedonggang
LOG_FILE=$MINIO_LOG_DIR/minio.log
# 꼭 위와 같은 변수를 사용할 필요는 없지만 변수들을 이용해 설정을 해 두면 관리가 용이하다.

# host01 부터 host04까지 4개의 노드를 활용하는 경우
nohup $MINIO_BIN_DIR/minio server --address :9000 --console-address :9090 http://host01$MINIO_DATA_DIR http://host02$MINIO_DATA_DIR http://host03$MINIO_DATA_DIR http://host04$MINIO_DATA_DIR >> $LOG_FILE &


MINIO_PID=$!
if [ ! -z $MINIO_PID ] ; then
echo "$MINIO_PID" > minio.pid
fi

이후 각 노드에서 start.sh 스크립트를 이용해 서비스를 구동하면 된다. 딱히 마스터의 개념은 없으므로 각각 노드에서 스크립트를 한 번씩 실행하자.

이후 싱글노드 구성에서와 같이 9090포트를 이용해 접속하면 된다. 다만 노드가 4개이므로 어느 노드에 접속해도 동일한 화면을 확인할 수 있다.

댓글 남기기