文档

扩展您的 InfluxDB 集群规模

InfluxDB 集群版允许您以垂直和水平方式扩展集群的各个组件,以匹配您的特定工作负载。使用在您的 influxdb.yml 中定义的 AppInstance 资源来管理每个组件可用的资源。

扩展策略

以下扩展策略可以应用于您的 InfluxDB 集群中的组件。

垂直扩展

垂直扩展(也称为“向上扩展”)涉及增加进程或系统可用的资源(如 RAM 或 CPU)。垂直扩展通常用于处理需要更多处理能力的资源密集型任务。

水平扩展

水平扩展(也称为“向外扩展”)涉及增加执行给定任务所需的节点或进程的数量。水平扩展通常用于增加系统可以管理的负载量或吞吐量,但也提供了额外的冗余和故障转移。

扩展集群组件

以下 InfluxDB 集群组件的扩展是通过修改您的 AppInstance 资源中的属性来实现的。

  • 数据收集器
  • 查询器
  • 压缩器
  • 路由器
  • 垃圾回收器

扩展您的目录和对象存储

您的 InfluxDB 目录对象存储 是在您的 AppInstance 资源之外管理的。这些组件的扩展机制取决于每个组件所使用的特定技术和底层提供者。

在您的 influxdb.yml 中定义的 AppInstance 资源中使用 spec.package.spec.resources 属性来定义每个 pod 的系统资源最低和最高限制以及每个组件的副本数量。requests 是 Kubernetes 调度器应为 pod 保留的最小值。limits 是 pod 应被允许使用的最大值。

您的 AppInstance 资源可以包含以下属性,以定义每个 pod 的资源最小值和限制以及每个组件的副本数量

  • spec.package.spec.resources
    • 摄取器
      • 请求
        • cpu:分配给摄取器的最小 CPU 资源单位
        • memory:分配给摄取器的最小内存资源单位
        • replicas:要部署的摄取器副本数量
      • 限制
        • cpu:分配给摄取器的最大 CPU 资源单位
        • memory:分配给摄取器的最大内存资源单位
    • 压缩器
      • 请求
        • cpu:分配给压缩器的最小 CPU 资源单位
        • memory:分配给压缩器的最小内存资源单位
        • replicas:要部署的压缩器副本数量
      • 限制
        • cpu:分配给压缩器的最大 CPU 资源单位
        • memory:分配给压缩器的最大内存资源单位
    • 查询器
      • 请求
        • cpu:分配给查询器的最小 CPU 资源单位
        • memory:分配给查询器的最小内存资源单位
        • replicas:要部署的查询器副本数量
      • 限制
        • cpu:分配给查询器的最大 CPU 资源单位
        • memory:分配给查询器的最大内存资源单位
    • 路由器
      • 请求
        • cpu:分配给路由器的最小 CPU 资源单位
        • memory:分配给路由器的最小内存资源单位
        • replicas:要部署的路由器副本数量
      • 限制
        • cpu:分配给路由器的最大 CPU 资源单位
        • memory:分配给路由器的最大内存资源单位
    • 垃圾回收器
      • 请求
        • cpu:分配给垃圾回收器的最小 CPU 资源单位
        • memory:分配给垃圾回收器的最小内存资源单位
      • 限制
        • cpu:分配给垃圾回收器的最大 CPU 资源单位
        • memory:分配给垃圾回收器的最大内存资源单位

查看具有资源请求和限制的示例 AppInstance

使用 resources 属性在您的 values.yaml 中定义每个 pod 的系统资源最小值和限制以及每个组件的副本数量。requests 是 Kubernetes 调度器应为 pod 预留的最小值。limits 是 pod 应被允许使用的最大值。

使用以下属性定义每个 pod 的资源最小值和限制以及每个组件的副本数量

  • resources
    • 摄取器
      • 请求
        • cpu:分配给摄取器的最小 CPU 资源单位
        • memory:分配给摄取器的最小内存资源单位
        • replicas:要部署的摄取器副本数量
      • 限制
        • cpu:分配给摄取器的最大 CPU 资源单位
        • memory:分配给摄取器的最大内存资源单位
    • 压缩器
      • 请求
        • cpu:分配给压缩器的最小 CPU 资源单位
        • memory:分配给压缩器的最小内存资源单位
        • replicas:要部署的压缩器副本数量
      • 限制
        • cpu:分配给压缩器的最大 CPU 资源单位
        • memory:分配给压缩器的最大内存资源单位
    • 查询器
      • 请求
        • cpu:分配给查询器的最小 CPU 资源单位
        • memory:分配给查询器的最小内存资源单位
        • replicas:要部署的查询器副本数量
      • 限制
        • cpu:分配给查询器的最大 CPU 资源单位
        • memory:分配给查询器的最大内存资源单位
    • 路由器
      • 请求
        • cpu:分配给路由器的最小 CPU 资源单位
        • memory:分配给路由器的最小内存资源单位
        • replicas:要部署的路由器副本数量
      • 限制
        • cpu:分配给路由器的最大 CPU 资源单位
        • memory:分配给路由器的最大内存资源单位
    • 垃圾回收器
      • 请求
        • cpu:分配给垃圾回收器的最小 CPU 资源单位
        • memory:分配给垃圾回收器的最小内存资源单位
      • 限制
        • cpu:分配给垃圾回收器的最大 CPU 资源单位
        • memory:分配给垃圾回收器的最大内存资源单位

查看具有资源请求和限制的示例 values.yaml

将资源限制应用于 pod 是可选的,但可以提供更好的资源隔离并保护免受 pod 使用比预期更多资源的情况。有关信息,请参阅 Kubernetes 资源请求和限制

水平扩展组件

要水平扩展 InfluxDB 集群中的组件,增加或减少组件的副本数量并 应用更改

仅使用 AppInstance 进行组件副本扩展

仅使用 AppInstance 资源进行组件副本扩展。手动扩展副本可能会引起错误。

例如–要水平扩展您的 摄取器

apiVersion: kubecfg.dev/v1alpha1
kind: AppInstance
# ...
spec:
  package:
    spec:
      resources:
        ingester:
          requests:
            # ...
            replicas: 6
# ...
resources:
  ingester:
    requests:
      # ...
      replicas: 6

垂直扩展组件

要垂直扩展 InfluxDB 集群中的组件,增加或减少分配给组件 pod 的 CPU 和内存资源单位并 应用更改

apiVersion: kubecfg.dev/v1alpha1
kind: AppInstance
# ...
spec:
  package:
    spec:
      resources:
        ingester:
          requests:
            cpu: "500m"
            memory: "512MiB"
            # ...
          limits:
            cpu: "1000m"
            memory: "1024MiB"
# ...
resources:
  ingester:
    requests:
      cpu: "500m"
      memory: "512MiB"
      # ...
    limits:
      cpu: "1000m"
      memory: "1024MiB"

应用您的更改

修改 AppInstance 资源后,使用 kubectl apply 将配置更改应用到您的集群,并扩展更新的组件。

kubectl apply \
  --filename myinfluxdb.yml \
  --namespace influxdb
helm upgrade \
  influxdata/influxdb3-clustered \
  -f ./values.yml \
  --namespace influxdb

整体扩展您的集群

通过扩展您的 Kubernetes 集群来扩展整个 InfluxDB 集群,并由 InfluxDB 外部管理。扩展整个 Kubernetes 集群的过程取决于您的底层 Kubernetes 提供商。您还可以使用 Kubernetes 自动扩展 来根据需要自动扩展您的集群。

路由器

路由器可以通过垂直水平进行扩展。水平扩展可以增加写入吞吐量,通常是路由器最有效的扩展策略。垂直扩展(特别是增加 CPU)可以提高路由器以较低延迟解析传入行协议的能力。

数据收集器

摄入器可以通过垂直水平进行扩展。垂直扩展可以增加写入吞吐量,通常是摄入器最有效的扩展策略。

摄入器存储卷

摄入器使用附加的存储卷来存储 写入前日志 (WAL)。随着可用存储的增加,摄入器可以保持更大的 WAL 缓冲区,从而提高查询性能并减少对压缩器的压力。存储速度也有助于提高查询性能。

在您的 AppInstance 资源的 spec.package.spec.ingesterStorage 属性中或(如果使用 Helm)在 values.yamlingesterStorage 属性中配置附加到摄入器 Pod 的存储卷。

查看示例摄入器存储配置

查询器

查询器可以通过垂直水平进行扩展。水平扩展可以增加查询吞吐量,以处理更多并发查询。垂直扩展可以提高查询器处理计算密集型查询的能力。

压缩器

压缩器可以通过垂直水平进行扩展。由于压缩是一个计算密集型过程,因此垂直扩展(特别是增加可用的 CPU)是压缩器最有效的扩展策略。水平扩展可以增加压缩吞吐量,但不如垂直扩展高效。

垃圾回收器

垃圾收集器可以通过垂直进行扩展。这是一个轻量级进程,通常不需要许多系统资源,但如果您开始看到垃圾收集器上的高资源消耗,您可以通过垂直扩展来解决增加的工作负载。

目录

可用于目录的扩展策略取决于用于运行目录的 PostgreSQL 兼容数据库。所有都支持垂直扩展。大多数支持水平扩展以实现冗余和故障转移。

对象存储

可用于对象存储的扩展策略取决于用于运行对象存储的底层对象存储服务。大多数支持水平扩展以实现冗余、故障转移和增加容量。


这个页面有帮助吗?

感谢您的反馈!


Flux的未来

Flux将进入维护模式。您无需对代码进行任何更改,可以继续像现在一样使用它。

了解更多

InfluxDB v3增强功能和InfluxDB Clustered现在已全面上市

新功能包括更快的查询性能和管理工具,推动了InfluxDB v3产品线的进步。InfluxDB Clustered现在已全面上市。

InfluxDB v3性能和功能

InfluxDB v3产品线在查询性能方面取得了显著提升,并提供了新的管理工具。这些增强功能包括一个用于监控InfluxDB集群健康状态的运营仪表板,InfluxDB Cloud Dedicated中的单点登录(SSO)支持,以及用于令牌和数据库的新管理API。

了解v3新增强功能


InfluxDB Clustered全面上市

InfluxDB Clustered现在已全面上市,为您在自管理堆栈中提供InfluxDB v3的力量。

与我们讨论InfluxDB Clustered