使用 InfluxDB 3 企业模式简化多节点设置
作者:Peter Barnett / 开发者
2025 年 4 月 2 日
导航至
随着您的时间序列数据增长,管理不断增加的工作负载可能会迅速变成令人头疼的问题。高数据摄取率、大量(且复杂)的查询、密集的处理任务以及例行维护(如数据压缩)通常会争夺有限的资源。这会导致不可预测的性能和较慢的响应时间,而常见的解决方案通常会引入操作复杂性。实现可靠、高性能的数据库操作需要战略性的资源管理和精确的工作负载隔离。
InfluxDB 3 企业版 通过专门的节点“模式”来应对这些挑战,从而简化多节点部署。借助为处理特定类型工作负载量身定制的不同模式,InfluxDB 能够为您的时间序列数据基础设施实现无缝扩展、更高的可用性和一致的性能。借助企业版全新的无盘架构,数据仅持久化到对象存储,从而创建无需节点之间信息共享的容错设置。唯一的要求是所有节点共享相同的对象存储连接。这确保您的系统可以高效地处理不断增长的数据量,最大限度地减少停机时间,并提供可靠的实时洞察,即使需求波动,也无需增加操作复杂性。
了解服务器模式
InfluxDB 3 企业版支持五种不同的服务器模式,让您可以精确地根据您的特定工作负载需求定制节点功能
- ingest:处理传入的时间序列数据写入,不受查询或压缩进程的争用。
- query:专用模式,专门针对处理读取操作和查询进行优化,确保快速响应时间和一致的性能。通过添加节点并将它们指向对象存储进行水平扩展。
- compact:运行压缩进程以优化存储效率、管理存储成本并通过减少数据碎片来维持高查询性能。每个集群只能有一个节点以压缩模式运行。
- process:专门处理内部处理引擎任务,非常适合自定义转换和实时分析操作。
- all:在一个节点中结合了 ingest、query、compact 和 processing 功能。非常适合小规模部署或测试,但在重负载下可能会影响性能。
这种细粒度的节点配置方法使您可以独立扩展各个工作负载,将任务隔离到专用基础设施,并在您的 InfluxDB 集群中实现更可预测、可管理和高效的性能。
构建基本的双节点设置
让我们从构建最简单的多节点配置开始。我们将有一个节点运行 all
模式,第二个节点运行 ingest
、query
和 process
。我们没有在第二个节点上指定 compact
,因为每个集群只能有一个压缩器。此设置为我们提供了基本的摄取和查询高可用性。
节点 1 (全部)
influxdb3 serve \
--cluster-id cluster01 \
--node-id node01 \
--mode all \
--object-store s3 \
--bucket influxdb-storage \
--aws-access-key-id [AWS_ACCESS_KEY_ID] \
--aws-secret-access-key [AWS_SECRET_ACCESS_KEY]
节点 2 (摄取、查询)
influxdb3 serve \
--cluster-id cluster01 \
--node-id node02 \
--mode ingest,query,process \
--object-store s3 \
--bucket influxdb-storage \
--aws-access-key-id [AWS_ACCESS_KEY_ID] \
--aws-secret-access-key [AWS_SECRET_ACCESS_KEY]
双节点设置,实现基本高可用性
通过此设置,如果一个节点发生故障,另一个节点可以无缝处理写入和查询,确保不间断运行。
通过专用压缩增强性能
虽然双节点设置为您提供了基本的高可用性,但它也有一些限制;首先,一个节点必须处理压缩,因此您的节点无法以相同的性能服务读取和写入。为了获得最佳的查询和摄取性能,请将压缩任务与您的主节点分离。除了创建一个可以垂直扩展以处理更密集工作负载的单个压缩器之外,此设置还可以避免资源争用并保持平稳运行。
节点 1 和 2 (摄取、查询、处理)
以相同的方式配置每个摄取/查询节点,只需对 --node-id
选项进行简单调整即可。
influxdb3 serve \
--cluster-id cluster01 \
--node-id [NODE_ID] \
--mode ingest,query,process \
--object-store s3 \
--bucket influxdb-storage \
--aws-access-key-id [AWS_ACCESS_KEY_ID] \
--aws-secret-access-key [AWS_SECRET_ACCESS_KEY]
节点 3 (压缩器)
要设置专用压缩器,我们只需将 --mode
设置为 compact
。
influxdb3 serve \
--cluster-id cluster01 \
--node-id compactor01 \
--mode compact \
--object-store s3 \
--bucket influxdb-storage \
--aws-access-key-id [AWS_ACCESS_KEY_ID] \
--aws-secret-access-key [AWS_SECRET_ACCESS_KEY]
三节点设置,配备专用压缩器
在此设置中,我们隔离了压缩器。这确保了节点 A 和节点 B 可以提供可预测且相似的读取和写入性能,假设架构和负载分布相似。如果 A 或 B 中的任何一个发生故障,压缩将不受影响,从而防止重启时工作负载堆积。
通过专用节点实现完全工作负载隔离
我们现在已经创建了一个压缩隔离的高可用性设置,但我们可以做更多事情以获得更好的结果。节点 1 和 2 都提供读取和写入服务,这可能会导致性能不一致。例如,如果查询以手动间隔传入,则在服务查询时摄取性能将不会那么好。
为了获得最佳结果,我们可以通过为摄取、查询、压缩和处理引擎分配专用节点来利用完全工作负载隔离。这种方法优化了资源利用率并提供了可预测的性能。
节点 1 和 2 (摄取)
这些节点专门处理写入操作。同样,它们具有相同的启动命令,在 ingest
模式下运行,并更改了 --node-id
(例如,ingest_node_1、ingest_node_2)。
influxdb3 serve \
--cluster-id cluster01 \
--node-id [NODE_ID] \
--mode ingest \
--object-store s3 \
--bucket influxdb-storage \
--aws-access-key-id [AWS_ACCESS_KEY_ID] \
--aws-secret-access-key [AWS_SECRET_ACCESS_KEY]
节点 3 和 4 (查询)
这些节点专门处理查询操作。它们仅在 query
模式下运行,并对 --node-id
进行了轻微更改(例如,query_node_1、query_node_2)。
influxdb3 serve \
--cluster-id cluster01 \
--node-id [NODE_ID] \
--mode query \
--object-store s3 \
--bucket influxdb-storage \
--aws-access-key-id [AWS_ACCESS_KEY_ID] \
--aws-secret-access-key [AWS_SECRET_ACCESS_KEY]
节点 5 (压缩器)
我们将与摄取和查询节点一起运行单个压缩器。
influxdb3 serve \
--cluster-id cluster01 \
--node-id compact01 \
--mode compact \
--object-store s3 \
--bucket influxdb-storage \
--aws-access-key-id [AWS_ACCESS_KEY_ID] \
--aws-secret-access-key [AWS_SECRET_ACCESS_KEY]
节点 6 (处理引擎)
最后,我们将为处理引擎创建一个专用节点。这确保了所有 ETL 都在专用环境中运行。与压缩器类似,这也支持垂直扩展,从而仅提高处理能力,而不是也扩展摄取/查询容量。
influxdb3 serve \
--cluster-id cluster01 \
--node-id process01 \
--mode process \
--object-store s3 \
--bucket influxdb-storage \
--aws-access-key-id [AWS_ACCESS_KEY_ID] \
--aws-secret-access-key [AWS_SECRET_ACCESS_KEY]
六节点设置,实现完全工作负载隔离
就是这样!只需对每个节点的配置进行少量更改,您就可以运行工作负载隔离的设置,而无需复杂的开销。每个实例都将与其他实例无缝协作,无需来回发送恒定的通信流,所有这些都来自简单的配置模式。
摘要
我们有意构建 InfluxDB 3 企业版,以简化多节点部署的复杂性。这些专门的服务器模式提供了强大的灵活性,因此您可以有效地扩展、确保高可用性并在各自的环境中隔离密集的处理任务。
以上示例展示了您如何从小处着手,逐步构建一个强大的设置,该设置可以在多个节点上完全隔离您的工作负载。通过根据节点的特定功能战略性地部署节点,您可以优化性能、可靠性和操作简易性。
要进一步探索,请查看 InfluxDB 3 企业版文档,您可以在其中了解其可配置性、高可用性设置的最佳实践、处理引擎等。