扩展您的 InfluxDB 集群规模
InfluxDB 集群版允许您以垂直和水平方式扩展集群的各个组件,以匹配您的特定工作负载。使用在您的 influxdb.yml
中定义的 AppInstance
资源来管理每个组件可用的资源。
扩展策略
以下扩展策略可以应用于您的 InfluxDB 集群中的组件。
垂直扩展
垂直扩展(也称为“向上扩展”)涉及增加进程或系统可用的资源(如 RAM 或 CPU)。垂直扩展通常用于处理需要更多处理能力的资源密集型任务。
水平扩展
水平扩展(也称为“向外扩展”)涉及增加执行给定任务所需的节点或进程的数量。水平扩展通常用于增加系统可以管理的负载量或吞吐量,但也提供了额外的冗余和故障转移。
扩展集群组件
以下 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
:分配给垃圾回收器的最大内存资源单位
使用 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
:分配给垃圾回收器的最大内存资源单位
将资源限制应用于 pod 是可选的,但可以提供更好的资源隔离并保护免受 pod 使用比预期更多资源的情况。有关信息,请参阅 Kubernetes 资源请求和限制。
相关 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.yaml
的 ingesterStorage
属性中配置附加到摄入器 Pod 的存储卷。
查询器
查询器可以通过垂直和水平进行扩展。水平扩展可以增加查询吞吐量,以处理更多并发查询。垂直扩展可以提高查询器处理计算密集型查询的能力。
压缩器
压缩器可以通过垂直和水平进行扩展。由于压缩是一个计算密集型过程,因此垂直扩展(特别是增加可用的 CPU)是压缩器最有效的扩展策略。水平扩展可以增加压缩吞吐量,但不如垂直扩展高效。
垃圾回收器
垃圾收集器可以通过垂直进行扩展。这是一个轻量级进程,通常不需要许多系统资源,但如果您开始看到垃圾收集器上的高资源消耗,您可以通过垂直扩展来解决增加的工作负载。
目录
可用于目录的扩展策略取决于用于运行目录的 PostgreSQL 兼容数据库。所有都支持垂直扩展。大多数支持水平扩展以实现冗余和故障转移。
对象存储
可用于对象存储的扩展策略取决于用于运行对象存储的底层对象存储服务。大多数支持水平扩展以实现冗余、故障转移和增加容量。
这个页面有帮助吗?
感谢您的反馈!