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

相关推荐
weixin_4284984921 分钟前
Using Huge Pages in Linux for Big Data Processing
linux·服务器
java-王森1 小时前
List中多个数据相同,保留最新日期数据
linux·windows·list
钡铼技术物联网关1 小时前
模块化革命:树莓派CM5嵌入式工业计算机如何重构嵌入式系统开发边界
linux·arm开发·边缘计算
m0_519523102 小时前
Linux——线程互斥和同步
linux·运维
东城绝神2 小时前
《Linux运维总结:基于银河麒麟V10+ARM64架构CPU源码编译部署单实例redis7.2.6》
linux·运维·架构
诚丞成2 小时前
进程状态:Linux的幕后指挥管理,穿越操作系统进程的静与动
linux
pingxiaozhao3 小时前
gogs私服详细配置
linux
rainFFrain3 小时前
对锁进行封装
linux·运维·服务器·vscode
liuweidong08024 小时前
【Pandas】pandas Series to_xarray
linux·运维·pandas
一只栖枝5 小时前
RHCA核心课程技术解析4:红帽服务管理与自动化深度实践
linux·运维·自动化·rhca·红帽认证