아키텍처
- IP :192.168.0.110~114
- VIP : 192.168.0.105
- Port
- 9000 – API
- 9001 – Console
- 19000 – HA Proxy API
- 19001 – HA Proxy Console

스펙
- OS : Ubuntu(권장)
- Minio 분산처리 구성시 : 최소 4대의 서버부터 필요
- 물리 디스크 : 서버당 2개이상 필요(페리티 비트)
- 파일 시스템 : XFS 드라이브에 XFS 포맷 사용MinIO는 XFS로 포맷된 드라이브를 스토리지로 프로비저닝할 것을 강력히 권장합니다. MinIO는 내부 테스트 및 검증 도구의 일부로 XFS를 사용하여 모든 규모에서 성능과 동작에 대한 추가적인 신뢰성을 제공합니다. MinIO : EXT4, BTRFS, ZFS 등 다른 파일 시스템을 테스트하거나 권장 하지 않습니다
Minio 설치
- 패키지 다운로드
apt install -y wget curl
- Minio 바이너리 설치
- 최신 바이너리 받을 경우에는 CE 버전만 지원되므로, 하위 버전 다운로드 진행(2025.06.23 변경됨)
cd /usr/local/bin
wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20250408154124.0.0_amd64.deb
dpkg -i minio_20250408154124.0.0_amd64.deb
디스크 구성
- 디스크 포맷
- 파일 시스템 : xfs
# 디스크 초기화
fdisk /dev/sdb
fdisk /dev/sdc
# 파일 시스템 생성
mkfs.xfs /dev/sdb1
mkfs.xfs /dev/sdc1
# 디렉토리 생성
mkdir /data1
mkdir /data2
자동 마운트 처리
- 포맷처리 후 blkid UUID 값으로 처리
vi /etc/fstab
UUID=e067bd0c-8f4f-4bc6-bbcc-4603fa4a99ef /data1 xfs defaults 0 2
UUID=e8e39f7e-67ed-4dce-9d5c-d81f1411224e /data2 xfs defaults 0 2
mount -a
df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs tmpfs 1.8G 8.5M 1.8G 1% /run
tmpfs tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup
/dev/sda2 xfs 50G 5.0G 45G 10% /
/dev/sda1 vfat 200M 5.8M 194M 3% /boot/efi
tmpfs tmpfs 367M 0 367M 0% /run/user/1002
/dev/sdb1 xfs 10G 104M 9.9G 2% /data1
/dev/sdc1 xfs 10G 104M 9.9G 2% /data2
서버 설정
- 방화벽 오픈
# 포트 허용
sudo ufw allow 22/tcp
sudo ufw allow 9000/tcp
sudo ufw allow 9001/tcp
# 변경 사항 적용 (ufw는 명령어 실행 시 바로 적용되므로 reload는 보통 불필요)
sudo ufw status verbose
- 일반 계정
- 로그인 X, 프로세스 구동용
groupadd -r minio
useradd -M -r -g minio minio
chown -R minio:minio /data1
chown -R minio:minio /data2
서비스 등록
vi /etc/systemd/system/minio.service
[Unit]
Description=MinIO Distributed Server
After=network.target
[Service]
User=minio
Group=minio
ExecStart=/usr/local/bin/minio server \
--address :9000 \
--console-address :9001 \
http://192.168.0.110/data1 \
http://192.168.0.110/data2 \
http://192.168.0.111/data1 \
http://192.168.0.111/data2 \
http://192.168.0.112/data1 \
http://192.168.0.112/data2 \
http://192.168.0.113/data1 \
http://192.168.0.113/data2
Restart=always
LimitNOFILE=65536
Environment=MINIO_ROOT_USER=minioadmin ##초기 암호 설정
Environment=MINIO_ROOT_PASSWORD=minioadmin ##초기 암호 설정
[Install]
WantedBy=multi-user.target
서비스 적용 및 실행
systemctl daemon-reload
systemctl enable minio
systemctl start minio
- 서비스 상태 체크
ps -ef | grep minio

상태 체크

- 드라이버 상태 정보
- 서버 4대
- Drive 8개



SSL 인증서 생성하기
- Key 합치기
- 합칠때 key파일명, crt 파일명 순서로해야함
cat syntekabio.key syntekabio.crt > /etc/ssl/certs/minio.pem
- 권한 설정
sudo chmod 600 /etc/ssl/certs/minio.pem
sudo chown haproxy:haproxy /etc/ssl/certs/minio.pem
Keepalive 구성
- keepalive 설치
apt install keepalived -y
- keepalive Config
- interface : 실제 네트워크 인터페이스로 이름으로 변경
vi /etc/keepalived/keepalived.conf
- Master
vrrp_script chk_haproxy {
script "/usr/bin/killall -0 haproxy" # 전체 프로세스 정보
interval 2 # 2초마다 체크
weight 2 # 우선순위 조정값
fall 2 # 2번 실패시 DOWN
rise 2 # 2번 성공시 UP
}
vrrp_instance VI_1 {
state MASTER
interface ens192 #실제 네트워크 인터페이스
virtual_router_id 51
priority 110
advert_int 1
authentication {
auth_type PASS
auth_pass mypassword
}
virtual_ipaddress {
192.168.0.105/24 # VIP (Virtual IP)
}
track_script {
chk_haproxy
}
}
- Backup
vrrp_script chk_haproxy {
script "/usr/bin/killall -0 haproxy" # 전체 프로세스 정보
interval 2 # 2초마다 체크
weight 2 # 우선순위 조정값
fall 2 # 2번 실패시 DOWN
rise 2 # 2번 성공시 UP
}
vrrp_instance VI_1 {
state BACKUP # BACKUP으로 변경
interface ens192
virtual_router_id 51
priority 100 # 낮은 우선순위
advert_int 1
authentication {
auth_type PASS
auth_pass mypassword
}
virtual_ipaddress {
192.168.0.105/24 # 동일한 VIP
}
track_script {
chk_haproxy
}
}
- keepalive 서비스 재시작
systemctl enable keepalived.service
systemctl restart keepalived.service
Haproxy 구성
- 설치
#Ubuntu
sudo apt install -y haproxy
Haproxy 설정
vi /etc/haproxy/haproxy.cfg
- Master
# /etc/haproxy/haproxy.cfg
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode http
timeout connect 5s
timeout client 50s
timeout server 50s
option httplog
# HAProxy 통계 페이지
frontend stats
bind *:8404 ssl crt /etc/ssl/certs/minio.pem
stats enable
stats uri /haproxy-stats
stats realm HAProxy\ Statistics
stats auth admin:password123
stats refresh 30s
# MinIO API 로드밸런싱 (19000 포트)
frontend minio_api_frontend
bind *:19000 ssl crt /etc/ssl/certs/minio.pem
mode http
default_backend minio_api_backend
backend minio_api_backend
mode http
balance roundrobin
server minio1 192.168.0.110:9000
server minio2 192.168.0.111:9000
server minio3 192.168.0.112:9000
server minio4 192.168.0.113:9000
# MinIO Console 로드밸런싱 (19001 포트)
frontend minio_console_frontend
bind *:19001 ssl crt /etc/ssl/certs/minio.pem
mode http
default_backend minio_console_backend
backend minio_console_backend
mode http
balance roundrobin
option httpchk GET /
http-check expect status 200
server console1 192.168.0.110:9001 check inter 5s rise 2 fall 3
server console2 192.168.0.111:9001 check inter 5s rise 2 fall 3
server console3 192.168.0.112:9001 check inter 5s rise 2 fall 3
server console4 192.168.0.113:9001 check inter 5s rise 2 fall 3
- Backup
# /etc/haproxy/haproxy.cfg
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode http
timeout connect 5s
timeout client 50s
timeout server 50s
option httplog
# HAProxy 통계 페이지
frontend stats
bind *:8404 ssl crt /etc/ssl/certs/minio.pem
stats enable
stats uri /haproxy-stats
stats realm HAProxy\ Statistics
stats auth admin:password123
stats refresh 30s
# MinIO API 로드밸런싱 (19000 포트)
frontend minio_api_frontend
bind *:19000 ssl crt /etc/ssl/certs/minio.pem
mode http
default_backend minio_api_backend
backend minio_api_backend
mode http
balance roundrobin
server minio1 192.168.0.110:9000
server minio2 192.168.0.111:9000
server minio3 192.168.0.112:9000
server minio4 192.168.0.113:9000
# MinIO Console 로드밸런싱 (19001 포트)
frontend minio_console_frontend
bind *:19001 ssl crt /etc/ssl/certs/minio.pem
mode http
default_backend minio_console_backend
backend minio_console_backend
mode http
balance roundrobin
option httpchk GET /
http-check expect status 200
server console1 192.168.0.110:9001 check inter 5s rise 2 fall 3
server console2 192.168.0.111:9001 check inter 5s rise 2 fall 3
server console3 192.168.0.112:9001 check inter 5s rise 2 fall 3
server console4 192.168.0.113:9001 check inter 5s rise 2 fall 3
- 서비스 재시작
# HAProxy 시작
sudo systemctl enable haproxy
sudo systemctl restart haproxy
Haproxy 상태 체크
- HaProxy 상태 체크
http://192.168.0.105:8404/haproxy-stats

Minio Client
- mc Client 다운로드
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 Client로 접근하기
mc alias set "이름" "URL정보" "ID" "passowr"
mc alias set admin http://192.168.0.110:9000 minioadmin minioadmin
- 서비스 상태 체크
mc admin info admin
● 192.168.0.110:9000
Uptime: 21 minutes
Version: 2025-04-08T15:41:24Z
Network: 4/4 OK
Drives: 2/2 OK
Pool: 1
● 192.168.0.111:9000
Uptime: 21 minutes
Version: 2025-04-08T15:41:24Z
Network: 4/4 OK
Drives: 2/2 OK
Pool: 1
● 192.168.0.112:9000
Uptime: 21 minutes
Version: 2025-04-08T15:41:24Z
Network: 4/4 OK
Drives: 2/2 OK
Pool: 1
● 192.168.0.113:9000
Uptime: 21 minutes
Version: 2025-04-08T15:41:24Z
Network: 4/4 OK
Drives: 2/2 OK
Pool: 1
VIP Minio 테스트(HTTP)
- mc VIP 테스트
mc alias set vip-minio http://192.168.0.105:19000 minioadmin minioadmin

- mc admin
mc admin info vip-minio

VIP Minio 테스트(HTTPS)
- HAproxy Stats

- HAproxy Console

- HAproxy API
- https 인증서라서 ip 기반으로 불가능하고 도메인 기반으로 적용해야함
mc alias set vip-https-minio https://blog.htms.co.kr:19000 minioadmin minioadmin

- 상태 확인
mc admin info vip-https-minio

- 버킷 확인
mc ls vip-https-minio

- 파일 업로드 테스트
#파일 생성
touch minio-test-file.txt
#파일 버킷으로 복사
mc cp minio-test-file.txt vip-https-minio/vvv

- 실제 데이터 업로드 확인
- VIP 상태, Minio1~4서버 확인




