From 1b537512b4483380c33338a97a90b3f764b9b1a5 Mon Sep 17 00:00:00 2001 From: Scott Anderson <scott@influxdata.com> Date: Mon, 7 Oct 2024 09:31:00 -0600 Subject: [PATCH 1/2] updates to address PR feedback --- .../clustered/install/customize-cluster/scale.md | 10 +++++++--- .../install/set-up-cluster/configure-cluster/_index.md | 9 ++++++--- .../set-up-cluster/configure-cluster/directly.md | 2 +- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/content/influxdb/clustered/install/customize-cluster/scale.md b/content/influxdb/clustered/install/customize-cluster/scale.md index 238810cb7..63294eaa3 100644 --- a/content/influxdb/clustered/install/customize-cluster/scale.md +++ b/content/influxdb/clustered/install/customize-cluster/scale.md @@ -27,13 +27,17 @@ to increase your write throughput and latency. requests. - **3 ingesters**: Ensures redundancy on the write path. +- **1 querier**: + The optimal number of queriers depends on the number of concurrent queries you + are likely to have and how long they take to execute. - **1 compactor**: While you can have multiple compactors, it is more efficient to scale the compactor vertically (assign more CPU and memory) rather than horizontally (increase the number of compactors). -- **1 querier**: - The optimal number of queriers depends on the number of concurrent queries you - are likely to have and how long they take to execute. +- **1 garbage collector**: + The garbage collector is a light-weight process that only needs to be scaled + vertically when you observe high resource usage by the garbage collector. + _The garbage collector cannot be scaled horizontally._ The default values provide a good starting point for testing. Once you have your cluster up and running and are looking for scaling diff --git a/content/influxdb/clustered/install/set-up-cluster/configure-cluster/_index.md b/content/influxdb/clustered/install/set-up-cluster/configure-cluster/_index.md index 7f40acaa9..d774ef5a4 100644 --- a/content/influxdb/clustered/install/set-up-cluster/configure-cluster/_index.md +++ b/content/influxdb/clustered/install/set-up-cluster/configure-cluster/_index.md @@ -17,9 +17,12 @@ a YAML configuration file. Apply configuration settings to your cluster by editing and applying a Kubernetes custom resource (CRD) called `AppInstance`. The AppInstance CRD is defined in a YAML file (use the `example-customer.yml` -provided by InfluxData as a template) or, if using the InfluxDB Clustered Helm -chart, is provided by the chart and configured in a `values.yaml` file. +provided by InfluxData as a template). -Use one of the following methods to configure your InfluxDB cluster: +We recommend editing the `AppInstance` resource directly as the primary method +for configuring and managing your InfluxDB cluster. If you are required to use +[Helm](https://helm.sh/), there is a InfluxDB Clustered Helm chart available +that acts as a wrapper for the `AppInstance` resource and lets you use Helm to +manage configuration changes in your InfluxDB cluster. {{< children >}} diff --git a/content/influxdb/clustered/install/set-up-cluster/configure-cluster/directly.md b/content/influxdb/clustered/install/set-up-cluster/configure-cluster/directly.md index 6294c5bab..3876bdec1 100644 --- a/content/influxdb/clustered/install/set-up-cluster/configure-cluster/directly.md +++ b/content/influxdb/clustered/install/set-up-cluster/configure-cluster/directly.md @@ -11,7 +11,7 @@ menu: parent: Configure your cluster weight: 220 list_code_example: | - <a class="btn arrow" href="/influxdb/clustered/install/set-up-cluster/configure-cluster/directly/">Configure AppInstance directly <span class="cf-icon CaretOutlineRight"></span></a> + <a class="btn arrow" href="/influxdb/clustered/install/set-up-cluster/configure-cluster/directly/">Configure AppInstance directly <em class="op65">Recommended</em> <span class="cf-icon CaretOutlineRight"></span></a> aliases: - /influxdb/clustered/install/configure-cluster/directly/ --- From 683fd62ad5ac21ae27ee65b51f83ef406ac1c5b4 Mon Sep 17 00:00:00 2001 From: Scott Anderson <scott@influxdata.com> Date: Mon, 7 Oct 2024 11:08:37 -0600 Subject: [PATCH 2/2] added garbage collector scaling config --- .../influxdb/clustered/admin/scale-cluster.md | 42 ++++++++++++++++++- .../install/customize-cluster/scale.md | 34 ++++++++++++++- 2 files changed, 72 insertions(+), 4 deletions(-) diff --git a/content/influxdb/clustered/admin/scale-cluster.md b/content/influxdb/clustered/admin/scale-cluster.md index bc0329150..3607b6c67 100644 --- a/content/influxdb/clustered/admin/scale-cluster.md +++ b/content/influxdb/clustered/admin/scale-cluster.md @@ -32,6 +32,7 @@ resources available to each component. - [Querier](#querier) - [Router](#router) - [Compactor](#compactor) + - [Garbage collector](#garbage-collector) - [Catalog](#catalog) - [Object store](#object-store) @@ -67,6 +68,7 @@ properties in your `AppInstance` resource: - Querier - Compactor - Router +- Garbage collector {{% note %}} #### Scale your Catalog and Object store @@ -129,11 +131,18 @@ resource minimums and limits per pod and replicas per component: - `limits` - `cpu`: Maximum CPU Resource units to assign to routers - `memory`: Maximum memory resource units to assign to routers + - `garbage-collector` + - `requests` + - `cpu`: Minimum CPU resource units to assign to the garbage collector + - `memory`: Minimum memory resource units to assign to the garbage collector + - `limits` + - `cpu`: Maximum CPU Resource units to assign to the garbage collector + - `memory`: Maximum memory resource units to assign to the garbage collector {{< expand-wrapper >}} {{% expand "View example `AppInstance` with resource requests and limits" %}} -{{% code-placeholders "(INGESTER|COMPACTOR|QUERIER|ROUTER)_(CPU_(MAX|MIN)|MEMORY_(MAX|MIN)|REPLICAS)" %}} +{{% code-placeholders "(INGESTER|COMPACTOR|QUERIER|ROUTER|GC)_(CPU_(MAX|MIN)|MEMORY_(MAX|MIN)|REPLICAS)" %}} ```yml apiVersion: kubecfg.dev/v1alpha1 @@ -178,6 +187,13 @@ spec: limits: cpu: ROUTER_CPU_MAX memory: ROUTER_MEMORY_MAX + garbage-collector: + requests: + cpu: GC_CPU_MIN + memory: GC_MEMORY_MIN + limits: + cpu: GC_CPU_MAX + memory: GC_MEMORY_MAX ``` {{% /code-placeholders %}} @@ -233,11 +249,18 @@ replicas per component: - `limits` - `cpu`: Maximum CPU Resource units to assign to routers - `memory`: Maximum memory resource units to assign to routers + - `garbage-collector` + - `requests` + - `cpu`: Minimum CPU resource units to assign to the garbage collector + - `memory`: Minimum memory resource units to assign to the garbage collector + - `limits` + - `cpu`: Maximum CPU Resource units to assign to the garbage collector + - `memory`: Maximum memory resource units to assign to the garbage collector {{< expand-wrapper >}} {{% expand "View example `values.yaml` with resource requests and limits" %}} -{{% code-placeholders "(INGESTER|COMPACTOR|QUERIER|ROUTER)_(CPU_(MAX|MIN)|MEMORY_(MAX|MIN)|REPLICAS)" %}} +{{% code-placeholders "(INGESTER|COMPACTOR|QUERIER|ROUTER|GC)_(CPU_(MAX|MIN)|MEMORY_(MAX|MIN)|REPLICAS)" %}} ```yml # ... @@ -274,6 +297,13 @@ replicas per component: limits: cpu: ROUTER_CPU_MAX memory: ROUTER_MEMORY_MAX + garbage-collector: + requests: + cpu: GC_CPU_MIN + memory: GC_MEMORY_MIN + limits: + cpu: GC_CPU_MAX + memory: GC_MEMORY_MAX ``` {{% /code-placeholders %}} @@ -435,6 +465,7 @@ to automatically scale your cluster as needed. - [Ingester](#ingester) - [Querier](#querier) - [Compactor](#compactor) +- [Garbage collector](#garbage-collector) - [Catalog](#catalog) - [Object store](#object-store) @@ -530,6 +561,13 @@ increasing the available CPU) is the most effective scaling strategy for the Compactor. Horizontal scaling increases compaction throughput, but not as efficiently as vertical scaling. +### Garbage collector + +The Garbage collector can be scaled [vertically](#vertical-scaling). It is a +light-weight process that typically doesn't require many system resources, but +if you begin to see high resource consumption on the garbage collector, you can +scale it vertically to address the added workload. + ### Catalog Scaling strategies available for the Catalog depend on the PostgreSQL-compatible diff --git a/content/influxdb/clustered/install/customize-cluster/scale.md b/content/influxdb/clustered/install/customize-cluster/scale.md index 63294eaa3..4b71c9c85 100644 --- a/content/influxdb/clustered/install/customize-cluster/scale.md +++ b/content/influxdb/clustered/install/customize-cluster/scale.md @@ -108,11 +108,18 @@ If omitted, your cluster uses the default scale settings. - `limits` - `cpu`: Maximum CPU Resource units to assign to routers - `memory`: Maximum memory resource units to assign to routers + - `garbage-collector` + - `requests` + - `cpu`: Minimum CPU resource units to assign to the garbage collector + - `memory`: Minimum memory resource units to assign to the garbage collector + - `limits` + - `cpu`: Maximum CPU Resource units to assign to the garbage collector + - `memory`: Maximum memory resource units to assign to the garbage collector {{< expand-wrapper >}} {{% expand "View example `AppInstance` with resource requests and limits" %}} -{{% code-placeholders "(INGESTER|COMPACTOR|QUERIER|ROUTER)_(CPU_(MAX|MIN)|MEMORY_(MAX|MIN)|REPLICAS)" %}} +{{% code-placeholders "(INGESTER|COMPACTOR|QUERIER|ROUTER|GC)_(CPU_(MAX|MIN)|MEMORY_(MAX|MIN)|REPLICAS)" %}} ```yml apiVersion: kubecfg.dev/v1alpha1 @@ -157,6 +164,13 @@ spec: limits: cpu: ROUTER_CPU_MAX memory: ROUTER_MEMORY_MAX + garbage-collector: + requests: + cpu: GC_CPU_MIN + memory: GC_MEMORY_MIN + limits: + cpu: GC_CPU_MAX + memory: GC_MEMORY_MAX ``` {{% /code-placeholders %}} @@ -207,11 +221,18 @@ in your `values.yaml`. If omitted, your cluster will use the default scale setti - `limits` - `cpu`: Maximum CPU Resource units to assign to routers - `memory`: Maximum memory resource units to assign to routers + - `garbage-collector` + - `requests` + - `cpu`: Minimum CPU resource units to assign to the garbage collector + - `memory`: Minimum memory resource units to assign to the garbage collector + - `limits` + - `cpu`: Maximum CPU Resource units to assign to the garbage collector + - `memory`: Maximum memory resource units to assign to the garbage collector {{< expand-wrapper >}} {{% expand "View example `values.yaml` with resource requests and limits" %}} -{{% code-placeholders "(INGESTER|COMPACTOR|QUERIER|ROUTER)_(CPU_(MAX|MIN)|MEMORY_(MAX|MIN)|REPLICAS)" %}} +{{% code-placeholders "(INGESTER|COMPACTOR|QUERIER|ROUTER|GC)_(CPU_(MAX|MIN)|MEMORY_(MAX|MIN)|REPLICAS)" %}} ```yml # The following settings tune the various pods for their cpu/memory/replicas @@ -257,6 +278,15 @@ resources: limits: cpu: ROUTER_CPU_MAX memory: ROUTER_MEMORY_MAX + + # The garbage collector evicts obsolete data and files + garbage-collector: + requests: + cpu: GC_CPU_MIN + memory: GC_MEMORY_MIN + limits: + cpu: GC_CPU_MAX + memory: GC_MEMORY_MAX ``` {{% /code-placeholders %}}