在 Mesosphere DC/OS 上部署 MinIO 云存储
容器编排正成为部署应用程序的默认方式。开发人员从一开始就将他们的现代应用程序设计为在容器中运行,这使得部署速度更快,并且更具弹性。即使是遗留应用程序也正在以各种方式采用容器来获取这些优势。
在使应用程序能够容器化的众多特性中,它处理非结构化数据的方式是最重要的之一。在过去,处理非结构化数据的默认方式是将其全部转储到服务器的文件系统中,但是对于容器化应用程序来说,使用主机文件系统没有任何意义。这是因为在编排的环境中,容器可以被调度——或重新调度——到集群中的任何主机上,但是写入先前主机的数据无法与该容器一起重新调度。
最佳解决方案是使用一个具有易于使用、广泛接受的 API 的云存储系统来处理存储。AWS S3 是一个选项,但如果您更希望控制您的应用程序数据呢?如果您想在您的基础设施的云中运行非结构化数据存储,或者在本地运行一个经济高效的解决方案,并且仍然使用 S3 作为数据传输的协议呢?在**没有云存储**和**完全托管的对象存储**之间存在差距,MinIO 云存储服务器努力填补这一空白。
MinIO 是一个云原生存储服务器,它提供了一个开源的 AWS S3 替代方案。
什么是云原生?
云原生应用程序旨在利用集群中资源的流动性。云原生应用程序不需要最终会与集群的编排层竞争的资源管理;它应该依赖于编排层在分配资源的任何地方运行应用程序。
作为一个真正的云原生应用程序,MinIO 专注于存储,并且做得非常好。它将资源管理的责任留给了像 Mesosphere DC/OS(数据中心操作系统)这样的编排平台。与具有自身资源管理机制的应用程序相比,这使得 MinIO 能够很好地扩展。
DC/OS 通过运行应用程序的多个隔离实例,允许容器化应用程序以可持续的方式扩展。例如,一个 HTTP 服务器,由于其无状态特性,可以很容易地容器化。使用 Docker 容器和 DC/OS,您可以通过添加尽可能多的实例来处理额外的负载,从而扩展您的 HTTP 服务容量。
在云原生环境中,可扩展性不是应用程序的功能,而是编排的功能。
MinIO 的设计也是以类似的方式进行扩展。您的每个 DC/OS 集群租户都可以拥有自己的隔离的 MinIO 服务器实例,该实例由该租户所需的存储支持。这样,您可以通过为新租户添加新的 MinIO 实例来适应新的租户和存储需求。
不仅可以扩展,这种设计还有助于将故障域限制在较小的范围内。
第一个 MinIO 实例的复杂性与第百万个 MinIO 实例的复杂性没有区别。
请记住,当应用程序在容器或编排平台上运行时,它不会自动成为云原生的。设计使应用程序成为云原生的!
在 Mesosphere DC/OS 上部署 MinIO
在 DC/OS 上部署应用程序很简单;您可以使用 Universe 软件包,或创建一个自定义配置文件。我们 MinIO 最近发布了一个官方的 Universe 软件包,以便在 DC/OS 集群上进行一键式 MinIO 部署。
在本帖的其余部分,我将解释使用我们的新 Universe 软件包在 DC/OS 上部署独立 MinIO 服务器的过程,并讨论如何为多租户环境扩展此设置。
先决条件
要开始,您需要一个运行 DC/OS 1.8 或更高版本的集群。您还需要安装Marathon-LB。请注意 Marathon-LB 正在运行的公共代理的 IP 地址;稍后您将需要它来查找负载均衡器。或者,您可以配置一个主机名指向 Marathon-LB 正在运行的公共代理。
您可以使用 DC/OS UI 或命令行界面来安装 MinIO 软件包。
通过 DC/OS GUI 安装 MinIO 软件包
访问 DC/OS 管理页面,然后单击左侧菜单栏上的“Universe”。然后单击“Packages”选项卡并搜索 MinIO。看到该软件包后,单击右侧的“Install”按钮。
接下来,您需要输入配置值,例如您希望与 MinIO 实例一起使用的存储和服务类型。最后在“networking >> public-agent”下输入公共 Marathon-LB IP 地址,然后单击“Review and Install”。
这完成了安装过程。您现在需要从 MinIO 容器日志中获取访问密钥和密钥。单击“Services”并在 DC/OS 管理页面中选择 MinIO 服务。然后转到“logs”选项卡并复制 accesskey 和 secretkey。
您可以通过 Web 浏览器或MinIO mc连接到 MinIO 实例。
通过 DC/OS CLI 安装 MinIO 软件包
要通过 CLI 安装 MinIO 软件包,请键入
$ dcos package install minio
其余过程与上述基于 GUI 的安装过程基本相同。
DC/OS CLI 还提供通过 dcos install 命令安装自定义软件包的选项。有关更多详细信息,请参阅CLI 参考文档。
MinIO 服务器模式
除了我们上面部署的默认模式之外,MinIO 还支持不同的模式。根据您的需求,这些模式可能会派上用场。您可以通过自定义配置脚本轻松地基于这些 MinIO 模式创建部署。
- MinIO 擦除编码模式:当 MinIO 服务器启动时,如果至少有四个驱动器,则会自动进入擦除编码模式。此模式使用擦除码和校验和保护数据免受硬件故障和静默数据损坏的影响。在此模式下,您可以丢失一半的驱动器,但仍然能够恢复数据。
- MinIO 分布式模式:分布式模式允许您运行多个(最小 4 个,最大 16 个)节点作为一个单一的存储服务器。
- MinIO 共享后端模式:MinIO 共享后端模式提供了一个选项,可以在相同的存储后端(如 NAS)上运行多个 MinIO 实例,并在前面运行一个负载均衡器(如Marathon-LB)以均匀地分配负载。对后端的写入是同步的。
在您使用 MinIO 的过程中,请帮助我们了解您的用例以及我们如何更好地帮助您!填写MinIO 部署最佳实践表单(不到一分钟),并有机会在 MinIO 网站上展示您的 MinIO 私有云设计,并将其展示给 MinIO 社区。