Minio部署总结

官方介绍

MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等

MinIO可单点部署,可分布式集群部署,操作部署方便,可支持扩容,SDK和阿里OSS用起来差不多,刚好满足我的需求,唯一缺陷就是不支持动态扩容。

Docker单节点部署

首先拉取镜像,下载最新版镜像

docker pull minio/minio

启动容器,启动端口为 9000 “-v /mnt/data:/data”,指定宿主机指向容器的存储地址,上传的文件存在这里,“server /data” 启动的命令,指定容器内部存储地址为/data

docker run -p 9000:9000 --name minio1 \
  -v /mnt/data:/data \
  -v /mnt/config:/root/.minio \
  minio/minio server /data


启动成功后浏览器访问 http://{ip}:9000,登录需要accessKey和secretKey,docker容器启动默认都是 “minioadmin” ,启动后会显示

Linux单节点二进制方式部署

下载

mkdir /home/minio/{app,config,data,logs} -p
cd /home/minio/app
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio

创建数据目录

mkdir /minio_data

启动脚本

min_server_start.sh

chmod 755 min_server_single.sh

#!/bin/bash
export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=12345678
MINIO_HOME=/home/minio/app	
nohup ${MINIO_HOME}/minio server /minio_data  --address :9000 --console-address :8000 > ${MINIO_HOME}/minio.log 2>&1 &

启动脚本

bash min_server_single.sh

 启动成功后浏览器访问 http://{ip}:9000,登录需要accessKey和secretKey,分别是脚本中的admin/12345678

 

Linux分布式部署

官方介绍:分布式Minio至少需要4个硬盘,使用分布式Minio自动引入了纠删码功能。

分布式Minio优势

数据保护
分布式Minio采用 纠删码来防范多个节点宕机和位衰减 bit rot 。
分布式Minio至少需要4个硬盘,使用分布式Minio自动引入了纠删码功能。

高可用
单机Minio服务存在单点故障,相反,如果是一个有N块硬盘的分布式Minio,只要有N/2硬盘在线,你的数据就是安全的。不过你需要至少有N/2+1个硬盘来创建新的对象。
例如,一个16节点的Minio集群,每个节点16块硬盘,就算8台服務器宕机,这个集群仍然是可读的,不过你需要9台服務器才能写数据。

一致性
Minio在分布式和单机模式下,所有读写操作都严格遵守read-after-write一致性模型
 

准备环境

192.168.10.159 minio-2
192.168.10.153 minio-1

每个节点4个硬盘

注意:必须是四个硬盘,且硬盘是空数据,否则会报错。

#创建挂载点
mkdir /mnt/mongo1
mkdir /mnt/mongo2
mkdir /mnt/mongo3
mkdir /mnt/mongo4
#分区
fdisk /dev/sdc
fdisk /dev/sdd
fdisk /dev/sde
fdisk /dev/sdf
#格式化
mkfs.ext4 /dev/sdc1
mkfs.ext4 /dev/sdd1
mkfs.ext4 /dev/sde1
mkfs.ext4 /dev/sdf1
#加载
mount /dev/sdc1 /mnt/mongo2/
mount /dev/sdd1 /mnt/mongo3/
mount /dev/sde1 /mnt/mongo4/
mount /dev/sdf1 /mnt/mongo1/
#写入系统配置
echo "/dev/sdc1 /mnt/mongo2 ext4 defaults 0 0" >> /etc/fstab
echo "/dev/sdd1 /mnt/mongo3 ext4 defaults 0 0" >> /etc/fstab
echo "/dev/sde1 /mnt/mongo4 ext4 defaults 0 0" >> /etc/fstab
echo "/dev/sdf1 /mnt/mongo1 ext4 defaults 0 0" >> /etc/fstab

df -h

Minio部署总结_第1张图片

 

 确保时钟同步

​​​​​​Centos服务器设置时间自动同步_centos 时间同步_驯龙高手_追风的博客-CSDN博客

配置脚本

注意:在这里跳过不可扩展的部署方式和伪分布式的部署方式。

先启动在minio-1单节点集群(后面需要尝试集群扩容)

minio_cluster.sh

chmod 755 minio_cluster.sh

#!/bin/bash
  
export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=12345678
MINIO_HOME=/home/minio/app
nohup ${MINIO_HOME}/minio server --address :9000 --console-address :8000  \
        http://minio-1/mnt/mongo{1...4} > ${MINIO_HOME}/minio.log 2>&1 &

启动集群

bash chmod 755 minio_cluster.sh

验证

 

集群扩容方式

对等扩容

首先,MinIO的极简设计理念使得MinIO分布式集群并不支持向集群中添加单个节点并进行自动调节的扩容方式,这是因为加入单个节点后所引发的数据均衡以及纠删组划分等问题会为整个集群带来复杂的调度和处理过程,并不利于维护。因此,MinIO提供了一种对等扩容的方式,即要求增加的节点数和磁盘数均需与原集群保持对等。

说明: 添加的每个区域必须具有与原始区域相同的磁盘数量(纠删码集)大小,以便维持相同的数据冗余SLA
例如,第一个区有8个磁盘,您可以将集群扩展为16个、32个或1024个磁盘的区域,只需确保部署的SLA是原始区域的倍数即可。

minio-1节点的启动脚本添加配置

扩容方式,在原命令最后一行末尾添加扩容的节点,重启集群.

#!/bin/bash
  
export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=12345678
MINIO_HOME=/home/minio/app
nohup ${MINIO_HOME}/minio server --address :9000 --console-address :8000  \
        http://minio-1/mnt/mongo{1...4} http://minio-2/mnt/mongo{1...4} > ${MINIO_HOME}/minio.log 2>&1 &

同步启动脚本

将启动脚本同步到minio-2节点,然后两个节点启动服务。

验证

 

Minio部署总结_第2张图片

 

联邦扩容

MinIO官方提供了另一种扩容机制——联邦扩容,即通过引入etcd,将多个MinIO分布式集群在逻辑上组成一个联邦,对外以一个整体提供服务,并提供统一的命名空间。MinIO联邦集群的架构如图3-1所示。

Minio部署总结_第3张图片

 联邦扩容优缺点

相较于对等扩容,联邦扩容的优点在于:①联邦中的各集群不要求节点数和磁盘数的对等;②联邦可以无限扩展,不断加入新集群;③若联邦中某个集群出现故障,该故障将不影响联邦中的其他集群提供服务。其缺点为需要额外引入etcd,且配置过程较为复杂。

来源

Minio 分布式集群部署_51CTO博客_分布式集群部署

Minio 分布式集群部署_51CTO博客_分布式集群部署 

minio 集群、扩容_minio集群_leoppeng的博客-CSDN博客

MinIO部署,以及扩容 

 漫谈 MinIO 集群扩容方法

 

你可能感兴趣的:(大数据,minio,大数据)