MinIO在Linux系统上集群的安装与部署

MinIO Cluster On Linux

我们可以基于已有的服务,通过复制虚拟机的方式快速扩展为 MinIO 集群。以下是详细步骤:

1. 修改主机名和配置文件

这里统一规划好主机名和配置文件,这样后面克隆虚拟机的时候就不用一个一个去调整了

编辑 /etc/hosts 文件,添加所有节点的 IP 和主机名映射

复制代码
192.168.132.128 minio1
192.168.132.129 minio2
192.168.132.130 minio3

编辑 /etc/default/minio 文件,更新 MINIO_VOLUMES 配置,指定所有节点的存储路径:

ini 复制代码
MINIO_ROOT_USER="minioadmin"
MINIO_ROOT_PASSWORD="minioadmin"
MINIO_VOLUMES="http://minio1/mnt/data http://minio2/mnt/data http://minio3/mnt/data http://minio4/mnt/data"
MINIO_OPTS="--address :9000"

检查数据目录 /mnt/data 是否存在,并确保权限正确:

bash 复制代码
sudo mkdir -p /mnt/data
sudo chown -R minio-user:minio-user /mnt/data
sudo chmod -R 755 /mnt/data

2. 准备虚拟机节点

在已经部署好 MinIO 的虚拟机上,停止 MinIO 服务:

arduino 复制代码
systemctl stop minio

克隆虚拟机,并修改对应网络地址,详细配置参考:www.yuque.com/u26923645/e...

为每台虚拟机设置唯一的主机名(例如 minio1minio2minio3minio4):

csharp 复制代码
sudo hostnamectl set-hostname minio1  # 在 minio1 上执行
sudo hostnamectl set-hostname minio2  # 在 minio2 上执行
sudo hostnamectl set-hostname minio3  # 在 minio3 上执行
sudo hostnamectl set-hostname minio4  # 在 minio4 上执行

3. 启动前的检查

3.1. 检查数据挂载点

检查数据挂载点是否在新的分区而不是系统分区,因为MinIO的设计就是数据目录需要再新的分区保证安全性

数据目录挂载到新磁盘教程:2创建 MinIO 数据目录并挂载到新磁盘

bash 复制代码
df -h /mnt/data
#如果未挂载在新分区,那么手动挂载一下
mount /dev/sdb1 /mnt/data

3.2. 检查数据目录权限

bash 复制代码
sudo chown -R minio-user:minio-user /mnt/data
sudo chmod -R 755 /mnt/data

3.3. 检查各节点之间的网络连通性

检查/etc/hosts文件,是否包含了所有节点的IP和主机名映射,相互ping通

bash 复制代码
cat /etc/hosts
#在各节点上相互ping测试连通性
ping minio1
ping minio2
ping minio3

3.4. 检查MinIO的配置文件

bash 复制代码
cat /etc/default/minio

3.5. 检查MinIO服务配置

bash 复制代码
cat /usr/lib/systemd/system/minio.service

3.6. 重新加载服务配置

检查完毕之后,在每个节点上重新加载配置,确保所有的配置生效

复制代码
systemctl daemon-reload

4. 启动 MinIO 集群

在每台虚拟机上重新启动 MinIO 服务:

arduino 复制代码
systemctl stop minio
systemctl start minio
systemctl enable minio

5. 验证集群状态

访问 MinIO Web 控制台:

  • 打开浏览器,访问 http://<任意节点IP>:9000
  • 使用 minioadminminioadmin 登录。

检查集群健康状态:

  • 进入 Monitoring,检查集群健康状态。

使用 MinIO 客户端(mc)验证集群:

  • 安装 mc
bash 复制代码
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/
  • 配置集群别名:
csharp 复制代码
mc alias set minio2 http://192.168.132.129:9000 minioadmin minioadmin
  • 查看集群信息:

    mc admin info minio2

6. 验证高可用性

这里将会使用mc测试MinIO集群的高可用性

  1. 安装mc
bash 复制代码
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/
#验证是否安装成功
mc --version
  1. 为某个节点配置别名(方便管理多个集群,并显著提高安全性,不用每次都将用户名、密码、访问地址写在命令行中)
csharp 复制代码
mc alias set minio1 http://192.168.132.128:9000 minioadmin minioadmin
mc alias set minio2 http://192.168.132.129:9000 minioadmin minioadmin
mc alias set minio3 http://192.168.132.130:9000 minioadmin minioadmin
  1. 验证别名配置情况

    mc admin info minio3

  1. 创建Bucket并上传文件

创建一个Bucket

bash 复制代码
mc mb minio1/test-bucket

上传一个文件到test-bucket

bash 复制代码
echo "This is a test file111." > test-file111.txt
mc cp test-file111.txt minio1/test-bucket/

列出test-bucket中的文件

bash 复制代码
mc ls minio1/test-bucket
  1. 模拟节点故障

关闭某一节点(例如:minio2)

ini 复制代码
[root@minio2 ~]# sudo systemctl stop minio

检测MinIO集群状态,并访问MinIO集群

bash 复制代码
mc admin info minio3
mc ls minio1/test-bucket
  1. 验证数据一致性

恢复节点

ini 复制代码
[root@minio2 ~]# sudo systemctl start minio

下载之前上传的文件,验证内容是否正确

bash 复制代码
mc admin info minio3
mc cp minio1/test-bucket/test-file222.txt ./downloaded-file222.txt
cat downloaded-file222.txt
  1. 总结

通过以上步骤,已经成功测试了 MinIO 集群的高可用性。以下是一些关键点:

  • 高可用性:即使某个节点故障,MinIO 仍然可以通过其他节点提供服务。
  • 数据一致性:MinIO 会自动同步数据,确保所有节点上的数据一致。
  • 读写操作:在集群正常运行的情况下,可以正常上传、下载和列出文件。

7. 其他配置

7.1. 防火墙配置

如果启用了防火墙,开放 MinIO 的端口(默认 9000):

css 复制代码
sudo firewall-cmd --zone=public --add-port=9000/tcp --permanent
sudo firewall-cmd --reload

7.2. 监控和日志

  • 查看 MinIO 日志:

    sudo journalctl -u minio.service -f

8. 总结

通过以上步骤,已成功基于已有的 MinIO 服务,扩展为一个 MinIO 集群。该集群具有高可用性和容错性,适合生产环境使用。如果有任何问题,请检查日志或参考 MinIO 官方文档

作者联系方式vx:2743642415

相关推荐
wdxylb2 小时前
云原生俱乐部-shell知识点归纳(1)
linux·云原生
飞雪20073 小时前
Alibaba Cloud Linux 3 在 Apple M 芯片 Mac 的 VMware Fusion 上部署的完整密码重置教程(二)
linux·macos·阿里云·vmware·虚拟机·aliyun·alibaba cloud
路溪非溪3 小时前
关于Linux内核中头文件问题相关总结
linux
Lovyk5 小时前
Linux 正则表达式
linux·运维
Fireworkitte6 小时前
Ubuntu、CentOS、AlmaLinux 9.5的 rc.local实现 开机启动
linux·ubuntu·centos
sword devil9007 小时前
ubuntu常见问题汇总
linux·ubuntu
ac.char7 小时前
在CentOS系统中查询已删除但仍占用磁盘空间的文件
linux·运维·centos
淮北也生橘128 小时前
Linux的ALSA音频框架学习笔记
linux·笔记·学习
华强笔记12 小时前
Linux内存管理系统性总结
linux·运维·网络
十五年专注C++开发12 小时前
CMake进阶: CMake Modules---简化CMake配置的利器
linux·c++·windows·cmake·自动化构建