Minio部署(单机/单机EC/集群)

官方网站:https://docs.min.io

中文网站:MinIO Quickstart Guide| Minio中文文档

中文网站版本落后不建议翻阅

minio优点:

1:高度可用
    Minio服务器可以容忍分布式设置中高达(N / 2)-1节点故障。而且,您可以配置Minio服务器在Minio与任意Amazon S3兼容服务器之间存储数据。
2:Lambda计算
    Minio服务器通过其兼容AWS SNS / SQS的事件通知服务触发Lambda功能。支持的目标是消息队列,如Kafka,NATS,AMQP,MQTT,Webhooks以及Elasticsearch,Redis,Postgres和MySQL等数据库。
3:加密和防篡改
    Minio为加密数据提供了机密性,完整性和真实性保证,而且性能开销微乎其微。使用AES-256-GCM,ChaCha20-Poly1305和AES-CBC支持服务器端和客户端加密。加密的对象使用AEAD服务器端加密进行防篡改。
4:可对接后端存储
    除了Minio自己的文件系统,还支持DAS、 JBODs、NAS、Google云存储和Azure Blob存储。
5:sdk支持
    基于Minio轻量的特点,它得到类似Java、Python或Go等语言的sdk支持
6:部署简单
    有安装包、docker、docker compose等方式都特别容易
7:辅助
    有UI界面、minio mc
8:性能
    是目前最快的对象存储服务器
        在标准硬件上,对象存储的读/写速度最高可以达到183 GB/s和171 GB/s。关于fastDFS 测试写了20万个文件,总共200G,大约用时10个小时。总体上是很难达到MinIO“号称的”以G为单位的每秒读写速度。
     一般情况下机械硬盘应该在10G/s左右,SSD硬盘在30-40G/s

部署环境:

        MinIO 推荐操作系统 RHEL/CentOS 8.x 或更高版本,Ubuntu 18.04 LTS 或更高版本。 Linux内核4.x版本
不建议在windows上搭建

单机部署:

二进制方式:

        下载:wget https://dl.min.io/server/minio/release/linux-amd64/minio

        将下载的文件变成可执行   chmod +x minio    

        启动:./minio server /data         不设置密码就是默认 minioadmin/minioadmin

docker方式:

docker run -d \
  -p 8900:9000 \
  -p 8901:9001 \
  --name minio2 \
  -v ~/var/local/environment/data:/data \
  -e "MINIO_ROOT_USER=root" \
  -e "MINIO_ROOT_PASSWORD=minio123456" \
  minio/minio server /data --console-address ":8901"

说明:

        -p 端口映射
        --name 容器名
        -v 挂载
        -e  "MINIO_ROOT_USER=root" 账号
        -e "MINIO_ROOT_PASSWORD=minio123456" 密码
        server /data 指定磁盘
        --console-address 暴露UI控制台

单机EC码模式:

4个以上的盘才会开启EC码模式。

Minio部署(单机/单机EC/集群)_第1张图片

 开启后会是这个样子的,分片存储,minio内部计算分配set集,将一个文件分成N份,N就是一个set中的磁盘数量,EC码模式开启后能够进行数据恢复,当然单机的EC码除非是真实的不同的物理磁盘,不然安全性和单机没什么区别(磁盘损坏),然后是可用性也和单机一样(服务器宕机)。

EC码模式,minio除了存储原数据还会分出一个奇偶校验驱动器,所以磁盘用量大概为原始数据的2倍。

笔记

所有运行分布式 MinIO 的节点都应该共享一个共同的根凭证,以便节点相互连接和信任。为此,建议在执行 MinIO 服务器命令之前,将 root 用户和 root 密码导出为环境变量,MINIO_ROOT_USER并在所有节点上导出。MINIO_ROOT_PASSWORD如果未导出,minioadmin/minioadmin则应使用默认凭据。
MinIO 创建每组2到16 个驱动器的纠删码集。您提供的驱动器总数必须是这些数字之一的倍数。
MinIO 选择最大的 EC 集大小,将其划分为给定的驱动器总数或节点总数 - 确保保持均匀分布,即每个节点参与每组相同数量的驱动器。
每个对象都写入单个 EC 集,因此分布在不超过 16 个驱动器上。
建议运行分布式 MinIO 设置的所有节点是同质的,即相同的操作系统、相同数量的磁盘和相同的网络互连。
MinIO 分布式模式需要新目录。如果需要,驱动器可以与其他应用程序共享。您可以通过使用 MinIO 独有的子目录来执行此操作。例如,如果您已将卷安装在 下/export,则将其作为参数传递/export/data给 MinIO 服务器。
下面的 IP 地址和驱动器路径仅用于演示目的,您需要将它们替换为实际的 IP 地址和驱动器路径/文件夹。
运行分布式 MinIO 实例的服务器之间的间隔应小于 15 分钟(之前是3s)。您可以启用NTP服务作为最佳实践,以确保跨服务器的时间相同。
MINIO_DOMAIN应为桶 DNS 样式支持定义和导出环境变量。
在Windows操作系统上运行分布式 MinIO被认为是实验性的。请谨慎行事

 集群:

使用上篇docker模拟centos环境方式准备 4台虚拟机CSDNhttps://mp.csdn.net/mp_blog/creation/editor/125653601运行镜像生成4个容器,注意两行为一条,不能换行

docker run -d --name minio10 -p 8200:22 -p 9000:9000 -p 9001:9001 -v /home/data5:/var/local/data1 miniosubc:2.0 /usr/sbin/sshd -D 


docker run -d --name minio11 -p 8201:22 -p 9002:9000 -p 9003:9001 -v /home/data6:/var/local/data1 miniosubc:2.0 /usr/sbin/sshd -D 


docker run -d --name minio12 -p 8202:22 -p 9004:9000 -p 9005:9001 -v /home/data7:/var/local/data1 miniosubc:2.0 /usr/sbin/sshd -D 


docker run -d --name minio13 -p 8203:22 -p 9006:9000 -p 9007:9001 -v /home/data8:/var/local/data1 miniosubc:2.0 /usr/sbin/sshd -D 

校验容器开启状态

root     26592 13675  0 20:28 ?        00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 9003 -container-ip 172.17.0.3 -container-port 9001
root     26604 13675  0 20:28 ?        00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 9002 -container-ip 172.17.0.3 -container-port 9000
root     26616 13675  0 20:28 ?        00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8201 -container-ip 172.17.0.3 -container-port 22
root     27713 13675  0 20:31 ?        00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 9001 -container-ip 172.17.0.4 -container-port 9001
root     27725 13675  0 20:31 ?        00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 9000 -container-ip 172.17.0.4 -container-port 9000
root     27737 13675  0 20:31 ?        00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8200 -container-ip 172.17.0.4 -container-port 22
root     27942 13675  0 20:31 ?        00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 9005 -container-ip 172.17.0.5 -container-port 9001
root     27955 13675  0 20:31 ?        00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 9004 -container-ip 172.17.0.5 -container-port 9000
root     27967 13675  0 20:31 ?        00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8202 -container-ip 172.17.0.5 -container-port 22
root     28202 13675  0 20:31 ?        00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 9007 -container-ip 172.17.0.6 -container-port 9001
root     28214 13675  0 20:31 ?        00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 9006 -container-ip 172.17.0.6 -container-port 9000
root     28226 13675  0 20:31 ?        00:00:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8203 -container-ip 172.17.0.6 -container-port 22

使用ssh工具进入4个服务器,每个服务器都执行一遍,二进制文件执行方式

export MINIO_ROOT_USER=root
export MINIO_ROOT_PASSWORD=minio123456
./minio server  --console-address :9001 --address :9000 \
http://172.17.0.{3...6}/var/local/data1

只要有一个节点没有启动就会一直报那个连不上的节点错误。。。4个节点都执行上述命令后看还会不会报红。运行成功后会出现这个样式

WARNING: Detected Linux kernel version older than 4.0.0 release, there are some known potential performance problems with this kernel version. MinIO recommends a minimum of 4.x.x linux kernel version for best performance
Waiting for all MinIO sub-systems to be initialized.. lock acquired
Automatically configured API requests per node based on available memory on the system: 100
All MinIO sub-systems initialized successfully in 797.839383ms
Waiting for all MinIO IAM sub-system to be initialized.. lock acquired
MinIO Object Storage Server
Copyright: 2015-2022 MinIO, Inc.
License: GNU AGPLv3 
Version: RELEASE.2022-06-30T20-58-09Z (go1.18.3 linux/amd64)

Status:         4 Online, 0 Offline.
API: http://172.17.0.6:9000  http://127.0.0.1:9000
RootUser: root
RootPass: minio123456
Console: http://172.17.0.6:9001 http://127.0.0.1:9001
RootUser: root
RootPass: minio123456

Command-line: https://docs.min.io/docs/minio-client-quickstart-guide
   $ mc alias set myminio http://172.17.0.6:9000 root minio123456

Documentation: https://docs.min.io

docker搭建方式:

docker run -d --name minio \
  --restart=always \
  --net=host \
  -e MINIO_ACCESS_KEY=minio \
  -e MINIO_SECRET_KEY=minio123 \
  -v /data/minio/data1:/data1 \
  -v /data/minio/data2:/data2 \
  minio/minio server \
  http://minio-{1...2}/data{1...2}

docker compose方式:  docker官网 Docker Documentation | Docker Documentation

1、docker compose插件安装
     docker compose与docker对应版本

参考:docker-compose部署MinIO分布式集群_西瓜蓬蓬的博客-CSDN博客_docker部署minio集群

minio 搭建集群并动态扩容_llc的足迹的博客-CSDN博客_minio动态扩容

minio扩容:

参考:minio分布式集群扩容_freesharer的博客-CSDN博客_minio扩容

minio迁移:

方式:
    rclone
    mc-mirror
    scp

把minio结构的文件复制到想要的服务器后,重新部署一个minio并指向存储路径,还可以继续使用

你可能感兴趣的:(study,tools,minio,1024程序员节)