SUBNET、工程创意与你

SUBNET, Engineering Creativity, and You

当我们开始开发 MinIO 时,我们的目标是为对象存储设定新的标准。我们构建了一个软件定义的、兼容 S3 API 的对象存储,它是现有的最快、最可扩展的非 S3 解决方案。但我们并没有止步于此。我们还在通过我们的 SUBNET 体验打造完全不同的使用感受。SUBNET 将商业许可证与我们传奇的工程师直连支持计划相结合。

在支持您的关键任务对象存储方面,我们从不玩游戏,因此我们永远不会要求您首先提交一个 1 级工单来收集基本信息,然后再立即升级到“支持工程师”。通过 MinIO SUBNET 订阅,您可以绕过中间的通信层,直接与负责代码库的工程师联系。SUBNET 是与我们互动的**最佳**场所,许多客户告诉我们,他们喜欢使用基于浏览器的支持门户向工程师发送消息和共享文件。SUBNET 使通信变得无缝,提供类似 Slack/聊天类型的体验,您可以在其中一边思考问题,一边与工程师进行交流,工程师会在来回沟通的过程中引导您解决问题。这个过程不仅仅是解决问题,更是与 MinIO 工程师建立持续的关系,而这些工程师都是非常聪明,乐于解决问题的人。

SUBNET 用户向我们提出一些特定于其环境的独特请求并不少见。这就是 SUBNET 门户中集体解决问题的起点。我们有几位财富 100 强客户询问我们如何更快、更有效地备份大型对象——比如 10+ TB 到数 PB 规模的数据库。问题归结为“我们如何克服数据库供应商工具的限制,即它们使用单个流将单个超大型文件推送到 MinIO 存储桶”。虽然 MinIO 并没有重新发明轮子,但我们确实努力使轮子更加高效。本着这种精神,我们编写了 Jumbo 来通过创建并行流上传大型对象的片段来备份任何大小的对象。Jumbo 支持任何类型的海量上传,在我们的测试中,备份时间最多减少了 15 倍,并且正在用于备份 MariaDB、PostgreSQL、MongoDB 以及几乎所有其他数据库。

受解决复杂技术问题并简化他们生活——以及他们周围所有人的生活(从非工程同事到客户和开源社区用户)的驱动。他们构建工具来解决问题,其中一个工具尤其突出,因为它对我们产生了切实的积极影响,使我们能够更轻松地使用数据中心资源,从而保持高速编码并更快地帮助 SUBNET 用户。

MinIO 中内置了自动化的支持工具,例如详细的 健康检查和性能 报告以及 远程诊断,以便工程师能够快速了解客户的环境并快速响应 SUBNET 请求。为了帮助重现问题并运行与客户相同的应用程序,我们构建了一个沙盒化的本地环境,公司中的每个人都可以在其中部署任何他们想要的东西。我们认为完全的自由将使我们能够构建任何东西并探索任何新的开源应用程序以帮助客户,但用户采用率非常低。完全的自由很好,但我们需要一些更简单、更优雅的东西,它具有一套基本功能,可以使普通用户无需手动步骤和耗时的调整即可快速启动并运行。

考虑到这一点,我们的工程师主动构建了 VM Broker。我们使用 Linux 容器运行时 (LXC) 作为核心后端来启动虚拟机,并设计了一个类似于每个人都熟悉和喜爱的 MinIO 控制台 的控制台。结果是一个简单而强大的 GUI,用于部署用于测试和支持的虚拟机,它遵循与我们屡获殊荣的对象存储相同的原则——高性能、云原生、Kubernetes 原生和简单。

在解决 SUBNET 上的客户问题的过程中,我们的工程师不可避免地会遇到一些需要更好地理解的问题,例如“新的 KMS 更新正在占用大量内存”。为了诊断此问题,他们必须创建一个实例,以便他们可以在其中安装 MinIO 并尝试重现问题。

现在让我们看看我们在 VM Broker 中实现的一些功能,以便调试此问题。

创建实例

我们将从基础开始,向您展示如何创建实例。登录后,将显示一个门户,其中包含各种选项,例如

  • 创建实例
  • 创建负载均衡器和代理
  • 添加镜像,例如 Ubuntu、CentOS 等,以从中启动虚拟机
  • 添加 Hypervisor 节点以获得更多容量

在本例中,我们将创建一个简单的实例。单击页面右上角的“创建实例 +”按钮。

单击该按钮后,将有多个选项可用于启动您的虚拟机,让我们详细了解每个选项。

  • 名称:这是虚拟机启动时使用的名称,并设置主机名。
  • 镜像:在多个上传的镜像之间进行选择,在本例中,我们将选择 Ubuntu。
  • 数量:此设置将启动相同配置的相同实例,VM Broker 将确保自动解决任何命名冲突。
  • CPU、内存和磁盘:请注意,VM Broker 会自动将实例放置到具有最多可用资源(CPU、磁盘、内存)的节点上。
  • 公钥:实例启动后,这是用于登录实例的 SSH 公钥。
  • 节点:您还可以选择要在其中启动实例的特定 hypervisor。通常,此字段不填写,因此我们可以让 VM Broker 自动将虚拟机部署到具有足够资源的节点上。

实例启动后,请等待几分钟,让操作系统安装并完全上线。但是,您如何登录实例呢?同样,我们的工程师即使对于非工程人员也秉持着“自助”的理念,展示了登录命令。

只需在您喜欢的终端中输入此命令,瞧,您就可以登录到您的虚拟机实例,而无需任何 SSH 隧道或 堡垒主机

ssh -p 30005 ubuntu@65.49.37.20

编辑实例

让我们了解一些我们可能偶尔需要执行的其他基本功能。

最常见的一些功能包括:

  • 删除实例
  • 启动和停止实例
  • 添加和删除 SSH 公钥

要删除实例,登录后导航到“实例”。

通过单击“列”图标添加或删除列,以便您可以查看提供有关实例的更多信息的列,例如 CPU 数量、内存等。

选择实例并通过单击“删除”图标将其删除。您将收到一个确认删除的提示,并且实例将被删除。

要停止和启动实例,请单击实例记录。在左侧,您将看到几个选项卡:

  • 摘要
  • 编辑
  • 访问
  • 审计
  • 备份

我们之前已经介绍了一些内容,但让我们继续点击“编辑”选项卡。

单击“编辑”选项卡后,将出现一个切换开关,用于“启动或停止实例”。我们可以使用该开关来停止实例。


要添加或删除用于 SSH 访问的公钥,请单击“访问”。

审计”选项卡允许我们查看实例在其整个生命周期中执行的所有操作。如果您想跟踪更改(例如添加和删除的 SSH 公钥、实例停止和启动等重要事项),这将特别有用。

其他功能

作为一家处于数据存储能力和备份前沿的公司,我们身体力行。即使对于像 VM Broker 这样的内部工具,我们也强烈建议启动实例的人员对其进行备份,以防 Hypervisor 出现故障或仅仅是为了最佳实践。我记得有一次,我错误地发出 rm -rf 命令,意外删除了 /usr 目录。不用说,那是我糟糕的一天,因为我不得不从具有相似配置的另一个虚拟机中恢复它,并希望一切都能恢复正常,但事实并非如此,我不得不重新开始。因此,拥有良好的备份集至关重要。以下是备份选项卡的屏幕截图。

在我的 DevOps 职业生涯早期,我就了解到,备份的优劣取决于其恢复能力。您可以拥有世界上最好的备份软件和流程,但如果您无法快速、自信地将其恢复到原始状态,那么您实际上就是把所有的鸡蛋都放在一个脆弱的篮子里,现在所有的努力都白费了。您必须确保所做的备份实际上是可恢复的工作备份。以下是恢复过程的屏幕截图。

构建工具和解决问题

虽然 VM Broker 目前是内部工具,但我们今天与您分享它,是为了让您了解我们如何在 MinIO 中解决问题,并让您一窥 SUBNET 背后的情况。在我们构建自己的解决方案之前,我们确实考虑过其他解决方案,例如 VMware。对于大多数用例,我们需要一些简单但功能丰富的工具,但由于 VMware 的企业级功能,它的成本有些过高。因此,在仔细权衡了构建与购买的方案后,我们决定自己构建——此外,我们认为它是一个很酷的工具。

MinIO 的每一位成员都热爱自己的工作。我们喜欢从与现状不同的角度解决现实世界的问题,并且当答案是云原生且优雅时,我们会感到非常欣慰。MinIO 工程师引领潮流,我们作为一个团队协作。凭借这种方法,我们开发了诸如 Jumbo(用于大型对象备份)和 VM Broker(作为内部工具,简化构建和部署支持和测试所需的实例)等工具。

我们在本文中分享的关于 VM Broker 的内容,仅仅是 Iceberg 的冰山一角。VM Broker 和 SUBNET 还有更多内容。我们还编写了更多代码来解决问题,例如 Mint(一个 S3 API 兼容性检查器)和 DirectPV(简化持久卷的使用)。

如果您想了解更多关于这些工具或 SUBNET 的信息,请在 Slack 上联系我们,我们会为您提供帮助!