안녕하세요 가야태자 @talkit 입니다.
요즘 진짜로 여러가지를 다뤄보고 이야기 해보고 있습니다.
오늘 설치해보려고 하는 minIO는 오픈소스 오브젝트 스토리지 소스이자 서비스입니다. 그리고 가장 재미 있는 것은 아마존의 S3와 호환이 됩니다.
그래서 S3에 있는 데이타를 minIO 서비스로 이전하거나 심지어 minIO 셀프호스트 서버로 이전이 가능 합니다.
node js client가 동일하게 동작 합니다. ^^
MinIO | High Performance, Kubernetes Native Object Storage
저도 많이 써보지는 못해서 위 URL에 잘 설명 되어 있습니다. ^^
이제 본격적으로 설치를 시작해보겠습니다.
일단 Single Node와 Multi Node가 있습니다.
여기서 저는 Single Node 정말 간단하게 테스트를 해볼 것이라서 ^^
Single Node에는 Single-Drive와 Multi-Drive가 있습니다.
이것도 현재는 Single-Drive를 생각하고 있습니다.
일단 Single Node에 Single-Drive를 만들어 보고 좋으면 Multi로 넘어가던지 해야 할 것 같습니다.
오늘은 설치에 매진 하겠습니다.
minIO 서버 다운로드
저는 현재 Ubuntu를 사용하고 있어서
wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20230102094009.0.0_amd64.deb -O minio.deb
sudo dpkg -i minio.deb
이렇게 치라고 하네요 ^^ 해보겠습니다.
저는 거의 매일 접속하는 것 같습니다.
제 VM에 있는 Ubuntu 서버에 접속 합니다.
접속은 잘 되었고, 다운로드를 했는데 잘 되었습니다. ^^
wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20230102094009.0.0_amd64.deb -O minio.deb
--2023-01-05 03:39:47-- https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20230102094009.0.0_amd64.deb
Resolving dl.min.io (dl.min.io)... 178.128.69.202, 138.68.11.125
Connecting to dl.min.io (dl.min.io)|178.128.69.202|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 38937942 (37M) [application/vnd.debian.binary-package]
Saving to: ‘minio.deb’
minio.deb 100%[===================>] 37.13M 408KB/s in 3m 14s
2023-01-05 03:43:02 (196 KB/s) - ‘minio.deb’ saved [38937942/38937942]
위와 같이 잘 나오고 있습니다.
설치도 한번 해보겠습니다.
다음에는 도커로도 설치를 해보겠지만, 일단 오늘은 도커 말고, deb파일로 설치를 진행 합니다.
sudo dpkg -i minio.deb
[sudo] password for talkit:
Selecting previously unselected package minio.
(Reading database ... 161767 files and directories currently installed.)
Preparing to unpack minio.deb ...
Unpacking minio (20230102094009.0.0) ...
Setting up minio (20230102094009.0.0) ...
이번에도 잘 설치가 됩니다.
systemd 파일은
vi /etc/systemd/system/minio.service
여기에 잘 설치가 되었습니다.
현재 저는 Deploy MinIO: Single-Node Single-Drive — MinIO Object Storage for Linux
저 문서를 보고 따라하고 있습니다.
minIO 서버는 minio-user에 의해서 구동 된다네요 그래서 minio-user 를 만들어라고 합니다. ^^
groupadd -r minio-user
useradd -M -r -g minio-user minio-user
chown minio-user:minio-user /mnt/disk1 /mnt/disk2 /mnt/disk3 /mnt/disk4
여기서 디렉토리는 예제라서 minIO가 사용할 디렉토리를 저렇게 해주시면 됩니다.
[Unit]
Description=MinIO
Documentation=https://docs.min.io
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
# 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})
자동으로 설치된 min는 저기 보시다 싶이 minio-user에 의해서 동작하고 있습니다.
저희는 싱글로 설치 할꺼라서 ^^ 계속 이문서를 따라 하겠습니다.
sudo vi /etc/default/minio
저기에 기본 설정 파일이 있다고 합니다.
한번 보겠습니다.
실제로 없네요 ㅋㅋㅋ
# MINIO_ROOT_USER and MINIO_ROOT_PASSWORD sets the root account for the MinIO server.
# This user has unrestricted permissions to perform S3 and administrative API operations on any resource in the deployment.
# Omit to use the default values 'minioadmin:minioadmin'.
# MinIO recommends setting non-default values as a best practice, regardless of environment
MINIO_ROOT_USER=myminioadmin
MINIO_ROOT_PASSWORD=minio-secret-key-change-me
# MINIO_VOLUMES sets the storage volume or path to use for the MinIO server.
MINIO_VOLUMES="/mnt/data"
# MINIO_SERVER_URL sets the hostname of the local machine for use with the MinIO Server
# MinIO assumes your network control plane can correctly resolve this hostname to the local machine
# Uncomment the following line and replace the value with the correct hostname for the local machine.
#MINIO_SERVER_URL="http://minio.example.net"
가장 간단한 예제 파일 입니다.
vi 편집기로 저는 그대로 ^^ 붙여 넣었습니다.
일단 위에 보면 /mnt/data를 사용하네요
sudo mkdir -p /mnt/data
sudo chown -R minio-user:minio-user /mnt/data
권한을 해당 사용자에게 주었습니다.
MINIO_ROOT_USER=myminioadmin
MINIO_ROOT_PASSWORD=minio-secret-key-change-me
위 두줄은 수정 하시는 것이 좋답니다. ^^
저도 보안 권고를 받을때 amdin 이런 단순한 아이디를 사용하지 않아야 한다고 보안 권고를 받는 경우가 많아서요.
여기 문서에서도 기본 말고 다른것으로 사용하랍니다.
저는 제가 변경 했습니다.
여러분도 여러분이 원하는 아이디 비밀번호로 변경 하십시오.
변경 했으면 한 번 켜 보겠습니다.
sudo systemctl start minio.service
sudo systemctl status minio.service
● minio.service - MinIO
Loaded: loaded (/etc/systemd/system/minio.service; disabled; vendor preset: enabled)
Active: active (running) since Thu 2023-01-05 04:07:06 PST; 8s ago
Docs: https://docs.min.io
Process: 3057 ExecStartPre=/bin/bash -c if [ -z "${MINIO_VOLUMES}" ]; then echo "Variable MINIO_VOLUMES not set in /etc/default/minio"; exit 1; fi (code=exited, status=0/SUCCESS)
Main PID: 3058 (minio)
Tasks: 21
Memory: 88.8M
CGroup: /system.slice/minio.service
└─3058 /usr/local/bin/minio server /mnt/data
Jan 05 04:07:06 ubuntu minio[3058]: WARNING: Host local has more than 0 drives of set. A host failure will result in data becoming unavailable.
Jan 05 04:07:06 ubuntu minio[3058]: Warning: Default parity set to 0. This can lead to data loss.
Jan 05 04:07:06 ubuntu minio[3058]: MinIO Object Storage Server
Jan 05 04:07:06 ubuntu minio[3058]: Copyright: 2015-2023 MinIO, Inc.
Jan 05 04:07:06 ubuntu minio[3058]: License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html>
Jan 05 04:07:06 ubuntu minio[3058]: Version: RELEASE.2023-01-02T09-40-09Z (go1.19.4 linux/amd64)
Jan 05 04:07:06 ubuntu minio[3058]: Status: 1 Online, 0 Offline.
Jan 05 04:07:06 ubuntu minio[3058]: API: http://192.168.0.27:9000 http://127.0.0.1:9000
Jan 05 04:07:06 ubuntu minio[3058]: Console: http://192.168.0.27:44313 http://127.0.0.1:44313
Jan 05 04:07:06 ubuntu minio[3058]: Documentation: https://min.io/docs/minio/linux/index.html
상태를 확인 해봤는데 잘 켜진 것 같습니다.
journalctl -f -u minio.service
-- Logs begin at Sun 2022-12-25 00:14:58 PST. --
Jan 05 04:07:06 ubuntu minio[3058]: WARNING: Host local has more than 0 drives of set. A host failure will result in data becoming unavailable.
Jan 05 04:07:06 ubuntu minio[3058]: Warning: Default parity set to 0. This can lead to data loss.
Jan 05 04:07:06 ubuntu minio[3058]: MinIO Object Storage Server
Jan 05 04:07:06 ubuntu minio[3058]: Copyright: 2015-2023 MinIO, Inc.
Jan 05 04:07:06 ubuntu minio[3058]: License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html>
Jan 05 04:07:06 ubuntu minio[3058]: Version: RELEASE.2023-01-02T09-40-09Z (go1.19.4 linux/amd64)
Jan 05 04:07:06 ubuntu minio[3058]: Status: 1 Online, 0 Offline.
Jan 05 04:07:06 ubuntu minio[3058]: API: http://192.168.0.27:9000 http://127.0.0.1:9000
Jan 05 04:07:06 ubuntu minio[3058]: Console: http://192.168.0.27:44313 http://127.0.0.1:44313
Jan 05 04:07:06 ubuntu minio[3058]: Documentation: https://min.io/docs/minio/linux/index.html
오 journalctl -f -u minio.service 명령어로 확인 하니깐 뭔가 나오네요 ^^
위와 같이 잘 나오네요.
접속을 한번 해보겠습니다.
이야 아까 만든 비밀번호로 로그인도 잘 됩니다.
그럼 내일 부터는 버킷을 만들고 파일을 올리는 등의 방법을 적어 보겠습니다
하루에 하나만 포스팅 하고 있어서 ^^
다음 글이 언제 출판될지 모르겠지만, 저는 열심히 글을 적고 있겠습니다.
감사합니다.