Linux搭建MinIO集群
文章目录
本文将介绍Linux环境下如何搭建MinIO集群,注意,并非docker安装方式。
系统要求
官方推荐:
* A 64-bit Linux OS (e.g. RHEL 8, Ubuntu LTS releases).
查看
lsblk
分区格式化
|
|
|
|
安装
The RPM and DEB packages automatically install MinIO to the necessary system paths and create a service file for running MinIO automatically. MinIO strongly recommends using RPM or DEB installation routes.systemd
amd64 (Intel or AMD 64-bit processors) arm或其他另外参照官网
DEB (Debian/Ubuntu)
|
|
安装后发现多了
/etc/systemd/system/minio.service
配置防火墙
Centos系统:
|
|
Ubuntu系统:
|
|
启动
|
|
没设置’MINIO_ROOT_USER’ and ‘MINIO_ROOT_PASSWORD’时,默认用户密码为:minioadmin:minioadmin
API默认9000端口:http://127.0.0.1:9000
控制台访问地址:http://127.0.0.1:9001
Command-line: https://min.io/docs/minio/linux/reference/minio-mc.html
$ mc alias set myminio http://192.0.2.10:9000 minioadmin minioadmin
-——————————————–
安装MinIO Client
|
|
使用命令 创建与本地部署关联的新别名
|
|
负载均衡
可用:
* NGINX
* HAProxy
负载均衡器应使用“最少连接数”算法 将请求路由到 MinIO 部署
https://www.nginx.com/products/nginx/load-balancing/
配置顺序主机名
* minio1.example.com
* minio2.example.com
* minio3.example.com
* minio4.example.com
扩展表示法:
.minio{1…4}.example.com
假设4台
minio1.example.com minio3.example.com
minio2.example.com minio4.example.com
负载均衡地址
配置host:
10.10.137.29 minio.example.net
10.10.137.31 minio1.example.com
10.10.137.32 minio2.example.com
10.10.137.33 minio3.example.com
10.10.137.34 minio4.example.com
官方参考摘要
Local JBOD Storage with Sequential Mounts
MinIO 强烈建议使用带有 XFS 格式磁盘的直连 JBOD 阵列,以获得最佳性能。
Ensure all nodes in the deployment use the same type (NVMe, SSD, or HDD) of drive with identical capacity (e.g. TB) . MinIO does not distinguish drive types and does not benefit from mixed storage types. Additionally. MinIO limits the size used per drive to the smallest drive in the deployment. For example, if the deployment has 15 10TB drives and 1 1TB drive, MinIO limits the per-drive capacity to 1TB.N
确保配置及容量是一致的, 驱动器受限于最小配置
MinIO 需要使用扩展表示法来表示顺序 创建新部署时的驱动器系列,其中 部署具有一组相同的已装载驱动器。MinIO也 要求物理驱动器的顺序在重新启动后保持不变, 这样,给定的装入点始终指向同一格式化的驱动器。最小IO 因此强烈建议使用或类似的基于文件的 装载配置,以确保驱动器顺序在重新启动后不会更改。 例如:{x…y}/etc/fstab
$ mkfs.xfs /dev/sdb -L DISK1
$ mkfs.xfs /dev/sdc -L DISK2
$ mkfs.xfs /dev/sdd -L DISK3
$ mkfs.xfs /dev/sde -L DISK4
$ nano /etc/fstab
LABEL=DISK1 /mnt/disk1 xfs defaults,noatime 0 2
LABEL=DISK2 /mnt/disk2 xfs defaults,noatime 0 2
LABEL=DISK3 /mnt/disk3 xfs defaults,noatime 0 2
LABEL=DISK4 /mnt/disk4 xfs defaults,noatime 0 2
然后,您可以使用扩展表示法指定整个驱动器范围。如果要在每个驱动器上使用特定的子文件夹, 将其指定为
/mnt/disk{1…4} /mnt/disk{1…4}/minio
groupadd -r minio-user
useradd -M -r -g minio-user minio-user
chown minio-user:minio-user /mnt/disk1 /mnt/disk2
网络文件系统卷中断一致性保证
MinIO 严格的写后读和写后列表一致性 模型需要本地驱动器文件系统。
如果底层存储,MinIO 无法提供一致性保证 卷是 NFS 或类似的网络连接存储卷。
对于需要使用网络连接存储的部署,请使用 NFSv4 以获得最佳结果。
Homogeneous Node Configurations
同构节点配置
MinIO 强烈建议选择基本相似的硬件 部署中所有节点的配置。确保硬件(CPU、 内存、主板、存储适配器)和软件(操作系统、内核) 设置、系统服务)在所有节点上保持一致。
如果节点具有异构,则部署可能会表现出不可预测的性能 硬件或软件配置。受益于存储陈旧数据的工作负载 低成本硬件上的数据应改为部署专用的“暖”或“冷” MinIO 部署和转换数据到该层。
MinIO 默认为 ,或每个纠删集 4 个奇偶校验块。您可以设置自定义奇偶校验 通过设置适当的 MinIO 存储类环境变量来达到级别。考虑使用 MinIO 纠删码计算器 为您的选择适当的纠删码奇偶校验级别的指南 簇。EC:4
MINIO_STORAGE_CLASS_STANDARD
基于容量的规划
MinIO 通常建议规划容量,以便仅在以下情况下才需要扩展服务器池 2+ 年的部署正常运行时间。
例如,考虑一个应用程序套件,估计会产生 10TB 的 每年的数据。MinIO 部署应至少提供:
10TB + 10TB + 10TB = 30TB
MinIO 建议添加缓冲区存储以考虑潜在的增长 存储的数据(例如,40TB 的总可用存储空间)。根据经验,更多 最初,容量优先于频繁的即时扩展以满足 容量要求。
由于 MinIO 纠删码需要一些 存储 对于奇偶校验,总原始存储必须超过计划的可用容量。考虑使用 MinIO 纠删码计算器作为规划指导 特定纠删码设置周围的容量。
推荐的操作系统
本教程假设所有运行 MinIO 的主机都使用推荐的 Linux 操作系统,例如 RHEL8+ 或 Ubuntu 18.04+。
在分布式环境中启动新的 MinIO 服务器时,存储设备不得具有现有数据。
启动 MinIO 服务器后,与数据的所有交互都必须通过 S3 API 完成。 使用 MinIO 客户端、MinIO 控制台或其中一个 MinIO 软件开发工具包来处理存储桶和对象。
警告
修改后端驱动器上的文件可能会导致数据损坏或数据丢失。
minio配置文件
https://github.com/minio/minio-service/tree/master/linux-systemd
创建配置文件/etc/default/minio,
|
|
重新加载配置使用命令
mc admin service restart
配置minio服务启动
If you do# not have a load balancer, set this value to to any *one* of the# MinIO hosts in the deployment as a temporary measure.
( cd /etc/systemd/system/; curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service )
|
|
/etc/systemd/system/minio.service
|
|
|
|
添加 TLS/SSL 证书
参考:
https://min.io/docs/minio/linux/operations/network-encryption.html#minio-tls
systemctl enable minio.service
systemctl start minio.service
systemctl status minio.service
journalctl -f -u minio.service
扩容
参考:
https://min.io/docs/minio/container/operations/install-deploy-manage/expand-minio-deployment.html
https://min.io/docs/minio/linux/operations/install-deploy-manage/expand-minio-deployment.html
文章作者 HiOFD
上次更新 2024-04-08