子网健康检查和性能
MinIO 订阅网络(简称 SUBNET)附带商业订阅,让您高枕无忧 - 从双重许可模式(AGPL 和商业)到直接面向工程的支持模式。
这篇文章重点介绍了与这种独特模型相关的一些特性,并且是详细介绍商业关系所带来的特性和功能的系列文章中的第二篇。您可以在此处找到第一篇关于沟通方法和直接面向工程师的经验的帖子。
健康检查
为了全面了解客户端系统,MinIO 开发了一种名为 HealthCheck 的能力,仅供商业客户使用。
HealthCheck 为受支持的组件提供图形用户界面,并持续运行诊断检查以确保您的环境以最佳状态运行。它还对每个硬件和软件组件进行编目,以确保整个环境的一致性,同时发现任何差异。这通过快速识别性能和集成问题来加快根本原因分析和问题补救。

配置子网
在我们将任何这些数据发送到 SUBNET 之前,让我们用 SUBNET 门户注册我们的集群。我们始终建议我们的客户注册他们的集群 - 这有助于我们帮助他们并且非常安全。注册集群是迄今为止获取此信息最简单、最有效的方法。话虽这么说,如果您处于没有出站访问的气隙配置中,您还可以使用该--airgap标志生成诊断并将其手动上传到 SUBNET 门户。
如您所见,连接和启动非常简单。注册成功后,您应该会看到如上所示的消息。
诊断
让我们从“诊断”选项卡开始。诊断选项卡相当于深度扫描。它审查实例的所有性能特征并确定可能值得进一步调查/考虑的领域。我们将详细介绍每个领域。
TLS配置
TLS 诊断将检查集群中是否启用了 TLS。在集群通信之间启用和配置 TLS 非常重要,这样一切都是安全的。您可以使用 MinIO 的certgen命令生成自签名证书,该证书可用于评估启用 TLS 的安装。
中央处理器核心
MinIO 建议在运行 MinIO 的节点上至少有 8 个 CPU 内核,以确保基础设施不会动力不足。通常,如果服务器上的总内核少于 8 个,则会显示“警告”。最重要的是,在同一个池中配置相同的一组节点,使它们尽可能同构。这是 MinIO 推荐的硬件清单,其中详细介绍了其中一些硬件要求。

交换内存
如果您看到交换内存问题,它告诉我们两件事:集群物理内存不足,并且它使用的任何内存都很慢,因为它正在从磁盘读取它。作为一般规则,MinIO 建议服务器尽可能使用物理内存,并且应该完全禁用 SWAP。交换的原因是内存存储在磁盘上,这可能会导致性能问题,因为从磁盘读取比物理内存慢很多。
CPU 和驱动器匹配
通常 CPU 品牌、型号和核心数量应该在节点之间匹配,MinIO 建议这样做以避免任何性能下降。这是为了确保在硬件级别没有瓶颈。无论 MinIO 在哪个服务器上运行,都应该有一个基本假设,即所有 CPU 在服务器池中都是相同的,以获得最佳性能。
驱动器也应该在服务器之间保持一致。让一些服务器运行 SSD 而其他服务器运行 SATA HDD 将极大地影响 MinIO 性能。您会看到磁盘 I/O 中的随机瓶颈,并且根据存储对象的驱动器,性能会受到影响。例如,如果对象存储在具有 SATA 磁盘的节点之一上,则从该磁盘读取/写入的速度会慢得多。
驱动器状态和使用
所有驱动器都必须在线,以确保 MinIO 有正确数量的节点来分发具有配置的容错级别的纠删码数据。客户部署出现问题的常见原因之一是系统存储空间达到 0%。作为 DevOps 工程师,您无法想象在存储空间不足时应用程序崩溃的次数。
索引节点使用
Inode 用于跟踪磁盘上的文件。有时可能有足够的驱动器空间,但如果您有很多文件会快速创建和删除,其中一些文件可能会徘徊,不会放弃分配给它们的索引节点。一个文件系统可以拥有多少 inode 是有限制的,因此不断删除大量小文件会导致它进入这种状态。通常,重新启动正在使用这些文件的应用程序会导致它释放这些 inode。
簇的大小
MinIO 建议生产集群大小至少为 4 台服务器,以便纠删码设置具有足够的奇偶校验来分发数据,以防其中一个节点出现故障。尽管可以选择在集群运行后向集群添加更多节点,但根据您计划在集群中存储的数据量来规划集群,并考虑到正确的大小,效率要高得多。在操作和对象性能方面明智 - 建议从一开始就使集群配置尽可能简单。
文件系统匹配和支持
与其他组件类似,MinIO 建议所有数据驱动器上的文件系统也相同。在格式化驱动器时,至少应该使用 XFS 文件系统而不是 EXT4。这将确保所有节点的性能也统一。集群操作员应该避免使用旧的文件系统,例如 ext4,也不要使用任何引入额外持久性的机制,例如 RAID、LVM、ZFS、NFS、GlusterFS 等,因为 MinIO 通过其纠删码设置将确保数据分布在节点之间,因此不需要另一层,因为它会在管理基础设施时造成额外的技术债务。
内存大小
MinIO 建议每个节点至少 128GB 内存以获得最佳性能。最终这取决于驱动器的数量和对集群发出的并发请求。与驱动器类似,内存大小也必须在所有服务器之间匹配,以便配置相同。
操作系统和 Linux 内核版本匹配
根据 MinIO 硬件清单的建议,所有服务器上的操作系统必须相同。这是为了确保库、文件系统、内核功能在所有节点上得到同等支持。通过让每个节点上的操作系统都匹配,甚至是版本号,您可以确保以最少的干预将 MinIO 无缝升级到未来版本。不推荐任何早于版本 4 的 Linux 内核。通常,我们建议 Linux 内核版本 >= 5.x 以确保支持必要的内核标志和功能。
MinIO 服务器参数
所有主机的 MinIO 服务器命令行参数必须相同。这是 MinIO 在配置中接收驱动器布局和服务器布局的地方。这就是集群中的其他服务器知道如何相互通信的方式。所以这些匹配很重要。
服务器进程和系统设置
通常,您不应以 root 身份运行任何进程,因为如果存在任何漏洞,则可以利用它获得完全 root 访问权限。相反,MinIO 进程应该只允许特定用户访问一组特定的操作。这将确保 MinIO 服务器不是 root 用户。
最低版本
正如我们在更新和重启的最佳实践中讨论的那样,MinIO 版本应该跨服务器匹配,因为版本不一致意味着功能集不一致。在极少数情况下,当您运行具有不同功能集的不同版本的 MinIO 时,它也可能不兼容,这可能会导致边缘情况问题。
所以现在是有趣的部分!我们如何将所有这些有用的诊断信息发送到 SUBNET?继续并运行此命令。
在操作结束时,您将收到一个指向 SUBNET 的链接,该链接只能由您的团队和 MinIO 工程师通过门户中的分析报告访问。



日志
使用 MinIO,您可以将日志发送到多个目的地进行分析。您可以将日志发送到远程目标,例如 ElasticSearch 提供的 webhook,您也可以将它们直接发送到 SUBNET 支持门户——无需手动上传。通过共享日志,您可以向 MinIO 的工程团队提供有关集群操作的更详细的细节。您可以使用以下命令为集群启用回拨日志,从而自动将日志发送到 SUBNET:
启用它后,可能需要几分钟才能将日志发送到 SUBNET 门户,给它 30 分钟以确保确定,然后刷新以进行检查。

表现
请运行以下命令以捕获集群的性能详细信息。这会检查网络性能、驱动器性能以及对象性能。在之前的博客中,我们详细介绍了这些测试的特征。
简而言之,Performance测试不仅检查磁盘的读写性能,还测试MinIO中的PUTs和GETs对象,以测试端到端的对象性能。
在 SUBNET 门户中,在“性能”选项卡下,您将看到在上一步中运行的上传报告。

轮廓
Linux 是使用可见性工具从头开始构建的。从 RAM 在系统上的运行速度到应用程序何时可能停止运行。问题是那里有很多工具,哪个是正确的分析工具?值得庆幸的是,编写 MinIO 的编程语言 GoLang 内置了最好的分析器之一。收集这些配置文件很容易,但确实需要一些关于软件开发过程内部知识的知识。通过 SUBNET,我们使收集和发送这些配置文件的过程变得非常简单。最好的部分是你不需要知道如何解释这些,MinIO 工程团队会很乐意查看这些配置文件并为你解释。
您只需运行 MinIO 的分析工具 10 秒钟,即可获得所有可用信息,供您在 SUBNET 上查看并与我们分享。
在配置文件类型下,您不仅可以看到各种配置文件类型,如 CPU、内存、块等,还可以通过单击查看它们的结果。

以下是 CPU 配置文件的示例。如果您单击其他框,您应该也会看到其他配置文件。在这里你可以检查各种细节,但最重要的是它让编写代码的 MinIO 工程师准确地看到正在发生的事情以及在 CPU 或 GO 运行时本身中的目标瓶颈。

检查
inspect 命令收集与特定路径关联的对象的数据和元数据。数据是从存储分片的每个后端驱动器组装而来的。此命令会将结果上传到检查选项卡。
请运行以下命令进行检查

最后的话
在这篇文章中,我们尽可能详细地介绍了健康检查所涉及的内容。我们向您展示了诊断的不同组件,如何从集群传输日志,运行网络/驱动器/对象性能测试,以及分析和检查对象和集群。使用企业许可证,您将能够使用“mc support”命令一次或定期发送此信息——这取决于您。在气隙模式下运行相同的命令后,您还可以手动将此信息上传到 SUBNET 门户。在本练习中,我们向您展示了如何自动执行此操作并直接从集群推送结果。
如果您想了解有关运行 HealthChecks 的更多信息,或者想要启用它,请在 Slack 上给我们一个 ping,我们会帮助您!