Install Object Storage MinIO on CentOS 7

오픈소스 Object Storage MinIO 설치 가이드

MinIO 란?

오픈소스 Object Storage (오브젝트 스토리지)이며 Go 언어로 작성되었기 때문에 가볍고 빠르게 동작하는 것이 장점입니다. 설치 또한 매우 쉽게 바이너리 파일 한개를 다운로드 받는것으로 끝낼 수 있으며 개발자나 고급 사용자를 위한 컴파일 설치또한 Git 2.x 버전만 있으면 커맨드 한번으로 설치가 가능합니다.

Object Storage MinIO 는 Amazon S3 와 호환되기 때문에 개발자들은 AWS 에서 제공하는 S3 SDK 를 받아서 Endpoint 및 Region 만 추가해 주면 S3 와 똑같이 개발하실 수 있습니다. 이것은 기존에 S3 로 개발하던 소스를 수정없이 사용 가능 하고 그 반대도 된다는 뜻이 됩니다.

확인하실 점으로는 MinIO 는 AGPL v3 라이센스라는 점입니다. 자세한 설명은 MinIO 공식 페이지에서 확인해 주시기 바랍니다.

minio-browser
MinIO 브라우저 Mode 화면

MinIO 서버

MinIO 는 MinIO 서버와 MinIO 클라이언트 두개로 구성되어 있습니다. 단순 테스트만을 위해서는 서버만 설치해도 되지만 관리를 위해 클라이언트도 설치하는 것을 반드시 권장합니다.

MinIO 서버 설치 예시

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

MinIO 서버 실행 예시

MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password ./minio server /mnt/data

위와 같이 바이너리 파일을 다운 받은 후 간단하게 ACCESS_KEY 와 SECRET_KEY 입력을 하고 데이타로 사용할 디렉토리만 명시해 주면 실행됩니다. 물론 프로덕션 환경에서 실행하기 위해서는 환경설정 파일을 만들고 systemd 에 등록하여 사용하는 것을 권장 합니다.

아래는 MinIO 단일구성 환경에서 설치하는 방법에 대해 간단히 정리한 내용입니다. (분산구성 환경에서의 설치는 조금 다르기 때문에 나중에 가이드 문서를 따로 작성 하겠습니다.)

사용자 및 그룹 생성

[root@10-19-11-220 /]# groupadd --gid 991 minio
[root@10-19-11-220 /]# useradd -M -r --gid 991 -s /sbin/nologin --uid 991 minio

MinIO Working Directory 생성

MinIO 는 클라이언트 커맨드를 통해 최신 버전으로 업데이트를 하거나 분산환경 구성일때 다른 노드들을 제어할 수 있습니다. 이때 MinIO 에서 read/write 가능한 권한이 있어야 하므로 /usr/bin 또는 /usr/local/bin 에 설치하기 보다는 별도의 디렉토리에 설치하는 것을 권장합니다.

[root@10-19-11-220 /]# mkdir -p /usr/local/minio/bin
[root@10-19-11-220 /]# cd /usr/local/minio/bin/
[root@10-19-11-220 bin]# wget https://dl.min.io/server/minio/release/linux-amd64/minio
[root@10-19-11-220 bin]# chmod +x minio

환경설정 파일 작성
: vi /usr/local/minio/minio

MINIO_ACCESS_KEY="root"              # 필수값: Root 자격증명 (이름이 꼭 root 일 필요는 없습니다.)
MINIO_SECRET_KEY="password12#$56&*"  # 필수값: Root 자격증명의 secret key
MINIO_VOLUMES="/data/storage"        # 필수값: 데이터가 저장될 데이터 디렉토리
MINIO_OPTS='127.0.0.1:9100'          # 필수값: 바인딩 아이피 및 포트
MINIO_BROWSER=off                    # 선택값: MinIO 브라우저 사용유무 (프로덕션에서는 off 권장)
MINIO_REGION_NAME=pangyo-south-1     # 선택값: 리전명

ACCESS_KEY, SECRET_KEY, VOLUMES, OPTS 4개는 필수 항목입니다.

BROWSER 옵션을 ON 으로 주시면 WEB UI 화면을 보실 수 있습니다. WEB UI 에서는 버킷생성, 삭제, 업로드, 다운로드 등의 간단한 기능만 제공되며 대부분의 관리는 MinIO 클라이언트를 이용합니다.  보안상의 문제로라도 여지를 주지 않기 위해 프로덕션 환경에서는 OFF 하는 것을 권장합니다. 리전명은 원하시는대로 설정하시면 됩니다. 저는 AWS 스럽게 한번 만들어 봤습니다. 이 외에도 설정할 수 있는 환경 변수는 매우 많으며, 더 자세한 내용은 MinIO Document 페이지를 참고 해 주시기 바랍니다.

작성 후 디렉토리 및 파일 전체를 minio 계정 소유자로 변경합니다.

[root@10-19-11-220 bin]# chown minio.minio -Rf /usr/local/minio
[root@10-19-11-220 bin]# chown minio.minio -Rf /data/storage

systemd 생성
: vi /usr/lib/systemd/system/minio.service

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

[Service]
WorkingDirectory=/usr/local/minio/

User=minio
Group=minio

PermissionsStartOnly=true

EnvironmentFile=/usr/local/minio/minio
ExecStartPre=/bin/bash -c "[ -n \"${MINIO_VOLUMES}\" ] || echo \"Variable MINIO_VOLUMES not set in /usr/local/minio/minio\""

ExecStart=/usr/local/minio/bin/minio server --address $MINIO_OPTS $MINIO_VOLUMES

StandardOutput=journal
StandardError=inherit

# Let systemd restart this service always
Restart=always

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

# 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

systemd 등록 및 실행

[root@10-19-11-220 bin]# systemctl enable minio
[root@10-19-11-220 bin]# systemctl start minio
[root@10-19-11-220 bin]# systemctl status minio

MinIO 클라이언트

MinIO 클라이언트는 바이너리 파일명이 mc 이므로 mc 라고 부르겠습니다. mc 는 MinIO 뿐 아니라 gcs, s3, 외부에 있는 원격지 MinIO 서버까지 관리할 수 있게 설계 되었습니다. MinIO 는 서버만 설치되어 있다면 s3cmd 혹은 aws cli 등을 이용해서 관리해도 상관없으나 mc 를 이용하는 것이 더 빠르고 MinIO 자체 기능들을 사용할 수 있기 때문에 mc 를 이용하는 것을 권장합니다. mc 는 버킷 관리 부터 정책 관리, 서버 관리 등 아주 많은 기능들이 들어 있으며 이 가이드에서는 아주 간단한 것들만 다루도록 하겠습니다. 자세한 내용은 MinIO Document 를 참고해 주시기 바랍니다.

MinIO 클라이언트 설치 예시

wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc

mc 의 경우 서버와는 다르게 단일 파일 실행으로 모든 커맨드가 가능하므로 다른 설정은 필요없고 편하게 사용하기 위해 기본 PATH 로 설정되어 있는 /usr/bin/ 아래로 옮겨 두셔도 됩니다. 이 가이드를 따라 하셨다면 서버를 설치하실 때 바인드 주소를 127.0.0.1 로 설정했기 때문에 원격지 관리가 되지 않습니다. 그래서 반드시 mc 는 MinIO 서버가 설치된 서버에 설치해 주시기 바랍니다.

[root@10-19-11-220 /]# wget https://dl.min.io/client/mc/release/linux-amd64/mc
[root@10-19-11-220 /]# chmod +x mc
[root@10-19-11-220 /]# mv mc /usr/bin/
[root@10-19-11-220 /]# mc --help

mc 호스트 별칭 추가

mc 에는 기본적으로 gcs, local, play, s3 4가지의 호스트 별칭이 추가되어 있습니다. 지금은 아무 의미 없으니 그냥 삭제 해 줍니다.

[root@10-19-11-220 /]# mc config host remove gcs
[root@10-19-11-220 /]# mc config host remove local
[root@10-19-11-220 /]# mc config host remove play
[root@10-19-11-220 /]# mc config host remove s3

MinIO 서버를 mc 로 관리하기 위해서는 mc 호스트 별칭을 추가해 주어야만 해당 별칭을 통해 관리가 가능해 집니다. 아래와 같은 식으로 호스트 별칭 추가가 가능합니다. 이 가이드에서는 별칭명을 local 로 설정하였습니다.

mc config host add [HOST Alias] http://127.0.0.1:9000 [access_key] [secret_key]
[root@10-19-11-220 /]# mc config host add local http://127.0.0.1:9100 root password12#$56&*

아래 커맨드를 이용하여 list 를 확인해 봅니다.

[root@10-19-11-220 /]# mc config host list
local
URL : http://127.0.0.1:9100
AccessKey : root
SecretKey : password12#$56&*
API : s3v4
Path : auto

아래는 간단하게 mc 를 이용하여 사용자 및 정책 등을 관리하는 예시 입니다. 더 자세한 내용은 mc help 를 이용하거나 Document 확인을 해 보시기 바랍니다.

사용자 추가 (그룹은 user 대신 group 으로 변경)

mc admin user add [HOST Alias] [계정] [비밀버호]
mc admin user add local fallboyz password1234

사용자 비활성화

mc admin user disable [HOST Alias] [계정]
mc admin user disable local fallboyz

사용자 제거

mc admin user remove [HOST Alias] [계정]
mc admin user remove local fallboyz

정책 추가

mc admin policy add [HOST Alias] [정책이름] [정책파일]
mc admin policy add local first-policy policy1.json

정책 맵핑

mc admin policy set [HOST Alias] [정책이름] user=[계정]
mc admin policy set local first-policy user=fallboyz

사용자 리스트

mc admin user list [HOST Alias]
mc admin user list local

버킷 정책 리스트

mc admin policy list [HOST Alias]
mc admin policy list local

버킷 정책 확인

mc admin policy info [HOST Alias] [정책이름]
mc admin policy info local first-policy

Tip 1. MinIO 서버는 SSL 을 지원 합니다. 흔히 알려진 Let’s Encrypt 를 이용하여 자동화 할 수도 있습니다.

Tip 2. 리버스 프록시를 이용할 수 있습니다. Caddy, Nginx, Apache 등을 이용하시면 되며, 저는 Nginx 를 이용하였습니다.

간단하게 MinIO 서버와 클라이언트 설치법에 대해 알아봤습니다. 다음엔 MinIO 의 분산모드 환경으로 설치하는 방법에 대해서 한번 간단히 알아보도록 하겠습니다.

You may also like...

Subscribe
Notify of
guest

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x