Install Object Storage MinIO – Distributed Mode

오픈소스 Object Storage MinIO Distributed Mode (분산모드) 설치 가이드

고 가용성을 위해 MinIO Object Storage 를 Distributed Mode (분산모드)로 구성할 수 있습니다. MinIO 는 분산모드 환경으로 구성 시 erasure code 를 사용하여 여러 노드 및 드라이브의 오류에 대한 보호를 제공합니다. 분산모드를 구성하기 위한 디스크는 최소 4장이 필요합니다. 자세한 내용은 분산모드 구성 더큐먼트를 확인 해 주시기 바랍니다.

MinIO 분산모드 구성

기본적인 설치나 설정은 단일구성 환경의 설치와 거의 비슷합니다. 핵심 요소는 여러 노드들을 인식할 수 있도록 설정을 추가해 주는 것입니다. 이 가이드에서는 총 4개의 노드에 각 노드당 디스크가 1개씩 있는 환경으로 구성해 보도록 하겠습니다.

호스트 추가

먼저 /etc/hosts 파일에 아래와 같은 형식으로 이름에 연속된 숫자가 들어가도록 추가해 줍니다. 연속된 숫자가 필요한 이유는 {1…n} 형식으로 호스트를 편하게 추가할 수 있기 때문입니다. 아래 [예제 2] 와 같은 방법으로 모든 노드를 추가해 줄 수도 있지만 만약 노드가 많을 경우 설정 파일이 길고 복잡해 질 것입니다.
: vi /etc/hosts

10.19.10.221 storage-1
10.19.10.222 storage-2
10.19.10.223 storage-3
10.19.10.224 storage-4

환경설정 파일 작성

기본적인 설치방법은 단일구성 환경에서의 MinIO 설치 가이드를 참고해 주시고 모든 노드에 동일하게 설치 및 설정을 해주시면 됩니다.
: vi /usr/local/minio/minio

MINIO_ACCESS_KEY="root"
MINIO_SECRET_KEY="password12#$56&*"
MINIO_OPTS='0.0.0.0:9100 http://storage-{1...4}/data/storage'
MINIO_BROWSER=off
MINIO_REGION_NAME=pangyo-south-1

단일모드 구성과는 다르게 볼륨이 없습니다. 대신 OPTS 를 보시면 URL 형식에 데이터 디렉토리까지 명시가 되어 있고 바인딩 아이피는 0.0.0.0 으로 되어 있습니다.

상황에 따라서 아래 예제와 같은 방식으로 하실 수도 있습니다.

예제 1)
4개 노드에 4개의 디스크 (/data/storage1, /data/storage2, /data/storage3, /data/storage4 일때)

MINIO_OPTS='0.0.0.0:9100 http://storage-{1...4}/data/storage{1...4}'

예제 2)
{1…n} 형식을 사용하지 않을 때

MINIO_OPTS='0.0.0.0:9100 http://10.19.10.221/data/storage http://10.19.10.222/data/storage http://10.19.10.223/data/storage http://10.19.10.224/data/storage'

systemd 파일 작성

환경설정 파일에서 볼륨을 뺏기 때문에 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=/etc/minio/minio
ExecStart=/usr/local/minio/bin/minio server --address $MINIO_OPTS

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

MinIO 실행

한 개의 노드만 실행 시 오류가 발생합니다. 이는 다른 노드들이 실행이 안되었기 때문이므로 다른 노드들도 전부 실행해 줍니다. 정상적으로 실행되었을 경우 systemctl status minio 를 이용하여 확인해 보시면 4 Online 이라고 표시 됩니다.

Mar 04 14:38:56 10-19-10-221 minio[43809]: All MinIO sub-systems initialized successfully
Mar 04 14:38:56 10-19-10-221 minio[43809]: Status: 4 Online, 0 Offline.
Mar 04 14:38:56 10-19-10-221 minio[43809]: Endpoint: http://0.0.0.0:9100
Mar 04 14:38:56 10-19-10-221 minio[43809]: Object API (Amazon S3 compatible):
Mar 04 14:38:56 10-19-10-221 minio[43809]: Go: https://docs.min.io/docs/golang-client-quickstart-guide
Mar 04 14:38:56 10-19-10-221 minio[43809]: Java: https://docs.min.io/docs/java-client-quickstart-guide
Mar 04 14:38:56 10-19-10-221 minio[43809]: Python: https://docs.min.io/docs/python-client-quickstart-guide
Mar 04 14:38:56 10-19-10-221 minio[43809]: JavaScript: https://docs.min.io/docs/javascript-client-quickstart-guide
Mar 04 14:38:56 10-19-10-221 minio[43809]: .NET: https://docs.min.io/docs/dotnet-client-quickstart-guide

분산모드 환경 구성에서는 모든 노드가 엔드포인트가 되기 때문에 아무 노드나 접속하여 사용할 수 있습니다.

프로덕션 환경에서는 L4 장비등을 이용하여 로드발란싱 및 https 를 적용하는 것을 권장합니다. 저는 HAProxy + Nginx 조합을 이용하고 있지만 MinIO 공식 더큐먼트에서는 소프트웨어 로드발란서 보다는 하드웨어 장비를 권장하고 있습니다.

mc 클라이언트를 이용하실 때에는 한 노드에서만 설정해도 수정 사항이 모든 노드에 동기화 되기 때문에 모든 노드에서 설정을 추가/수정/삭제 하실 필요는 없습니다.

You may also like...

Subscribe
Notify of
guest

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

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