扩展您的 InfluxDB 集群
InfluxDB Clustered 允许您垂直和水平扩展集群的各个组件,以匹配您的特定工作负载。使用 influxdb.yml
中定义的 AppInstance
资源来管理每个组件可用的资源。
扩展策略
以下扩展策略可以应用于 InfluxDB 集群中的组件。
垂直扩展
垂直扩展(也称为“向上扩展”)涉及增加进程或系统可用的资源(例如 RAM 或 CPU)。垂直扩展通常用于处理需要更多处理能力的资源密集型任务。
水平扩展
水平扩展(也称为“向外扩展”)涉及增加可用于执行给定任务的节点或进程数量。水平扩展通常用于增加系统可以管理的工作负载或吞吐量,但也提供额外的冗余和故障转移。
扩展集群中的组件
InfluxDB 集群的以下组件通过修改 AppInstance
资源中的属性进行扩展
- Ingester(数据写入器)
- Querier(查询器)
- Compactor(压缩器)
- Router(路由器)
- Garbage collector(垃圾回收器)
扩展您的 Catalog(目录)和 Object store(对象存储)
您的 InfluxDB Catalog(目录) 和 Object store(对象存储) 在您的 AppInstance
资源之外进行管理。这些组件的扩展机制取决于每种技术和底层提供商。
使用 influxdb.yml
中定义的 AppInstance
资源中的 spec.package.spec.resources
属性来定义每个 pod 的系统资源最小值和限制以及每个组件的副本数。 requests
是 Kubernetes 调度器应为 pod 保留的最小值。 limits
是 pod 应该允许使用的最大值。
您的 AppInstance
资源可以包含以下属性,以定义每个 pod 和每个组件副本的资源最小值和限制
spec.package.spec.resources
ingester
requests
cpu
: 分配给 Ingester(数据写入器)的最小 CPU 资源单位memory
: 分配给 Ingester(数据写入器)的最小内存资源单位replicas
: 要配置的 Ingester(数据写入器)副本数
limits
cpu
: 分配给 Ingester(数据写入器)的最大 CPU 资源单位memory
: 分配给 Ingester(数据写入器)的最大内存资源单位
compactor
requests
cpu
: 分配给 Compactor(压缩器)的最小 CPU 资源单位memory
: 分配给 Compactor(压缩器)的最小内存资源单位replicas
: 要配置的 Compactor(压缩器)副本数
limits
cpu
: 分配给 Compactor(压缩器)的最大 CPU 资源单位memory
: 分配给 Compactor(压缩器)的最大内存资源单位
querier
requests
cpu
: 分配给 Querier(查询器)的最小 CPU 资源单位memory
: 分配给 Querier(查询器)的最小内存资源单位replicas
: 要配置的 Querier(查询器)副本数
limits
cpu
: 分配给 Querier(查询器)的最大 CPU 资源单位memory
: 分配给 Querier(查询器)的最大内存资源单位
router
requests
cpu
: 分配给 Router(路由器)的最小 CPU 资源单位memory
: 分配给 Router(路由器)的最小内存资源单位replicas
: 要配置的 Router(路由器)副本数
limits
cpu
: 分配给 Router(路由器)的最大 CPU 资源单位memory
: 分配给 Router(路由器)的最大内存资源单位
garbage-collector
requests
cpu
: 分配给 Garbage collector(垃圾回收器)的最小 CPU 资源单位memory
: 分配给 Garbage collector(垃圾回收器)的最小内存资源单位
limits
cpu
: 分配给 Garbage collector(垃圾回收器)的最大 CPU 资源单位memory
: 分配给 Garbage collector(垃圾回收器)的最大内存资源单位
使用 values.yaml
中的 resources
属性来定义每个 pod 的系统资源最小值和限制以及每个组件的副本数。 requests
是 Kubernetes 调度器应为 pod 保留的最小值。 limits
是 pod 应该允许使用的最大值。
使用以下属性来定义每个 pod 和每个组件副本的资源最小值和限制
resources
ingester
requests
cpu
: 分配给 Ingester(数据写入器)的最小 CPU 资源单位memory
: 分配给 Ingester(数据写入器)的最小内存资源单位replicas
: 要配置的 Ingester(数据写入器)副本数
limits
cpu
: 分配给 Ingester(数据写入器)的最大 CPU 资源单位memory
: 分配给 Ingester(数据写入器)的最大内存资源单位
compactor
requests
cpu
: 分配给 Compactor(压缩器)的最小 CPU 资源单位memory
: 分配给 Compactor(压缩器)的最小内存资源单位replicas
: 要配置的 Compactor(压缩器)副本数
limits
cpu
: 分配给 Compactor(压缩器)的最大 CPU 资源单位memory
: 分配给 Compactor(压缩器)的最大内存资源单位
querier
requests
cpu
: 分配给 Querier(查询器)的最小 CPU 资源单位memory
: 分配给 Querier(查询器)的最小内存资源单位replicas
: 要配置的 Querier(查询器)副本数
limits
cpu
: 分配给 Querier(查询器)的最大 CPU 资源单位memory
: 分配给 Querier(查询器)的最大内存资源单位
router
requests
cpu
: 分配给 Router(路由器)的最小 CPU 资源单位memory
: 分配给 Router(路由器)的最小内存资源单位replicas
: 要配置的 Router(路由器)副本数
limits
cpu
: 分配给 Router(路由器)的最大 CPU 资源单位memory
: 分配给 Router(路由器)的最大内存资源单位
garbage-collector
requests
cpu
: 分配给 Garbage collector(垃圾回收器)的最小 CPU 资源单位memory
: 分配给 Garbage collector(垃圾回收器)的最小内存资源单位
limits
cpu
: 分配给 Garbage collector(垃圾回收器)的最大 CPU 资源单位memory
: 分配给 Garbage collector(垃圾回收器)的最大内存资源单位
将资源限制应用于 pod 是可选的,但可以提供更好的资源隔离,并防止 pod 使用超出预期的资源。有关信息,请参阅 Kubernetes 资源请求和限制。
相关的 Kubernetes 文档
水平扩展组件
要水平扩展 InfluxDB 集群中的组件,请增加或减少组件的副本数,并应用更改。
仅使用 AppInstance 扩展组件副本
仅使用 AppInstance
资源来扩展组件副本。手动扩展副本可能会导致错误。
例如 - 水平扩展您的 Ingester(数据写入器)
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
整体扩展您的集群
扩展整个 InfluxDB 集群是通过扩展您的 Kubernetes 集群来完成的,并且在 InfluxDB 之外进行管理。扩展整个 Kubernetes 集群的过程取决于您的底层 Kubernetes 提供商。您还可以使用 Kubernetes 自动扩展 来根据需要自动扩展您的集群。
每个组件的推荐扩展策略
- Router(路由器)
- Ingester(数据写入器)
- Querier(查询器)
- Compactor(压缩器)
- Garbage collector(垃圾回收器)
- Catalog(目录)
- Object store(对象存储)
Router(路由器)
Router(路由器)可以进行垂直和水平扩展。水平扩展可以提高写入吞吐量,并且通常是 Router(路由器)最有效的扩展策略。垂直扩展(特别是增加 CPU)可以提高 Router(路由器)解析传入的 Line Protocol 的能力,并降低延迟。
Ingester(数据写入器)
Ingester(数据写入器)可以进行垂直和水平扩展。垂直扩展可以提高写入吞吐量,并且通常是 Ingester(数据写入器)最有效的扩展策略。
Ingester(数据写入器)存储卷
Ingester(数据写入器)使用附加的存储卷来存储 Write-Ahead Log (WAL)(预写式日志)。通过提供更多可用存储空间,Ingester(数据写入器)可以保留更大的 WAL 缓冲区,从而提高查询性能并减少 Compactor(压缩器)的压力。存储速度也有助于提高查询性能。
在 AppInstance
资源的 spec.package.spec.ingesterStorage
属性中或如果使用 Helm,则在 values.yaml
的 ingesterStorage
属性中配置附加到 Ingester(数据写入器) pod 的存储卷。
Querier(查询器)
Querier(查询器)可以进行垂直和水平扩展。水平扩展可以提高查询吞吐量,以处理更多并发查询。垂直扩展可以提高 Querier(查询器)处理计算密集型查询的能力。
Compactor(压缩器)
Compactor(压缩器)可以进行垂直和水平扩展。由于压缩是一个计算密集型过程,因此垂直扩展(特别是增加可用 CPU)是 Compactor(压缩器)最有效的扩展策略。水平扩展可以提高压缩吞吐量,但不如垂直扩展有效。
Garbage collector(垃圾回收器)
Garbage collector(垃圾回收器)可以进行垂直扩展。它是一个轻量级进程,通常不需要太多系统资源,但是如果您开始看到垃圾回收器上的资源消耗很高,则可以对其进行垂直扩展以解决增加的工作负载。
Catalog(目录)
Catalog(目录)可用的扩展策略取决于用于运行目录的 PostgreSQL 兼容数据库。所有都支持垂直扩展。大多数都支持水平扩展以实现冗余和故障转移。
Object store(对象存储)
Object store(对象存储)可用的扩展策略取决于用于运行对象存储的底层对象存储服务。大多数都支持水平扩展以实现冗余、故障转移和提高容量。
此页是否对您有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 InfluxDB Clustered 和本文档的反馈和错误报告。要获得支持,请使用以下资源
拥有年度合同或支持合同的客户可以联系 InfluxData 支持。