MinIO 安装笔记

简介

MinIO 是一款高性能、分布式的对象存储系统。它是一款软件产品,可以 100% 的运行在标准硬件。即 X86 等低成本机器也能够很好的运行 MinIO。

MinIO 与传统的存储和其他的对象存储不同的是:它一开始就针对性能要求更高的私有云标准进行软件架构设计。因为 MinIO 一开始就只为对象存储而设计。所以他采用了更易用的方式进行设计,它能实现对象存储所需要的全部功能,在性能上也更加强劲,它不会为了更多的业务功能而妥协,失去 MinIO 的易用性、高效性。 这样的结果所带来的好处是:它能够更简单的实现局有弹性伸缩能力的原生对象存储服务。

MinIO 在传统对象存储用例(例如辅助存储,灾难恢复和归档)方面表现出色。同时,它在机器学习、大数据、私有云、混合云等方面的存储技术上也独树一帜。当然,也不排除数据分析、高性能应用负载、原生云的支持。

在中国:阿里巴巴、腾讯、百度、中国联通、华为、中国移动等等 9000 多家企业也都在使用 MinIO 产品

单机安装

官网

http://www.minio.org.cn/

下载

windows 下载: http://dl.minio.org.cn/server/minio/release/windows-amd64/minio.exe

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

MinIO 强烈建议反对在生产环境中使用从源代码编译的 MinIO 服务器。

文档

http://docs.minio.org.cn/docs/

命令行启动

windows 下进入安装目录,命令行执行

.\minio.exe server D:\mini\data

linux 下进入安装目录,命令行执行

# 授权:可执行
chmod +x minio
# 设置进入web管理界面的用户名和密码,以及/mnt/data 作为数据存储目录
MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password ./minio server /mnt/data --console-address ":9001"

停止服务

kill -9 15641

访问

  http://127.0.0.1:9000

  • MinIO 部署开始使用默认的 root 凭据 minioadmin:minioadmin
  • 可以使用 MinIO 控制台测试部署,这是一个内置在 MinIO 服务器中的基于 Web 的嵌入式对象浏览器。
  • 主机上运行的 Web 浏览器指向 http://127.0.0.1:9000 并使用 root 凭据登录
  • 可以使用浏览器来创建桶、上传对象以及浏览 MinIO 服务器的内容。
  • 可以使用任何与 S3 兼容的工具进行连接,例如 MinIO Client mc 命令行工具
  • MinIo 默认 9000 端口,在启动命令中加入 --address “0.0.0.0:9001” 可更改端口

iptables 防火墙

如果存在防火墙配置,则需要放行 minio 相关端口;如果未开启,则忽略,在生产环境下为了保证数据的安全,必需启用防火墙;

对于启用了 iptables 的主机(RHEL、CentOS 等),可以使用 iptables 命令来启用进入特定端口的所有流量。 使用以下命令允许访问 9000 端口

iptables -A INPUT -p tcp --dport 9000 -j ACCEPT
service iptables restart

下面的命令启用所有传入端口的流量,范围从 9000 到 9010。

iptables -A INPUT -p tcp --dport 9000:9010 -j ACCEPT
service iptables restart

集群安装

VM 虚拟主机

192.168.16.128
192.168.16.129
192.168.16.130

挂载硬盘

每台主机已挂载新的磁盘并创建相关目录

注:minio 集群强制要求在根目录之外的其它磁盘上独占分区,因此需要挂载新的磁盘

参见: MinIO 集群挂载新磁盘

配置用户名和密码

在三台主机环境变量中加入相同的用户名和密码

export MINIO_ROOT_USER=minioadmin
export MINIO_ROOT_PASSWORD=minioadmin

启动集群

在三台机器上分别重复输入启动命令

./minio server http://192.168.16.{128...130}/data2/minio_db{1...4}
# 完整的后台启动命令
# nohup ./minio server http://192.168.16.{128...130}/data2/minio_db{1...4} >> minio.log 2>&1 &

访问

  http://192.168.16.128:9000

问题

通过命令启动多台 VM 主机集群失败。

./minio server http://192.168.16.128/data2/minio/db{1...4} http://192.168.16.129/data2/minio/db{1...4} http://192.168.16.130/data2/minio/db{1...4}

结果有如下错误提示,提示读错误。

API: SYSTEM()
Time: 09:11:12 UTC 08/15/2022
Error: Read failed. Insufficient number of drives online (*errors.errorString)
       6: internal/logger/logger.go:259:logger.LogIf()
       5: cmd/prepare-storage.go:242:cmd.connectLoadInitFormats()
       4: cmd/prepare-storage.go:302:cmd.waitForFormatErasure()
       3: cmd/erasure-server-pool.go:109:cmd.newErasureServerPools()
       2: cmd/server-main.go:694:cmd.newObjectLayer()
       1: cmd/server-main.go:531:cmd.serverMain()
Waiting for a minimum of 2 drives to come online (elapsed 36s)

Client 'http://192.168.16.128:9000/minio/storage/data2/minio/db3/v47' re-connected in 14.79896ms
Client 'http://192.168.16.128:9000/minio/storage/data2/minio/db2/v47' re-connected in 17.914527ms

通过官方文档并没有发现有什么不妥,或解决问题的信息。看到官方有另一种启动方式,并且推荐使用该种方式进行扩展启动

export MINIO_ROOT_USER=
export MINIO_ROOT_PASSWORD=
minio server http://host{1...n}/export{1...m}

注意:在上面的示例中 n 并 m 表示正整数,不要复制粘贴并期望它可以根据本地部署和设置进行更改。

注意: {1...n} 显示有 3 个点!仅使用 2 个点 {1..n} 将由您的 shell 解释并且不会传递给 MinIO 服务器,从而影响擦除编码顺序,从而影响性能和高可用性。始终使用省略号语法 {1...n}(3 个点!)以获得最佳纠删码分布

示例

minio server http://host{1...4}/export{1...16} http://host{5...12}/export{1...16}

于是重新删除所有节点的 /data2/minio 目录,新建 /data2/minio_db1、/data2/minio_db2、/data2/minio_db3、/data2/minio_db4,使用新的启动方法

./minio server http://192.168.16.{128...130}/data2/minio_db{1...4}

在 128~130 三台 VM 主机上顺序执行,等待三台虚拟主机的服务加载与通讯完毕后,成功启动集群。

root@ubuntu1:/opt# ./minio server http://192.168.16.{128...130}/data2/minio_db{1...4}
Waiting for atleast 1 remote servers to be online for bootstrap check
Following servers are currently offline or unreachable [http://192.168.16.129:9000/data2/minio_db1 http://192.168.16.130:9000/data2/minio_db1]

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ You are running an older version of MinIO released 2 days ago ┃
┃ Update: Run `mc admin update`                                 ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Waiting for atleast 1 remote servers to be online for bootstrap check
Following servers are currently offline or unreachable [http://192.168.16.129:9000/data2/minio_db1 http://192.168.16.130:9000/data2/minio_db1]
....
略
....
Waiting for all other servers to be online to format the drives (elapses 9s)

Formatting 1st pool, 1 set(s), 12 drives per set.
WARNING: Detected default credentials 'minioadmin:minioadmin', we recommend that you change these values with 'MINIO_ROOT_USER' and 'MINIO_ROOT_PASSWORD' environment variables
Waiting for all MinIO sub-systems to be initialized.. lock acquired
Automatically configured API requests per node based on available memory on the system: 45
All MinIO sub-systems initialized successfully in 230.584844ms
MinIO Object Storage Server
Copyright: 2015-2022 MinIO, Inc.
License: GNU AGPLv3 
Version: RELEASE.2022-08-11T04-37-28Z (go1.18.5 linux/amd64)

Status:         12 Online, 0 Offline. 
API: http://192.168.16.128:9000  http://127.0.0.1:9000     
RootUser: minioadmin 
RootPass: minioadmin 
Console: http://192.168.16.128:45414 http://127.0.0.1:45414   
RootUser: minioadmin 
RootPass: minioadmin 

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

Documentation: https://docs.min.io

因此上述问题,推测和 MinIO 的服务器纠删码机制有关;

参见官方文档说明

https://docs.min.io/docs/distributed-minio-quickstart-guide.html

通过集群其中的一台主机进行访问

http://192.168.16.128:9000

WEB 管理界面成功显示三台主机信息

MinIO 安装笔记_第1张图片

参考

https://blog.csdn.net/qq_23312117/article/details/123320513

https://github.com/minio/minio/issues/9018

https://blog.csdn.net/weixin_44313745/article/details/110225422

你可能感兴趣的:(开源项目,linux,对象存储,minio,文件服务)