基于Ubuntu系统,2台服务器使用Docker搭建MinIO集群及验证方法

MinIO集群简介

MinIO是一个高性能的分布式对象存储系统,兼容Amazon S3(Simple Storage Service)云存储服务的API。它支持横向扩展,提供高可用性和数据冗余,非常适合处理大量非结构化数据,如图片、视频、日志文件等。

为什么使用Docker搭建MinIO集群

使用Docker容器化技术搭建MinIO集群可以简化部署和管理过程,提高系统的可移植性和可扩展性。Docker容器的隔离性也使得每个MinIO节点的配置和管理变得更加简单。

环境准备

  • 两台Ubuntu服务器,已安装Docker环境。
  • 每台服务器上至少有两个数据目录用于MinIO的数据存储。

搭建步骤

步骤1:配置主机名解析

在两台服务器的/etc/hosts文件中添加对方的主机名解析:

复制代码
echo "192.168.1.101 minio-node1" | sudo tee -a /etc/hosts
echo "192.168.1.102 minio-node2" | sudo tee -a /etc/hosts

步骤2:创建Docker卷

在每台服务器上创建Docker卷用于数据存储:

复制代码
docker volume create minio-data1
docker volume create minio-data2

步骤3:启动MinIO服务

在每台服务器上使用Docker运行MinIO容器,并指定数据卷和网络模式:

复制代码
docker run -d --name minio \
  --restart=always --net=host \
  -e "MINIO_ROOT_USER=minioadmin" \
  -e "MINIO_ROOT_PASSWORD=minioadmin" \
  -v minio-data1:/data1 \
  -v minio-data2:/data2 \
  minio/minio server \
  --address ":9000" \
  http://minio-node1:9000/data1 http://minio-node1:9000/data2 \
  http://minio-node2:9000/data1 http://minio-node2:9000/data2

步骤4:验证集群状态

使用MinIO客户端工具mc来验证集群状态:

复制代码
mc alias set myminio http://minio-node1:9000 minioadmin minioadmin
mc admin info myminio

如果输出显示所有节点都已加入集群并且状态正常,说明集群搭建成功。

使用Python连接MinIO集群示例

安装MinIO Python客户端库

复制代码
pip install minio

Python代码示例

复制代码
from minio import Minio
from minio.error import S3Error

# 初始化MinIO Client
client = Minio(
    "minio-node1:9000",
    access_key="minioadmin",
    secret_key="minioadmin",
    secure=False
)

# 检查存储桶是否存在,不存在则创建
bucket_name = "my-bucket"
try:
    client.make_bucket(bucket_name)
except S3Error as exc:
    if exc.code != 'BucketAlreadyOwnedByYou':
        raise

# 上传文件
file_path = "/path/to/your/file"
try:
    client.fput_object(bucket_name, "object-name", file_path)
except S3Error as exc:
    print("Error occurred: ", exc)

# 列出存储桶中的文件
objects = client.list_objects(bucket_name)
for obj in objects:
    print(obj.object_name)

总结

通过上述步骤,我们成功在两台Ubuntu服务器上使用Docker搭建了MinIO集群,并使用Python进行了连接和操作的示例。这种部署方式不仅简化了配置和管理,还提高了系统的可扩展性和可靠性。MinIO集群的搭建和使用是处理大规模数据存储的有效解决方案。

相关推荐
也许,也会22 分钟前
PLC NCU1750与PLC1200s7通讯
运维·服务器
Hello.Reader1 小时前
一文吃透 Protobuf “Editions” 模式从概念、语法到迁移与实战
linux·服务器·网络·protobuf·editions
jzzy_hony2 小时前
移植Qt4.8.7到ARM40-A5
qt·ubuntu·arm·终端
江池俊2 小时前
解锁无限创意:Tldraw+cpolar如何通过内网穿透技术打破空间限制
docker
Honeysea_702 小时前
容器的定义及工作原理
人工智能·深度学习·机器学习·docker·ai·持续部署
2418ly2 小时前
docker常用命令
运维·docker·容器
yuxb732 小时前
Docker学习笔记(三):镜像与容器管理进阶操作
笔记·学习·docker
明月(Alioo)3 小时前
机器学习入门,用Lima在macOS免费搭建Docker环境,彻底解决镜像与收费难题!
macos·docker·容器
davenian5 小时前
< 自用文 OS 有关 > (续)发现正在被攻击 后的自救 Fail2ban + IPset + UFW 工作流程详解
ubuntu·bash·fail2ban·ipset
叫我阿柒啊5 小时前
从Java全栈到云原生:一场技术深度对话
java·spring boot·docker·微服务·typescript·消息队列·vue3