SUBNET 健康检查和性能

SUBNET HealthCheck and Performance

MinIO 订阅网络(简称 SUBNET)伴随着商业订阅提供安心服务 - 从双重许可证模型(AGPL 和商业)到直达工程师的支持模型。

本文重点介绍与这种独特模型相关的一些功能,是详细介绍商业关系带来的功能和能力系列文章中的第二篇。您可以在此处找到第一篇文章,内容关于沟通方式和直达工程师体验 此处

健康检查

为了全面了解客户端系统,MinIO 开发了一种名为 HealthCheck 的功能,该功能仅对商业客户可用。

HealthCheck 为受支持的组件提供图形用户界面,并持续运行诊断检查,以确保您的环境以最佳状态运行。它还会编目每个硬件和软件组件,以确保环境的一致性,同时发现任何差异。通过快速识别性能和集成问题,这加快了根本原因分析和问题修复。

配置 SUBNET

在我们将任何此数据发送到 SUBNET 之前,让我们将我们的集群注册到 SUBNET 门户。我们始终建议我们的客户注册他们的集群 - 这有助于我们帮助他们,并且非常安全。注册集群是获取此信息的最简单有效的方法。也就是说,如果您处于没有出站访问权限的隔离配置中,您也可以使用--airgap标志生成诊断信息并手动将其上传到 SUBNET 门户。

$ mc license register minio

SUBNET 用户名: aj+customer@minio.io
密码:
在电子邮件中收到的 OTP:

minio 注册成功。

如您所见,连接和启动非常简单。成功注册后,您应该会看到类似上面的消息。

诊断

让我们从“诊断”选项卡开始。“诊断”选项卡相当于深度扫描。它审查实例的所有性能特征,并识别可能值得进一步调查/考虑的区域。我们将详细介绍每个区域。

TLS 配置

TLS 诊断将检查集群中是否启用了 TLS。即使在集群通信内部,也必须启用和配置 TLS,以确保一切安全。您可以使用 MinIO 的 certgen 命令生成自签名证书,该证书可用于评估启用了 TLS 的安装。

CPU 内核

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。文件系统可以拥有的 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 版本应在服务器之间匹配,因为具有不一致的版本意味着具有不一致的功能集。在极少数情况下,它也可能不兼容,您在其中运行不同版本的 MinIO 且具有不同的功能集,这会导致边缘情况问题。

现在是激动人心的部分!我们如何将所有这些有用的诊断信息发送到 SUBNET?继续运行此命令。

mc support callhome enable --diag minio

mc support diag minio


● CPU 信息 ... ✔
● 磁盘信息 ... ✔
● 操作系统信息 ... ✔
● 内存信息 ... ✔
● 进程信息 ... ✔
● 服务器配置 ... ✔
● 系统错误 ... ✔
● 系统服务 ... ✔
● 系统配置 ... ✔
● 管理员信息 ... ✔


mc: MinIO 诊断报告已成功上传到 SUBNET。请点击此处查看
我们的分析:https://subnet.min.io/health/1/860

操作结束时,您将收到一个仅可由您的团队和 MinIO 工程师通过门户网站中的分析报告访问的 SUBNET 链接。

日志

使用 MinIO,您可以将日志发送到多个目标进行分析。您可以将日志发送到远程目标,例如 ElasticSearch 提供的 Webhook,也可以直接发送到 SUBNET 支持门户 - 无需手动上传。通过共享日志,您可以为协助您解决问题的 MinIO 工程团队提供集群操作的更详细的信息。您可以使用以下命令为集群启用“呼叫主页”日志来自动将日志发送到 SUBNET

mc support callhome enable --logs minio

启用后,日志可能需要几分钟才能发送到 SUBNET 门户,请确保等待 30 分钟,然后刷新以进行检查。

性能

请运行以下命令以捕获集群的性能详细信息。这将检查网络性能、驱动器性能以及对象性能。在我们之前的一篇博文中,我们详细介绍了这些测试的特点。

简而言之,性能测试不仅检查磁盘的读写性能,还测试 MinIO 内的对象 PUT 和 GET 操作,以测试端到端的对象性能。

网络性能:✔


节点 接收 发送

http://minio1:9000 1.5 GiB/s 1.3 GiB/s

http://minio2:9000 1.6 GiB/s 1.6 GiB/s

http://minio3:9000 1.6 GiB/s 1.5 GiB/s

http://minio4:9000 1.4 GiB/s 1.7 GiB/s


磁盘性能:✔


节点 路径 读取 写入

http://minio1:9000 /disk1 445 MiB/s 150 MiB/s

http://minio1:9000 /disk2 451 MiB/s 150 MiB/s

http://minio3:9000 /disk1 446 MiB/s 149 MiB/s

http://minio3:9000 /disk2 446 MiB/s 149 MiB/s

http://minio2:9000 /disk1 446 MiB/s 149 MiB/s

http://minio2:9000 /disk2 446 MiB/s 149 MiB/s

http://minio4:9000 /disk1 445 MiB/s 149 MiB/s

http://minio4:9000 /disk2 447 MiB/s 149 MiB/s


对象性能:✔


吞吐量 IOPS

PUT 461 MiB/s 7 objs/s

GET 1.1 GiB/s 17 objs/s


MinIO 2023-02-27T18:10:45Z,4 台服务器,8 个驱动器,64 MiB 对象,6 个线程

在 SUBNET 门户的“性能”选项卡下,您将看到在上一步中运行的上传报告。

性能分析

Linux 从一开始就内置了用于可见性的工具。从系统上 RAM 的运行速度到应用程序可能何时停止。问题在于有很多工具,哪个是合适的性能分析工具?幸运的是,MinIO 所使用的编程语言 GoLang 内置了最好的性能分析器之一。收集这些性能分析数据很容易,但确实需要一些关于软件开发过程内部的知识。借助 SUBNET,我们使收集和发送这些性能分析数据变得非常容易。最棒的是,您不需要知道如何解读这些数据,MinIO 工程团队很乐意查看这些性能分析数据并为您解读。

您可以仅运行 MinIO 的性能分析工具 10 秒钟,即可获取所有可供您查看并与我们在 SUBNET 上共享的信息。

mc support profile minio
mc: 正在为 'minio' 进行 10 秒的性能分析...已成功上传到 SUBNET。

在性能分析类型下,您不仅可以看到各种性能分析类型(例如 CPU、内存、块等),还可以通过点击它们查看其结果。

下面是 CPU 性能分析的示例。如果您点击其他框,您应该也会看到其他性能分析数据。在这里,您可以检查各种详细信息,但最重要的是,它可以让编写代码的 MinIO 工程师准确地了解正在发生的事情以及在 CPU 或 GO 运行时本身的目标瓶颈在哪里。

检查

inspect 命令收集与特定路径关联的对象的数据和元数据。数据从存储分片的每个后端驱动器中汇编。此命令会将结果上传到“检查”选项卡。

请运行以下命令进行检查

mc support inspect "minio/aj-test/MinIO Site Replication.jpg"

已成功上传到 SUBNET。

最后的话

在这篇文章中,我们尽可能详细地介绍了 HealthCheck 中涉及的内容。我们向您展示了诊断的不同组件、如何从集群中传递日志、运行网络/驱动器/对象性能测试,以及对象和集群的性能分析和检查。使用企业版许可证,您将能够使用 `mc support` 命令发送此信息一次或定期发送 - 由您决定。您也可以在运行相同命令的隔离模式后,手动将此信息上传到 SUBNET 门户。在本练习中,我们向您展示了如何自动执行此操作并将结果直接从集群推送。

如果您想了解更多关于运行 HealthChecks 的信息,或者想启用它,请在 Slack 上联系我们,我们会帮助您开始!