MinIO 是一个高性能的分布式对象存储系统。 它是软件定义的,在行业标准硬件上运行,并且 100% 开源,主要许可证是 GNU AGPL v3。
MinIO 的不同之处在于它从一开始就被设计为私有/混合云对象存储的标准。 因为 MinIO 是专门为对象而构建的,所以单层架构可以毫不妥协地实现所有必要的功能。 结果是一个同时具有高性能、可扩展性和轻量级的云原生对象服务器。
虽然 MinIO 在二级存储、灾难恢复和归档等传统对象存储用例方面表现出色,但它在克服与机器学习、分析和云原生应用程序工作负载相关的挑战方面独树一帜。
一、Architecture
MinIO 被设计为云原生,可以作为由外部编排服务(如 Kubernetes)管理的轻量级容器运行。 整个服务器是一个大约 40MB 的静态二进制文件,并且在使用 CPU 和内存资源方面非常高效 - 即使在高负载下也是如此。 结果是您可以在共享硬件上共同托管大量租户。
MinIO 在带有本地连接驱动器 (JBOD/JBOF) 的商用服务器上运行。 集群中的所有服务器都具有相同的能力(完全对称架构)。 没有名称节点或元数据服务器。
MinIO 将数据和元数据作为对象一起写入,从而消除了对元数据数据库的需求。 此外,MinIO 执行所有功能(擦除代码、位腐烂检查、加密)作为内联、严格一致的操作。 结果是 MinIO 非常有弹性。
每个 MinIO 集群都是分布式 MinIO 服务器的集合,每个节点有一个进程。 MinIO作为单进程运行在用户空间,使用轻量级协程实现高并发。 驱动器被分组为擦除集(默认情况下每组 16 个驱动器),并且使用确定性哈希算法将对象放置在这些集中。
MinIO 专为大规模、多数据中心的云存储服务而设计。 每个租户运行他们自己的 MinIO 集群,与其他租户完全隔离,使他们能够保护他们免受升级、更新和安全事件的任何中断。 每个租户通过跨地域联合集群独立扩展。
二、MinIO 集群之间的数据同步
MinIO提供了数据复制和同步功能,使得可以在多个MinIO集群之间进行数据同步。这种功能使得可以实现跨地理位置的数据备份、容灾和故障恢复。
以下是MinIO集群之间数据同步的一些特点和功能:
1. 同步方式:MinIO支持多种数据同步方式,包括主从复制、多主集群复制和网关同步等。这些同步方式可以根据具体需求来配置,以实现数据在集群之间的自动同步。
2. 安全性:MinIO提供加密功能,可以对数据进行加密,确保数据在传输和存储过程中的安全性。
3. 容灾备份:通过配置数据同步,可以将数据从一个集群复制到另一个集群,实现数据的容灾备份。当一个集群发生故障时,可以快速切换到备用集群,确保数据的高可用性。
4. 网关同步:MinIO网关可以将数据同步到其他云存储服务,如Amazon S3或Google Cloud Storage。这样可以实现数据在不同云存储服务之间的同步和迁移。
总的来说,MinIO提供了灵活和可靠的数据同步功能,可以满足不同场景下集群之间数据的备份、同步和容灾需求。通过配置适当的同步方式和策略,可以实现数据在不同MinIO集群之间的高效同步和复制。
三、MinIO网关
MinIO网关是MinIO对象存储服务的一个组件,它允许将MinIO接口暴露为标准的Amazon S3或Google Cloud Storage(GCS)接口。简而言之,MinIO网关是一个代理层,它使MinIO可以兼容和支持Amazon S3和GCS的API,从而能够与现有的S3或GCS客户端应用程序无缝集成。
MinIO网关的工作方式如下:
1. API兼容性:MinIO网关实现了Amazon S3和GCS的API,并在其上提供相应的接口。这样,使用S3或GCS API的应用程序可以无需修改代码直接与MinIO网关进行交互。
2. 路由转发:当接收到来自S3或GCS API的请求时,MinIO网关将这些请求转发到MinIO服务器,并将响应返回给客户端。MinIO服务器处理存储和检索对象的请求。
3. 对象存储:MinIO网关并不直接存储对象,而是将数据传递给后端的MinIO服务器,MinIO服务器负责实际的对象存储。
MinIO网关对于那些已经使用Amazon S3或GCS API的应用程序来说非常有用。通过使用MinIO网关,这些应用程序可以无缝地迁移到MinIO对象存储服务,而无需对现有代码进行任何修改。同时,MinIO网关还允许将数据同步到Amazon S3或GCS,使得数据在不同云存储服务之间可以灵活迁移和同步。
需要注意的是,MinIO网关并不是MinIO的全部,它只是MinIO的一个组件,用于提供与S3或GCS API的兼容性。MinIO网关依赖于MinIO服务器来实际处理对象存储和数据管理的操作。