문서번호 : 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.
$ 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 설치
▪
버전(tag) 확인 : https://github.com/minio/minio/tags
▪
설치 (예: 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 경로 오탈자 정정 및 설정 정리 |