Search
Duplicate

MinIO를 이용한 Object Storage 구성

문서번호 : 59-401150

Document Information

최초 작성일 : 2022.08.02
최종 수정일 : 2023.10.23
이 문서는 아래 버전을 기준으로 작성되었습니다.
MinIO

Goal

Self-hosting 방식으로 object storage 를 구현할 수 있는 minio server의 설치 절차에 대해 살펴 본다.

Solution

예제를 통해, Redhat 계열에 직접 설치하는 절차만을 알아본다.
유의사항 : 기본 포트 변경 MinIO Server의 기본 포트는 9000(server)/9090(console) 이지만, 본 문서에서는 30191, 30192 포트 사용으로 작성되었다.

1. MinIO Server 설치

root 유저 또는 sudo 권한이 필요하다.
1.
Download (최신버전) https://min.io/download#/linux 에서 architecture에 맞는 설치 파일을 download한다.
$ wget https://dl.minio.io/server/minio/release/linux-amd64/minio
Bash
복사
(참고) 이전버전 생성 방법
go 설치
https://go.dev/dl/ 에서 직접 다운로드 또는 [링크 주소 복사]하여 wget 이용
$ wget https://go.dev/dl/go1.20.6.linux-amd64.tar.gz
Bash
복사
압축 해제 및 PATH 설정
$ sudo tar -C /usr/local -xzf go1.20.6.linux-amd64.tar.gz # PATH 설정 (현재 쉘에 적용) $ export PATH=$PATH:/usr/local/go/bin # PATH 설정 (영구 설정; 필요시) $ vi ~/.bash_profile
Bash
복사
MinIO 설치
설치 (예: RELEASE.2023-04-20T17-56-55Z)
mino 바이너리 생성 디렉토리 : $GO_BIN으로 설정하였거나, 기본 $HOME/go/bin 에 생성됨
$ go install github.com/minio/minio@RELEASE.2023-04-20T17-56-55Z
Bash
복사
바이너리 이동 (예: /usr/local/bin) 유의) 아래 [2. 권한 설정 및 디렉토리 이동] 절차와 겹침
$ sudo mv $HOME/go/bin/minio /usr/local/bin
Bash
복사
2.
권한 설정 및 디렉터리 이동
$ chmod +x minio $ sudo mv minio /usr/local/bin # SELINUX가 활성화 된경우 필요 $ sudo restorecon -v /usr/local/bin/minio
Bash
복사
3.
파일들을 관리할 OS 그룹 및 유저 생성
시스템 그룹, 계정으로 생성하는 예시이며, 필요시 일반 계정으로 생성해도 된다.
# -r : system account $ sudo groupadd -r minio-user # -M : no-create-home / -r : system account $ sudo useradd -M -r -g minio-user minio-user
Bash
복사
4.
파일들을 관리할 디렉터리 생성
아래는 /data/minio를 예로 들었습니다. 운영환경 또는 장시간 테스트 목적이라면 분리된 파일 시스템 사용을 권장한다.
$ sudo mkdir /data/minio $ sudo chown -R minio-user:minio-user /data/minio/
Bash
복사
5.
설정 파일 생성 (선택) 및 방화벽 오픈
설정 파일 생성
변수명
설명
MINIO_VOLUMES
minio 서버에 사용할 스토리지 볼륨 또는 경로
MINIO_OPTS
minio 서버와 콘솔에 대한 address. (서버의 default port: 9000, 9090) 본 예시에서는 30191, 30192 사용
MINIO_ACCESS_KEY
minio 접속 아이디
MINIO_SECRET_KEY
minio 접속 비밀번호
address에 사용할 IP는 해당 시스템의 정보로 대체한다.
$ sudo vi /etc/default/minio MINIO_VOLUMES="/data/minio/" # default 일 경우 MINIO_OPTS 생략 가능 MINIO_OPTS="--address 192.168.219.107:30192 --console-address 192.168.219.107:30191" MINIO_ACCESS_KEY=minioadmin MINIO_SECRET_KEY=minioadmin
Bash
복사
방화벽 오픈 (사용 port 확인 필요)
# default # sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp # server # sudo firewall-cmd --permanent --zone=public --add-port=9090/tcp # console $ sudo firewall-cmd --permanent --zone=public --add-port=30191/tcp $ sudo firewall-cmd --permanent --zone=public --add-port=30192/tcp $ sudo firewall-cmd --reload
Bash
복사
6.
Systemd 등록
자신의 환경에 맞게, minio.sevice 파일을 수정한다.
$ sudo vi /etc/systemd/system/minio.service [Unit] Description=MinIO Documentation=https://min.io/docs/minio/linux/index.html Wants=network-online.target After=network-online.target AssertFileIsExecutable=/usr/local/bin/minio [Service] WorkingDirectory=/usr/local User=minio-user Group=minio-user ProtectProc=invisible EnvironmentFile=-/etc/default/minio ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi" ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES # MinIO RELEASE.2023-05-04T21-44-30Z adds support for Type=notify (https://www.freedesktop.org/software/systemd/man/systemd.service.html#Type=) # This may improve systemctl setups where other services use `After=minio.server` # Uncomment the line to enable the functionality # Type=notify # 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
Bash
복사
7.
Minio Service 기동 및 관리
참고 사항 다음과 같은 에러 발생시 SELINUX에 의한 minio 실행파일의 권한 문제이며, sudo restorecon -v /usr/local/bin/minio 명령을 실행한다. Main PID: 54712 (code=exited, status=203/EXEC)
# 서비스 기동 $ sudo systemctl start minio.service # 서비스 중단 $ sudo systemctl start minio.service # 서비스 활성화 (시스템 시작시 자동 기동) $ sudo systemctl enable minio.service # service 변경시 서비스 갱신 $ sudo systemctl daemon-reload # service 상태 확인 $ sudo systemctl status minio.service
Bash
복사

2. MinIO Client 설치

방법 1 : 모든 OS 유저가 사용할 수 있도록 설치 (root 권한 필요)
$ sudo curl https://dl.min.io/client/mc/release/linux-amd64/mc \ -o /usr/local/bin/mc $ sudo chmod +x /usr/local/bin/mc
Bash
복사
방법 2 : 특정 OS 유저만 사용하도록 설치
$ curl https://dl.min.io/client/mc/release/linux-amd64/mc \ --create-dirs \ -o $HOME/minio-binaries/mc $ chmod +x $HOME/minio-binaries/mc $ export PATH=$PATH:$HOME/minio-binaries/ $ mc --help # PATH 설정 $ vi .bash profile export PATH=$PATH:$HOME/minio-binaries/
Bash
복사

3. alias 생성

master_minio 라는 alias를 생성하는 방법이다.
# 보안을 위해 # 새로운 쉘을 생성하여 history가 남기지 않도록 설정 (현재 쉘 설정 유지를 위해 쉘 생성) $ bash +o history $ mc alias set master_minio http://192.168.1.200:30192 minioadmin minioadmin $ exit
Bash
복사

4. 버킷 생성

singlestore 라는 이름의 버킷을 생성하는 방법이다.
$ mc mb master_minio/singlestore
Bash
복사

References

History

일자
작성자
비고
2022.08.02
wee
최초 작성
2022.09.23
jnshin
문서번호 정정. MINIO_VOLUMES 값에 대한 안내 문구 추가.
2023.07.05
kkh
내용 정리
2023.10.23
kkh
/etc/default/minio 경로 오탈자 정정 및 설정 정리