diff --git a/content/embeds/rs-upgrade-paths.md b/content/embeds/rs-upgrade-paths.md index 1a15a639a..26d10e922 100644 --- a/content/embeds/rs-upgrade-paths.md +++ b/content/embeds/rs-upgrade-paths.md @@ -4,11 +4,12 @@ :x: Not supported – You cannot upgrade directly from the current Redis Software cluster version. You must first upgrade to a supported intermediate version. -| Current Redis Software cluster version | Upgrade to Redis Software 6.2.x | Upgrade to Redis Software 6.4.x | Upgrade to Redis Software 7.2.x | Upgrade to Redis Software 7.4.x | Upgrade to Redis Software 7.8.x | -|:-----------------------:|:----------------:|:----------------:|:----------------:|:----------------:|:----------------:| -| 6.0.x | | | | :x: | :x: | -| 6.2.4
6.2.8 | | | | | :x: | -| 6.2.10
6.2.12
6.2.18 | | | | | | -| 6.4.x | – | | | | | -| 7.2.x | – | – | | | | -| 7.4.x | – | – | – | | | +| Current Redis Software cluster version | Upgrade to Redis Software 6.2.x | Upgrade to Redis Software 6.4.x | Upgrade to Redis Software 7.2.x | Upgrade to Redis Software 7.4.x | Upgrade to Redis Software 7.8.x | Upgrade to Redis Software 7.22.x | +|:-----------------------:|:----------------:|:----------------:|:----------------:|:----------------:|:----------------:|:----------------:| +| 6.0.x | | | | :x: | :x: | :x: | +| 6.2.4
6.2.8 | | | | | :x: | :x: | +| 6.2.10
6.2.12
6.2.18 | | | | | | :x: | +| 6.4.x | – | | | | | | +| 7.2.x | – | – | | | | | +| 7.4.x | – | – | – | | | | +| 7.8.x | – | – | – | – | | | diff --git a/content/embeds/supported-platforms-embed.md b/content/embeds/supported-platforms-embed.md index ee1e93a79..3aa9958a3 100644 --- a/content/embeds/supported-platforms-embed.md +++ b/content/embeds/supported-platforms-embed.md @@ -7,23 +7,23 @@ Redis Enterprise Software is supported on several operating systems, cloud envi :warning: Deprecation warning – The platform is still supported for this version of Redis Enterprise Software, but support will be removed in a future release. -| Redis Software
major versions | 7.8 | 7.4 | 7.2 | 6.4 | 6.2 | -|---------------------------------|:-----:|:-----:|:-----:|:-----:|:-----:| -| **Release date** | Nov 2024 | Feb 2024 | Aug 2023 | Feb 2023 | Aug 2021 | -| [**End-of-life date**]({{< relref "/operate/rs/installing-upgrading/product-lifecycle#endoflife-schedule" >}}) | Determined after
next major release | Nov 2026 | Feb 2026 | Aug 2025 | Feb 2025 | -| **Platforms** | | | | | | -| RHEL 9 &
compatible distros[1](#table-note-1) | | | – | – | – | -| RHEL 9
FIPS mode[5](#table-note-5) | | – | – | – | – | -| RHEL 8 &
compatible distros[1](#table-note-1) | | | | | | -| RHEL 7 &
compatible distros[1](#table-note-1) | – | – | :warning: | | | -| Ubuntu 22.04[2](#table-note-2) | | – | – | – | – | -| Ubuntu 20.04[2](#table-note-2) | | | | | – | -| Ubuntu 18.04[2](#table-note-2) | – | :warning: | :warning: | | | -| Ubuntu 16.04[2](#table-note-2) | – | – | :warning: | | | -| Amazon Linux 2 | | | | | – | -| Amazon Linux 1 | – | – | | | | -| Kubernetes[3](#table-note-3) | | | | | | -| Docker[4](#table-note-4) | | | | | | +| Redis Software
major versions | 7.22 | 7.8 | 7.4 | 7.2 | 6.4 | 6.2 | +|---------------------------------|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:| +| **Release date** | May 2025 | Nov 2024 | Feb 2024 | Aug 2023 | Feb 2023 | Aug 2021 | +| [**End-of-life date**]({{< relref "/operate/rs/installing-upgrading/product-lifecycle#endoflife-schedule" >}}) | Determined after
next major release | May 2027 | Nov 2026 | Feb 2026 | Aug 2025 | Feb 2025 | +| **Platforms** | | | | | | | +| RHEL 9 &
compatible distros[1](#table-note-1) | | | | – | – | – | +| RHEL 9
FIPS mode[5](#table-note-5) | | | – | – | – | – | +| RHEL 8 &
compatible distros[1](#table-note-1) | | | | | | | +| RHEL 7 &
compatible distros[1](#table-note-1) | – | – | – | :warning: | | | +| Ubuntu 22.04[2](#table-note-2) | | | – | – | – | – | +| Ubuntu 20.04[2](#table-note-2) | | | | | | – | +| Ubuntu 18.04[2](#table-note-2) | – | – | :warning: | :warning: | | | +| Ubuntu 16.04[2](#table-note-2) | – | – | – | :warning: | | | +| Amazon Linux 2 | | | | | | – | +| Amazon Linux 1 | – | – | – | | | | +| Kubernetes[3](#table-note-3) | | | | | | | +| Docker[4](#table-note-4) | | | | | | | 1. The RHEL-compatible distributions CentOS, CentOS Stream, Alma, and Rocky are supported if they have full RHEL compatibility. Oracle Linux running the Red Hat Compatible Kernel (RHCK) is supported, but the Unbreakable Enterprise Kernel (UEK) is not supported. diff --git a/content/operate/rs/clusters/configure/call-home.md b/content/operate/rs/clusters/configure/call-home.md new file mode 100644 index 000000000..86d6ec930 --- /dev/null +++ b/content/operate/rs/clusters/configure/call-home.md @@ -0,0 +1,84 @@ +--- +Title: Call home client +alwaysopen: false +categories: +- docs +- operate +- rs +- kubernetes +description: The call home client sends your Redis Enterprise Software cluster's daily usage statistics to Redis. +linkTitle: Call home client +weight: 80 +--- + +The call home client collects data hourly and sends daily usage statistics to Redis with a POST request to `https://usage.redis.io/callHome`. Reports include memory usage, shard details, enabled features, and other operational metrics. To prevent increased load when multiple clusters are running, the daily report is sent at a random time. + +These reports provide insights into license consumption, which helps Redis to ensure performance metrics align with contractual agreements, optimize service delivery, and offer proactive customer support. + +We recommend contacting [Redis support](https://redis.io/support/) before making changes to call home behavior. + +## Collected data + +The following example shows the data collected hourly for each database: + +```sh +{ + "support_package": true, + "customer_name": "string", + "license_hash": "string", + "usage_data": [ + { + "date": "2025-03-25T11:42:13.984Z", + "cluster_UUID": "string", + "cluster_name": "string", + "api_version": "string", + "software_version": "string", + "bdb_uid": "string", + "type": "string", + "shard_type": "string", + "dominant_shard_criteria": "string", + "provisioned_memory": 0, + "used_memory": 0, + "master_shards_count": 0, + "no_eviction": true, + "persistence": true, + "backup": true, + "using_redis_search": true, + "ops_sec": 0, + "replication": true, + "active_active": true + } + ] +} +``` + +## Change data collection schedule + +The cluster collects usage data hourly by default. + +To change the data collection schedule, [update job scheduler settings]({{}}) for `bdb_usage_report_job_settings` with a REST API request: + +```sh +PUT /v1/job_scheduler +{ + "bdb_usage_report_job_settings": { + "enabled": true, + "cron_expression": "*/60 * * * *" + } +} +``` + +Replace `cron_expression`'s value with a [`cron` expression](https://en.wikipedia.org/wiki/Cron#CRON_expression) that defines the new data collection schedule. + +## Turn off call home client + +To stop the call home client from sending daily usage statistics to Redis, [update cluster services configuration]({{}}) for `call_home_agent` with a REST API request: + +```sh +PUT /v1/cluster/services_configuration +{ + "call_home_agent": { + "operating_mode": "disabled" + } +} +``` diff --git a/content/operate/rs/clusters/configure/rack-zone-awareness.md b/content/operate/rs/clusters/configure/rack-zone-awareness.md index 0b23d2a8e..c2a6c1d62 100644 --- a/content/operate/rs/clusters/configure/rack-zone-awareness.md +++ b/content/operate/rs/clusters/configure/rack-zone-awareness.md @@ -15,7 +15,7 @@ Rack-zone awareness helps ensure high availability in the event of a rack or zon When you enable rack-zone awareness in a Redis Enterprise Software cluster, you assign a [rack-zone ID](#rack-zone-id-rules) to each node. This ID is used to map the node to a -physical rack or logical zone. The cluster can then ensure that master shards, corresponding replica shards, and associated endpoints are placed on [nodes in different racks or zones](#node-layout-guidelines). +physical rack or logical zone. The cluster can then ensure that primary shards, corresponding replica shards, and associated endpoints are placed on [nodes in different racks or zones](#node-layout-guidelines). In the event of a rack or zone failure, the replicas and endpoints in the remaining racks and zones are promoted. This ensures high availability when a rack or zone fails. @@ -84,6 +84,105 @@ If you did not configure rack-zone awareness during cluster creation, you can co { "rack_aware": true } ``` +## Set up two-dimensional rack-zone awareness + +As of Redis Enterprise Software version 7.22, you can assign a `second_rack_id` to set up two-dimensional rack-zone awareness. + +You can use two-dimensional rack-zone awareness to create logical zones within a zone or rack. + +### New clusters + +To set up two-dimensional rack-zone awareness during cluster creation, assign a `second_rack_id` to each node in the cluster in addition to the `rack_id` using the [REST API]({{}}) or [rladmin]({{}}). + +#### REST API method + +To create a new cluster with two-dimensional rack-zone awareness, you can use [bootstrap REST API requests]({{}}): + +1. Create the new cluster on the first node, set `rack_aware` to `true`, and assign a `rack_id` and `second_rack_id` to the first node: + + ```sh + POST /v1/bootstrap/create_cluster + { + "action": "create_cluster", + "cluster": { + "nodes": [], + "name": "" + }, + "credentials": { + "username": "", + "password": "" + }, + "node": { + "identity": { + "rack_id": "", + "second_rack_id": "" + } + }, + "policy": { + "rack_aware": true + } + } + ``` + +1. Join each new node you want to add to the cluster and assign a different `rack_id` and `second_rack_id` to it: + + ```sh + POST /v1/bootstrap/join_cluster + { + "action": "join_cluster", + "cluster": { + "nodes": [], + "name": "" + }, + "credentials": { + "username": "", + "password": "" + }, + "node": { + "identity": { + "rack_id": "", + "second_rack_id": "" + } + } + } + ``` + +#### Command-line method + +To create a new cluster with two-dimensional rack-zone awareness using the command line: + +1. Run [`rladmin cluster create`]({{}}) to create the initial cluster on one node, enable rack-zone awareness, and assign a `rack_id` and `second_rack_id`: + + ```sh + $ rladmin cluster create name \ + username \ + password \ + rack_aware \ + rack_id \ + second_rack_id + ``` + +1. Run [`rladmin cluster join`]({{}}) for each new node you want to add to the cluster and assign a different `rack_id` and `second_rack_id`: + + ```sh + $ rladmin cluster join nodes \ + username \ + password \ + rack_id \ + second_rack_id + ``` + +### Existing clusters + +You can configure two-dimensional rack-zone awareness for existing clusters using the [REST API]({{< relref "/operate/rs/references/rest-api" >}}). + +For each node in the cluster, assign a different `second_rack_id` using the REST API to [update the node]({{< relref "/operate/rs/references/rest-api/requests/nodes#put-node" >}}): + +```sh +PUT /v1/nodes/ +{ "second_rack_id": "rack-ID" } +``` + ## Enable database rack-zone awareness Before you can enable rack-zone awareness for a database, you must configure rack-zone awareness for the cluster and its nodes. For more information, see [set up rack-zone awareness](#set-up-rack-zone-awareness). @@ -153,4 +252,4 @@ After you enable rack-zone awareness for an existing database, you should genera ## Shard placement without rack-zone awareness -Even if a database has rack-zone awareness turned off, the cluster still ensures that master and replica shards are placed on distinct nodes. +Even if a database has rack-zone awareness turned off, the cluster still ensures that primary and replica shards are placed on distinct nodes. diff --git a/content/operate/rs/clusters/logging/diagnostic-logging.md b/content/operate/rs/clusters/logging/diagnostic-logging.md new file mode 100644 index 000000000..78b10bcd3 --- /dev/null +++ b/content/operate/rs/clusters/logging/diagnostic-logging.md @@ -0,0 +1,142 @@ +--- +Title: Diagnostic logging +alwaysopen: false +categories: +- docs +- operate +- rs +description: Diagnostic logs can help troubleshoot Redis Enterprise Software. +linkTitle: Diagnostic logging +weight: 50 +--- + +The diagnostic logging service collects detailed system logs, which you can use to troubleshoot Redis Enterprise Software. + +## View diagnostic logs + +Diagnostic logs are collected at scheduled intervals and saved in the `/var/opt/redislabs/log/diagnostics/` directory. Each diagnostic log file is overwritten with the new data at the scheduled collection interval. + +## View log collector settings + +To view the current log collection schedule and parameters for each log collector, use the REST API to [get the diagnostic logging service configuration](/operate/rs/references/rest-api/requests/diagnostics/#put-diagnostics). + +```sh +GET /v1/diagnostics +``` + +Example response: + +```json +{ + "bdb_client_list_target": { + "cron_expression": "*/10 * * * *" + }, + "bdb_info_target": { + "cron_expression": "*/10 * * * *" + }, + "bdb_target": { + "cron_expression": "*/10 * * * *" + }, + "command_stats_target": { + "cron_expression": "*/30 * * * *" + }, + "network_stats_target": { + "cron_expression": "*/30 * * * *" + }, + "persistent_files_target": { + "cron_expression": "*/10 * * * *" + }, + "rladmin_status_target": { + "cron_expression": "*/10 * * * *" + }, + "shard_info_target": { + "cron_expression": "*/10 * * * *" + }, + "shard_latency_histogram_target": { + "cron_expression": "*/10 * * * *" + }, + "shard_latency_target": { + "cron_expression": "*/10 * * * *" + }, + "shard_target": { + "cron_expression": "*/10 * * * *" + }, + "slowlog_target": { + "cron_expression": "*/10 * * * *", + "max_entries": 100 + }, + "socket_files_target": { + "cron_expression": "*/10 * * * *" + } +} +``` + +## Change log collector settings + +To change how often a log is collected, set the `cron_expression` when you [update the diagnostic logging service configuration]({{}}) with the REST API. + +```sh +PUT /v1/diagnostics +{ + "_target": { + "cron_expression": "*/5 * * * *" + } +} +``` + +- Replace `` with the name of the log collector you want to turn off. + +- Use standard [cron syntax](https://en.wikipedia.org/wiki/Cron) to set the collection interval in the `cron_expression`. + +For the slowlog collector only, you can also set `max_entries` to change the maximum number of slow log entries to collect: + +```sh +PUT /v1/diagnostics +{ + "slowlog_target": { + "cron_expression": "*/5 * * * *", + "max_entries": 200 + } +} +``` + +## Turn off log collectors + +To turn off a log collector, set its `cron_expression` to an empty string when you [update the diagnostic logging service configuration]({{}}) with the REST API. + +```sh +PUT /v1/diagnostics +{ + "_target": { + "cron_expression": "" + } +} +``` + +Replace `` with the name of the log collector you want to turn off. + +## Log collectors + +Each log collector runs independently and writes a separate log file. The following table describes the log collectors. + +Default `cron_expression` values: + +- `*/10 * * * *`: Logs are collected every 10 minutes. + +- `*/30 * * * *`: Logs are collected every 30 minutes. + +| Log collector | Description | +|---------------|-------------| +| bdb | Logs database metadata similar to [`GET /bdbs`]({{}}). Each entry is in JSON format.
Default settings:
{{}}"cron_expression": "*/10 * * * *"{{}} | +| bdb_client_list | Logs database client lists, with a separate file for each database. Each entry is in JSON format.
Default settings:
{{}}"cron_expression": "*/10 * * * *"{{}} | +| bdb_info | Logs the result of running [`INFO ALL`]({{}}) on a database, excluding `commandstats`, with a separate file for each database. Each entry is in JSON format.
Default settings:
{{}}"cron_expression": "*/10 * * * *"{{}} | +| command_stats | Logs [`INFO commandstats`]({{}}) for each database, with a separate file for each database. Each entry is in JSON format.
Default settings:
{{}}"cron_expression": "*/30 * * * *"{{}} | +| network_stats | Logs the node's network statistics.
Default settings:
{{}}"cron_expression": "*/30 * * * *"{{}} | +| persistent_files | Lists persistent files from `/var/opt/redislabs/persist/redis`
Default settings:
{{}}"cron_expression": "*/10 * * * *"{{}} | +| rladmin_status | Logs data about nodes, databases, endpoints, and shards from [`rladmin status`]({{}}). Each entry is in JSON format.
Default settings:
{{}}"cron_expression": "*/10 * * * *"{{}} | +| shard | Logs shard status similar to [`GET /shards`]({{}}). Each entry is in JSON format.
Default settings:
{{}}"cron_expression": "*/10 * * * *"{{}} | +| shard_info | Logs the result of running [INFO ALL]({{}}) on a shard, with a separate file for each shard. Each entry is in JSON format.
Default settings:
{{}}"cron_expression": "*/10 * * * *"{{}} | +| shard_latency | Logs the result of running [`latency latest`]({{}}) on a shard, with a separate file for each shard.
Default settings:
{{}}"cron_expression": "*/10 * * * *"{{}} | +| `shard_latency_histogram` | Logs the result of running [`latency histogram`]({{}}) on a shard, with a separate file for each shard.
Default settings:
{{}}"cron_expression": "*/10 * * * *"{{}} | +| slowlog | Logs slow commands from the databases using [`SLOWLOG GET`]({{}}), with a separate file for each database. Each entry is in JSON format.
Default settings:
{{}}"cron_expression": "*/10 * * * *",
"max_entries": 100{{
}} | +| socket_files | Lists socket files used by Redis Enterprise Software.
Default settings:
{{}}"cron_expression": "*/10 * * * *"{{}} | diff --git a/content/operate/rs/installing-upgrading/product-lifecycle.md b/content/operate/rs/installing-upgrading/product-lifecycle.md index fd7622216..f1db3ac2d 100644 --- a/content/operate/rs/installing-upgrading/product-lifecycle.md +++ b/content/operate/rs/installing-upgrading/product-lifecycle.md @@ -40,7 +40,8 @@ This update to the EOL policy allows a lead time of at least 24 months to upgrad | Version - Release date | End of Life (EOL) | | ----------------------------------------- | ------------------ | -| 7.8 – November 2024 | - | +| 7.22 – May 2025 | - | +| 7.8 – November 2024 | May 30, 2027 | | 7.4 – February 2024 | November 30, 2026 | | 7.2 – August 2023 | February 28, 2026 | | 6.4 – February 2023 | August 31, 2025 | diff --git a/content/operate/rs/installing-upgrading/upgrading/upgrade-database.md b/content/operate/rs/installing-upgrading/upgrading/upgrade-database.md index dd31e7c59..6a064b042 100644 --- a/content/operate/rs/installing-upgrading/upgrading/upgrade-database.md +++ b/content/operate/rs/installing-upgrading/upgrading/upgrade-database.md @@ -28,6 +28,7 @@ The default Redis database version differs between Redis Enterprise releases as | Redis
Software | Bundled Redis
DB versions | Default DB version
(upgraded/new databases) | |-------|----------|-----| +| 7.22.x | 6.2, 7.2, 7.4 | 7.4 | | 7.8.x | 6.2, 7.2, 7.4 | 7.4 | | 7.4.x | 6.0, 6.2, 7.2 | 7.2 | | 7.2.4 | 6.0, 6.2, 7.2 | 7.2 | diff --git a/content/operate/rs/monitoring/db-availability.md b/content/operate/rs/monitoring/db-availability.md index a3bb259f1..12da0b47b 100644 --- a/content/operate/rs/monitoring/db-availability.md +++ b/content/operate/rs/monitoring/db-availability.md @@ -58,3 +58,17 @@ The following table shows the relationship between a database's status and avail | import-pending | Available | | pending | Available | | recovery | :x: Not available | + +## Known issues + +- RS155734: Endpoint availability metrics do not work as expected due to a calculation error. As a workaround, use this query to measure availability: + + ```sh + endpoint_server_became_unavailable{cluster="$cluster", db="$db"} + - + endpoint_server_available_again{cluster="$cluster", db="$db"} + ``` + + For up: 0-2 + + For down: 2-1000000 diff --git a/content/operate/rs/monitoring/v1_monitoring.md b/content/operate/rs/monitoring/v1_monitoring.md index 0ab01ab5c..93dd09545 100644 --- a/content/operate/rs/monitoring/v1_monitoring.md +++ b/content/operate/rs/monitoring/v1_monitoring.md @@ -12,15 +12,61 @@ linkTitle: Monitoring v1 weight: 50 --- -The current approach to monitoring Redis Enterprise Software includes: +## Current monitoring system (deprecated) -- Internal monitoring systems: +The current monitoring system, which is deprecated as of Redis Enterprise Software version 7.22, consists of the following components: - - [Statistics APIs]({{}}), which collect various statistics at regular time intervals for clusters, nodes, databases, shards, and endpoints. +- Internal metrics storage: - - Cluster manager metrics and alerts. + - Metrics are internally aggregated, calculated, and stored for up to one year. -- The v1 Prometheus scraping endpoint to integrate with external monitoring tools such as [Prometheus and Grafana]({{}}). + - This historical data is used to generate trends and performance insights over time. + +- [Statistics APIs]({{}}): + + - This set of RESTful APIs exposes metrics collected at regular intervals from clusters, nodes, databases, shards, and endpoints. + + - These APIs allow customers to retrieve performance and usage statistics directly from the internal storage layer. + +- Cluster manager metrics and alerts: + + - The Cluster Manager UI includes [dedicated metrics pages](#cluster-manager-metrics) that display pre-aggregated metrics. + + - [Cluster alerts](#cluster-alerts) are triggered based on thresholds applied to these stored metrics. + +- v1 Prometheus scraping endpoint: + + - Redis Enterprise Software exposes a legacy `/prometheus_metrics` endpoint to integrate with external observability platforms like [Prometheus and Grafana]({{}}). + + - This endpoint fetches data from the internal storage, providing basic monitoring integration. + +### Limitations + +The internal monitoring system, while functional, has several limitations that affect scalability and accuracy: + +- **Limited granularity:** Metrics are aggregated before storage, resulting in a loss of fine-grained insights. + +- **Stale data:** Stored metrics can lag behind real-time system states, reducing the effectiveness of alerting. + +- **Scalability constraints:** Internal storage and processing introduce performance overhead and are not optimized for large-scale observability pipelines. + +- **Limited extensibility:** The system is tightly coupled with internal components, making it difficult to integrate with modern monitoring ecosystems. + +### Transition to the metrics stream engine + +To improve monitoring and address current limitations, Redis Enterprise Software is transitioning to a new observability foundation: the [metrics stream engine]({{}}). + +This modern monitoring stack introduces: + +- Real-time metrics, exposed directly from the engine without intermediate storage for high-fidelity, low-latency insights. + +- Scalable architecture designed for cloud-native observability with lightweight Prometheus collectors. + +- Deeper visibility by exposing new types of metrics such as key size distribution, server overall latency histograms, and system internals with per-endpoint resolution. + +We recommend migrating to the metrics stream engine for enhanced accuracy, scalability, and future-proof observability. + +If you are already using the existing scraping endpoint for integration, follow [this guide]({{}}) to transition and try the new engine. It is possible to scrape both existing and new endpoints simultaneously, allowing advanced dashboard preparation and a smooth transition. ## Cluster manager metrics diff --git a/content/operate/rs/networking/port-configurations.md b/content/operate/rs/networking/port-configurations.md index 0325426ed..c8b85e327 100644 --- a/content/operate/rs/networking/port-configurations.md +++ b/content/operate/rs/networking/port-configurations.md @@ -31,12 +31,14 @@ Redis Enterprise Software's port usage falls into three general categories: | TCP | 3347-3349, 8000, 8071, 9091, 9125 | ❌ No | Internal | Internal metrics ports | | TCP | 8443 | ✅ Yes | Internal, External | Secure (HTTPS) access to the management web UI | | TCP | 9081 | ✅ Yes | Internal | CRDB coordinator for Active-Active management (internal) | -| TCP | 9443, 8080 | ✅ Yes | Internal, External, Active-Active | REST API traffic, including cluster management and node bootstrap | +| TCP | 9082 | ❌ No | Internal | Cluster API internal port | +| TCP | 9443, 8080, 3346 | ✅ Yes | Internal, External, Active-Active | REST API traffic, including cluster management and node bootstrap | | TCP | 10050 | ❌ No | Internal | Zabbix monitoring | | TCP | 10000-10049, 10051-19999 | ✅ Yes | Internal, External, Active-Active | Database traffic | | UDP | 53, 5353 | ❌ No | Internal, External | DNS/mDNS traffic | | TCP | 1968 | ❌ No | Internal | Proxy traffic | -| TCP | 3333-3345, 3350, 36379 | ❌ No | Internal | Internode communication | +| TCP | 3333-3345, 3350-3354, 36379 | ❌ No | Internal | Internode communication | +| TCP | 3355 | ✅ Yes | Internal | Authentication service internal port | | TCP | 20000-29999 | ❌ No | Internal | Database shard traffic | | TCP | 8002, 8004, 8006 | ✅ Yes | Internal | Default system health monitoring (envoy admin, envoy management server, gossip envoy admin)| | TCP | 8444, 9080 | ❌ No | Internal | Traffic between web proxy and cnm_http/cm | diff --git a/content/operate/rs/references/cli-utilities/rladmin/cluster/create.md b/content/operate/rs/references/cli-utilities/rladmin/cluster/create.md index ada4cdfd4..d72b08164 100644 --- a/content/operate/rs/references/cli-utilities/rladmin/cluster/create.md +++ b/content/operate/rs/references/cli-utilities/rladmin/cluster/create.md @@ -24,6 +24,7 @@ cluster create [ node_uid ] [ rack_aware ] [ rack_id ] + [ second_rack_id ] [ license_file ] [ ephemeral_path ] [ persistent_path ] @@ -53,6 +54,7 @@ cluster create | rack_aware | | Activates or deactivates rack awareness (optional) | | rack_id | string | The rack's unique identifier (optional) | | register_dns_suffix | | Enables database mapping to both internal and external IP addresses (optional) | +| second_rack_id | string | The unique identifier of the node's second rack ID for two-dimensional rack awareness (optional) | | username | email address | Admin user's email address | ### Returns diff --git a/content/operate/rs/references/cli-utilities/rladmin/cluster/join.md b/content/operate/rs/references/cli-utilities/rladmin/cluster/join.md index faafc95b3..2ed1efd1d 100644 --- a/content/operate/rs/references/cli-utilities/rladmin/cluster/join.md +++ b/content/operate/rs/references/cli-utilities/rladmin/cluster/join.md @@ -25,6 +25,7 @@ rladmin cluster join [ persistent_path ] [ ccs_persistent_path ] [ rack_id ] + [ second_rack_id ] [ override_rack_id ] [ replace_node ] [ flash_enabled ] @@ -55,6 +56,7 @@ rladmin cluster join | persistent_path | filepath (default: /var/opt/redislabs/persist) | Path to the persistent storage location (optional) | | rack_id | string | Moves the node to the specified rack (optional) | | replace_node | integer | Replaces the specified node with the new node (optional) | +| second_rack_id | string | The unique identifier of the node's second rack ID for two-dimensional rack awareness (optional) | | username | email address | Admin user's email address | ### Returns diff --git a/content/operate/rs/references/cli-utilities/rladmin/cluster/recover.md b/content/operate/rs/references/cli-utilities/rladmin/cluster/recover.md index d5180945b..66cf5be74 100644 --- a/content/operate/rs/references/cli-utilities/rladmin/cluster/recover.md +++ b/content/operate/rs/references/cli-utilities/rladmin/cluster/recover.md @@ -23,6 +23,7 @@ rladmin cluster recover [ persistent_path ] [ ccs_persistent_path ] [ rack_id ] + [ second_rack_id ] [ override_rack_id ] [ node_uid ] [ flash_enabled ] @@ -46,6 +47,7 @@ rladmin cluster recover | override_rack_id | | Changes to a new rack, specified by `rack_id` (optional) | | persistent_path | filepath | Path to the persistent storage location (optional) | | rack_id | string | Switches to the specified rack (optional) | +| second_rack_id | string | The unique identifier of a second rack ID for two-dimensional rack awareness (optional) | ### Returns diff --git a/content/operate/rs/references/cli-utilities/rladmin/status.md b/content/operate/rs/references/cli-utilities/rladmin/status.md index 8120e5dd2..f3241681d 100644 --- a/content/operate/rs/references/cli-utilities/rladmin/status.md +++ b/content/operate/rs/references/cli-utilities/rladmin/status.md @@ -37,7 +37,7 @@ rladmin status | extra backups | Shows periodic backup status | | extra frag | Shows fragmented memory available after the restart | | extra nodestats | Shows shards per node | -| extra rack_id | Shows `rack_id` if customer is not `rack_aware` | +| extra rack_id | Shows `rack_id` and `second_rack_id` even if the cluster is not `rack_aware` | | extra redis_version | Shows Redis version of all databases in the cluster | | extra state_machine | Shows execution of state machine information | | extra watchdog | Shows watchdog status | @@ -109,7 +109,7 @@ rladmin status databases | extra backups | Shows periodic backup status | | extra frag | Shows fragmented memory available after the restart | | extra nodestats | Shows shards per node | -| extra rack_id | Shows `rack_id` if customer is not `rack_aware` | +| extra rack_id | Shows `rack_id` and `second_rack_id` even if the cluster is not `rack_aware` | | extra redis_version | Shows Redis version of all databases in the cluster | | extra state_machine | Shows execution of state machine information | | extra watchdog | Shows watchdog status | @@ -182,7 +182,7 @@ rladmin status endpoints | extra backups | Shows periodic backup status | | extra frag | Shows fragmented memory available after the restart | | extra nodestats | Shows shards per node | -| extra rack_id | Shows `rack_id` if customer is not `rack_aware` | +| extra rack_id | Shows `rack_id` and `second_rack_id` even if the cluster is not `rack_aware` | | extra redis_version | Shows Redis version of all endpoints in the cluster | | extra state_machine | Shows execution of state machine information | | extra watchdog | Shows watchdog status | @@ -292,7 +292,7 @@ rladmin status nodes | extra backups | Shows periodic backup status | | extra frag | Shows fragmented memory available after the restart | | extra nodestats | Shows shards per node | -| extra rack_id | Shows `rack_id` if customer is not `rack_aware` | +| extra rack_id | Shows `rack_id` and `second_rack_id` even if the cluster is not `rack_aware` | | extra redis_version | Shows Redis version of all nodes in the cluster | | extra state_machine | Shows execution of state machine information | | extra watchdog | Shows watchdog status | @@ -372,7 +372,7 @@ rladmin status shards | extra backups | Shows periodic backup status | | extra frag | Shows fragmented memory available after the restart | | extra shardstats | Shows shards per node | -| extra rack_id | Shows `rack_id` if customer is not `rack_aware` | +| extra rack_id | Shows `rack_id` and `second_rack_id` even if the cluster is not `rack_aware` | | extra redis_version | Shows Redis version of all shards in the cluster | | extra state_machine | Shows execution of state machine information | | extra watchdog | Shows watchdog status | diff --git a/content/operate/rs/references/cli-utilities/rladmin/tune.md b/content/operate/rs/references/cli-utilities/rladmin/tune.md index 30cf6a800..113333ef1 100644 --- a/content/operate/rs/references/cli-utilities/rladmin/tune.md +++ b/content/operate/rs/references/cli-utilities/rladmin/tune.md @@ -275,6 +275,10 @@ rladmin tune proxy { | all } |-----------------|----------------------------|-------------------------------------------------------------------------------------| | id | integer | ID of the specified proxy | | all | | Configures settings for all proxies | +| client_eviction | boolean (default: false) | If `true,`, enables client eviction based on `maxmemory_clients`. | +| incoming_connections_capacity | integer (default: 0) | The maximum number of concurrent incoming connections, also known as the maximum burst size. The default is 0, which means no limit. | +| incoming_connections_min_capacity | integer (default: 10) | The minimum number of free slots required before accepting new connections after an overflow. | +| incoming_connections_rate_limit | integer (default: 0) | The maximum number of incoming connections per second. The default is 0, which means no limit. | | max_threads | integer, (range: 1-255) | Maximum number of threads allowed | | mode | `static`
`dynamic` | Determines if the proxy automatically adjusts the number of threads based on load size | | scale_duration | time in seconds, (range: 10-300) | Time of scale_threshold CPU utilization before the automatic proxy automatically scales | diff --git a/content/operate/rs/references/metrics/_index.md b/content/operate/rs/references/metrics/_index.md index 9b5c0f7f6..4589d882d 100644 --- a/content/operate/rs/references/metrics/_index.md +++ b/content/operate/rs/references/metrics/_index.md @@ -28,7 +28,7 @@ you can connect your [Prometheus](https://prometheus.io/) and [Grafana](https:// See [Prometheus integration]({{< relref "/operate/rs/monitoring/prometheus_and_grafana" >}}) to learn how to connect Prometheus and Grafana to your Redis Enterprise database. -Redis Enterprise version 7.8.2 introduces a preview of the new metrics stream engine that exposes the v2 Prometheus scraping endpoint at `https://:8070/v2`. +Redis Enterprise Software version 7.8.2 introduces a preview of the new metrics stream engine that exposes the v2 Prometheus scraping endpoint at `https://:8070/v2`. This new engine exports all time-series metrics to external monitoring tools such as Grafana, DataDog, NewRelic, and Dynatrace using Prometheus. The new engine enables real-time monitoring, including full monitoring during maintenance operations, providing full visibility into performance during events such as shards' failovers and scaling operations. diff --git a/content/operate/rs/references/rest-api/objects/bdb/_index.md b/content/operate/rs/references/rest-api/objects/bdb/_index.md index dfc737ec9..e978c937a 100644 --- a/content/operate/rs/references/rest-api/objects/bdb/_index.md +++ b/content/operate/rs/references/rest-api/objects/bdb/_index.md @@ -18,6 +18,13 @@ An API object that represents a managed database in the cluster. | uid | integer; Cluster unique ID of database. Can be set during creation but cannot be updated. | | account_id | integer; SM account ID | | action_uid | string; Currently running action's UID (read-only) | +| active_defrag_cycle_max | integer, (range: 1-99); Maximum CPU percentage used for defragmentation when the upper threshold is reached | +| active_defrag_cycle_min | integer, (range: 1-99) (default: 1); Minimal CPU percentage used for defragmentation when the lower threshold is reached | +| active_defrag_ignore_bytes | string (default: 100mb); Minimum amount of fragmentation waste to start active defragmentation | +| active_defrag_max_scan_fields | integer (default: 1000); Maximum number of set/hash/zset/list fields that will be processed from the main dictionary scan | +| active_defrag_threshold_lower | integer, (range: 0-1000) (default: 10); Minimum percentage of fragmentation to start active defragmentation | +| active_defrag_threshold_upper | integer, (range: 0-1000) (default: 100); Maximum percentage of fragmentation at which maximum effort is used | +| activedefrag | Enable or turn off active defragmentation functionality.
Values:
'yes'
**'no'** | | aof_policy | Policy for Append-Only File data persistence
Values:
**'appendfsync-every-sec'**
'appendfsync-always' | | authentication_admin_pass | string; Password for administrative access to the BDB (used for SYNC from the BDB) | | authentication_redis_pass | string; Redis AUTH password authentication.
Use for Redis databases only. Ignored for memcached databases. (deprecated as of Redis Enterprise v7.2, replaced with multiple passwords feature in version 6.0.X) | @@ -41,6 +48,7 @@ An API object that represents a managed database in the cluster. | bigstore | boolean (default: false); Database bigstore option | | bigstore_ram_size | integer (default: 0); Memory size of bigstore RAM part. | | bigstore_ram_weights | {{}}[{
"shard_uid": integer,
"weight": number
}, ...]{{
}} List of shard UIDs and their bigstore RAM weights;
**shard_uid**: Shard UID;
**weight**: Relative weight of RAM distribution | +| bigstore_version | The database's `bigstore_version`:
• `1` for Auto Tiering (Redis on Flash version 1). Default version.
• `2` for Redis Flex (Redis on Flash version 2) on databases that support it. Can only be used with the `speedb` driver. | | client_cert_subject_validation_type | Enables additional certificate validations that further limit connections to clients with valid certificates during TLS client authentication.
Values:
**disabled**: Authenticates clients with valid certificates. No additional validations are enforced.
**san_cn**: A client certificate is valid only if its Common Name (CN) matches an entry in the list of valid subjects. Ignores other Subject attributes.
**full_subject**: A client certificate is valid only if its Subject attributes match an entry in the list of valid subjects. | | conns | integer (default 5); Number of internal proxy connections | | conns_type | Connections limit type
Values:
**‘per-thread’**
‘per-shard’ | @@ -98,6 +106,7 @@ An API object that represents a managed database in the cluster. | max_client_pipeline | integer (default: 200); Maximum number of pipelined commands per connection. Maximum value is 2047. | | max_connections | integer (default: 0); Maximum number of client connections allowed (0 unlimited) | | max_pipelined | integer (default: 2000); Determines the maximum number of commands in the proxy’s pipeline per shard connection. | +| maxclients | integer (default: 10000); The maximum number of connected clients at the same time. By default the limit is 10000 clients. | | master_persistence | boolean (default: false); If true, persists the primary shard in addition to replica shards in a replicated and persistent database. | | memory_size | integer (default: 0); Database memory limit (0 is unlimited), expressed in bytes. | | metrics_export_all | boolean; Enable/disable exposing all shard metrics through the metrics exporter | @@ -105,6 +114,7 @@ An API object that represents a managed database in the cluster. | module_list | {{}}[{
"module_id": string,
"module_args": [
u'string',
u'null'],
"module_name": string,
"semantic_version": string
}, ...]{{
}} List of modules associated with the database

**module_id**: Module UID (deprecated; use `module_name` instead)
**module_args**: Module command-line arguments (pattern does not allow special characters &,\<,>,")
**module_name**: Module's name
**semantic_version**: Module's semantic version (deprecated; use `module_args` instead)

**module_id** and **semantic_version** are optional as of Redis Enterprise Software v7.4.2 and deprecated as of v7.8.2. | | mtls_allow_outdated_certs | boolean; An optional mTLS relaxation flag for certs verification | | mtls_allow_weak_hashing | boolean; An optional mTLS relaxation flag for certs verification | +| multi_commands_opt | If set to `batch`, it reduces the overhead of transaction management by batching multiple commands into a single transaction.
Values:
**disabled**: Turns off the optimization.
**batch**: Enables the optimization.
**auto**: Uses the [cluster's `multi_commands_opt` setting]({{}}). | | name | string; Database name. Only letters, numbers, or hyphens are valid characters. The name must start and end with a letter or number. | | oss_cluster | boolean (default: false); OSS Cluster mode option. Cannot be enabled with `'hash_slots_policy': 'legacy'` | | oss_cluster_api_preferred_endpoint_type | Endpoint type in the OSS cluster API
Values:
**‘ip’**
‘hostname’ | @@ -116,6 +126,7 @@ An API object that represents a managed database in the cluster. | recovery_wait_time | integer (default: -1); Defines how many seconds to wait for the persistence file to become available during auto recovery. After the wait time expires, auto recovery completes with potential data loss. The default `-1` means to wait forever. | | redis_version | string; Version of the redis-server processes: e.g. 6.0, 5.0-big | | repl_backlog_size | string; Redis replication backlog size ('auto' or size in bytes) | +| replica_read_only | boolean (default: false); If `true`, enables an Active-Passive setup where Replica Of databases only allow read operations. Only configurable during database creation and cannot be changed later. | | replica_sources | array of [syncer_sources]({{< relref "/operate/rs/references/rest-api/objects/bdb/syncer_sources" >}}) objects; Remote endpoints of database to sync from. See the 'bdb -\> replica_sources' section | | [replica_sync]({{< relref "/operate/rs/references/rest-api/objects/bdb/replica_sync" >}}) | Enable, disable, or pause syncing from specified replica_sources
Values:
'enabled'
**'disabled'**
'paused'
'stopped' | | replica_sync_connection_alarm_timeout_seconds | integer (default: 0); If the syncer takes longer than the specified number of seconds to connect to a replica, raise a connection alarm | diff --git a/content/operate/rs/references/rest-api/objects/bootstrap/identity.md b/content/operate/rs/references/rest-api/objects/bootstrap/identity.md index 07ddfb6e8..f8f0d31a3 100644 --- a/content/operate/rs/references/rest-api/objects/bootstrap/identity.md +++ b/content/operate/rs/references/rest-api/objects/bootstrap/identity.md @@ -20,4 +20,5 @@ weight: $weight | name | string | Node's name | | override_rack_id | boolean | When replacing an existing node in a rack-aware cluster, allows the new node to be located in a different rack | | rack_id | string | Rack ID, overrides cloud config | +| second_rack_id | string | Second rack ID where node is installed | | use_internal_ipv6 | boolean (default: false) | Node uses IPv6 for internal communication | diff --git a/content/operate/rs/references/rest-api/objects/cluster/_index.md b/content/operate/rs/references/rest-api/objects/cluster/_index.md index c820230db..359e2178c 100644 --- a/content/operate/rs/references/rest-api/objects/cluster/_index.md +++ b/content/operate/rs/references/rest-api/objects/cluster/_index.md @@ -44,12 +44,14 @@ An API object that represents the cluster. | gossip_envoy_admin_port | integer, (range: 1024-65535) | Gossip envoy admin port| | handle_redirects | boolean (default: false) | Handle API HTTPS requests and redirect to the master node internally | | http_support | boolean (default: false) | Enable or turn off HTTP support | +| logrotate_settings | [logrotate_settings]({{}}) object | Settings for logrotate configuration | | min_control_TLS_version | '1.2'
'1.3' | The minimum version of TLS protocol which is supported at the control path | | min_data_TLS_version | '1.2'
'1.3' | The minimum version of TLS protocol which is supported at the data path | | min_sentinel_TLS_version | '1.2'
'1.3' | The minimum version of TLS protocol which is supported at the data path | | mtls_authorized_subjects | array | {{}}[{
"CN": string,
"O": string,
"OU": [array of strings],
"L": string,
"ST": string,
"C": string
}, ...]{{
}} A list of valid subjects used for additional certificate validations during TLS client authentication. All subject attributes are case-sensitive.
**Required subject fields**:
"CN" for Common Name
**Optional subject fields:**
"O" for Organization
"OU" for Organizational Unit (array of strings)
"L" for Locality (city)
"ST" for State/Province
"C" for 2-letter country code | | mtls_certificate_authentication | boolean | Require authentication of client certificates for mTLS connections to the cluster. The API_CA certificate should be configured as a prerequisite. | | mtls_client_cert_subject_validation_type | `disabled`
`san_cn`
`full_subject` | Enables additional certificate validations that further limit connections to clients with valid certificates during TLS client authentication.
Values:
**disabled**: Authenticates clients with valid certificates. No additional validations are enforced.
**san_cn**: A client certificate is valid only if its Common Name (CN) matches an entry in the list of valid subjects. Ignores other Subject attributes.
**full_subject**: A client certificate is valid only if its Subject attributes match an entry in the list of valid subjects. | +| multi_commands_opt | **`disabled`**
`batch`
`force_disabled` | Determines the default `multi_commands_opt` setting for databases in the cluster. If set to `batch`, it reduces the overhead of transaction management by batching multiple commands into a single transaction.
Values:
**disabled**: Turns off the optimization for all databases except those that override it on the [bdb level]({{}}). Default value.
**batch**: Enables the optimization on all databases except those that override it on the [bdb level]({{}}).
**force_disabled**: Disables the optimization for all databases, even those that override it on the [bdb level]({{}}). | | name | string | Cluster's fully qualified domain name (read-only) | | password_complexity | boolean (default: false) | Enforce password complexity policy | | password_expiration_duration | integer (default: 0) | The number of days a password is valid until the user is required to replace it | @@ -58,6 +60,7 @@ An API object that represents the cluster. | proxy_max_ccs_disconnection_time | integer | Cluster-wide proxy timeout policy between proxy and CCS | | rack_aware | boolean | Cluster operates in a rack-aware mode (read-only) | | reserved_ports | array of strings | List of reserved ports and/or port ranges to avoid using for database endpoints (for example `"reserved_ports": ["11000", "13000-13010"]`) | +| robust_crdt_syncer | boolean (default: false) | If `true`, enables the robust syncer for Active-Active databases | | s3_ca_cert | string | Filepath to the PEM-encoded CA certificate to use for validating TLS connections to the S3 server | | s3_url | string | Specifies the URL for S3 export and import | | saslauthd_ldap_conf | string | saslauthd LDAP configuration | diff --git a/content/operate/rs/references/rest-api/objects/cluster/logrotate_settings.md b/content/operate/rs/references/rest-api/objects/cluster/logrotate_settings.md new file mode 100644 index 000000000..dd748f69f --- /dev/null +++ b/content/operate/rs/references/rest-api/objects/cluster/logrotate_settings.md @@ -0,0 +1,17 @@ +--- +Title: Logrotate settings object +alwaysopen: false +categories: +- docs +- operate +- rs +description: Documents the logrotate_settings object used with Redis Enterprise Software REST API calls. +linkTitle: logrotate_settings +weight: $weight +--- + +| Name | Type/Value | Description | +|------|------------|-------------| +| maxage | integer (default: 7) | Remove rotated logs older than the specified number of days | +| maxsize | string (default: 200M) | The log will rotate after it reaches the specified size | +| rotate | integer (default: 10) | Determines how many times the log will be rotated. If set to 0, old versions are removed rather than rotated. | \ No newline at end of file diff --git a/content/operate/rs/references/rest-api/objects/cluster_settings.md b/content/operate/rs/references/rest-api/objects/cluster_settings.md index 4fa9d1cdc..9a4d169aa 100644 --- a/content/operate/rs/references/rest-api/objects/cluster_settings.md +++ b/content/operate/rs/references/rest-api/objects/cluster_settings.md @@ -23,10 +23,12 @@ Cluster resources management policy | bigstore_provision_node_threshold_p | integer | Minimum free memory (excluding reserved memory) allowed on a node before new shards can no longer be added to it | | data_internode_encryption | boolean | Enable/deactivate encryption of the data plane internode communication | | db_conns_auditing | boolean | [Audit connections]({{< relref "/operate/rs/security/audit-events" >}}) for new databases by default if set to true. | +| default_bigstore_version | **`1`**
`2` | Determines the default value of new databases' `bigstore_version`:
• `1` for Auto Tiering (Redis on Flash version 1). Default version.
• `2` for Redis Flex (Redis on Flash version 2) on databases that support it. Can only be used with the `speedb` driver. | | default_concurrent_restore_actions | integer | Default number of restore actions allowed at the same time. Set to 0 to allow any number of simultaneous restore actions. | | default_fork_evict_ram | boolean | If true, the bdbs should evict data from RAM to ensure successful replication or persistence | | default_non_sharded_proxy_policy | `single`

`all-master-shards`

`all-nodes` | Default proxy_policy for newly created non-sharded databases' endpoints | | default_oss_sharding | boolean (default: false) | Default hashing policy to use for new databases. This field is for future use only and should not be changed. | +| default_oss_cluster | boolean (default: false) | Default `oss_cluster` setting for new databases. Enables the OSS Cluster API if `true`, or turns it off if `false`. | | default_provisioned_redis_version | string | Default Redis version | | default_sharded_proxy_policy | `single`

`all-master-shards`

`all-nodes` | Default proxy_policy for newly created sharded databases' endpoints | | default_shards_placement | `dense`
`sparse` | Default shards_placement for a newly created databases | @@ -37,9 +39,11 @@ Cluster resources management policy | login_lockout_counter_reset_after | integer | Number of seconds that must elapse between failed sign in attempts before the lockout counter is reset to 0. | | login_lockout_duration | integer | Duration (in secs) of account lockout. If set to 0, the account lockout will persist until released by an admin. | | login_lockout_threshold | integer | Number of failed sign in attempts allowed before locking a user account | +| max_redis_forks | integer (default: 0) | Maximum number of background processes forked from shards that can exist on the node at any given time. 0 means unlimited. | | max_saved_events_per_type | integer | Maximum saved events per event type | | max_simultaneous_backups | integer (default: 4) | Maximum number of backup processes allowed at the same time | | parallel_shards_upgrade | integer | Maximum number of shards to upgrade in parallel | +| max_slave_full_syncs | integer (default: 0) | Maximum number of simultaneous replica full syncs that can run at any given time. 0 means unlimited. | | persistence_cleanup_scan_interval | string | [CRON expression](https://en.wikipedia.org/wiki/Cron#CRON_expression) that defines the Redis cleanup schedule | | persistent_node_removal | boolean | When removing a node, wait for persistence files to be created for all migrated shards | | rack_aware | boolean | Cluster operates in a rack-aware mode | diff --git a/content/operate/rs/references/rest-api/objects/node.md b/content/operate/rs/references/rest-api/objects/node.md index 1c77ec4e8..a42c75189 100644 --- a/content/operate/rs/references/rest-api/objects/node.md +++ b/content/operate/rs/references/rest-api/objects/node.md @@ -27,7 +27,9 @@ An API object that represents a node in the cluster. | ephemeral_storage_size | number | Ephemeral storage size (bytes) (read-only) | | external_addr | complex object | External IP addresses of node. `GET` `/jsonschema` to retrieve the object's structure. | | max_listeners | integer | Maximum number of listeners on the node | +| max_redis_forks | integer (default: -1) | Maximum number of background processes forked from shards that can exist on the node at any given time. Set to 0 for unlimited. Set to -1 to use cluster settings. | | max_redis_servers | integer | Maximum number of shards on the node | +| max_slave_full_syncs | integer (default: -1) | Maximum number of simultaneous replica full syncs that can run at any given time. Set to 0 for unlimited. Set to -1 to use cluster settings. | | os_family | 'rhel'
'ubuntu'
'amzn' | Operating system family (read-only) | | os_name | string | Operating system name (read-only) | | os_semantic_version | string | Full version number (read-only) | @@ -37,6 +39,7 @@ An API object that represents a node in the cluster. | public_addr | string | Public IP address of node (deprecated as of Redis Enterprise v4.3.3, use external_addr instead) | | rack_id | string | Rack ID where node is installed | | recovery_path | string | Recovery files path | +| second_rack_id | string | Second rack ID where node is installed | | shard_count | integer | Number of shards on the node (read-only) | | shard_list | array of integers | Cluster unique IDs of all node shards | | software_version | string | Installed Redis Enterprise cluster software version (read-only) | diff --git a/content/operate/rs/references/rest-api/objects/proxy.md b/content/operate/rs/references/rest-api/objects/proxy.md index 7e50b2b6b..0cf9f4419 100644 --- a/content/operate/rs/references/rest-api/objects/proxy.md +++ b/content/operate/rs/references/rest-api/objects/proxy.md @@ -16,6 +16,7 @@ An API object that represents a [proxy](https://en.wikipedia.org/wiki/Proxy_serv |------|------------|-------------| | uid | integer | Unique ID of the proxy (read-only) | | backlog | integer | TCP listen queue backlog | +| client_eviction | boolean (default: false) | If `true,`, enables client eviction based on `maxmemory_clients`. | | client_keepcnt | integer | Client TCP keepalive count | | client_keepidle | integer | Client TCP keepalive idle | | client_keepintvl | integer | Client TCP keepalive interval | @@ -24,6 +25,9 @@ An API object that represents a [proxy](https://en.wikipedia.org/wiki/Proxy_serv | dynamic_threads_scaling | boolean | Automatically adjust the number of threads| | ignore_bdb_cconn_limit | boolean | Ignore client connection limits | | ignore_bdb_cconn_output_buff_limits | boolean | Ignore buffer limit | +| incoming_connections_capacity | integer (default: 0) | The maximum number of concurrent incoming connections, also known as the maximum burst size. The default is 0, which means no limit. | +| incoming_connections_min_capacity | integer (default: 10) | The minimum number of free slots required before accepting new connections after an overflow. | +| incoming_connections_rate_limit | integer (default: 0) | The maximum number of incoming connections per second. The default is 0, which means no limit. | | log_level | `crit`
`error`
`warn`
`info`
`trace`
`debug` | Minimum log level to log. Only logs with this level or greater will be logged. | | max_listeners | integer | Max number of listeners | | max_servers | integer | Max number of Redis servers | @@ -31,5 +35,6 @@ An API object that represents a [proxy](https://en.wikipedia.org/wiki/Proxy_serv | max_worker_client_conns | integer | Max client connections per thread | | max_worker_server_conns | integer | Max server connections per thread | | max_worker_txns | integer | Max in-flight transactions per thread | +| maxmemory_clients | integer (default: 4294967296) | Maximum total memory, in bytes, used by clients | | threads | integer, (range: 1-256) | Number of threads | | threads_usage_threshold | integer, (range: 50-99) | Max number of threads | diff --git a/content/operate/rs/references/rest-api/objects/services_configuration/_index.md b/content/operate/rs/references/rest-api/objects/services_configuration/_index.md index 1faf67ef8..32ecc3f0c 100644 --- a/content/operate/rs/references/rest-api/objects/services_configuration/_index.md +++ b/content/operate/rs/references/rest-api/objects/services_configuration/_index.md @@ -16,6 +16,7 @@ Optional cluster services settings | Name | Type/Value | Description | |------|------------|-------------| | alert_mgr | [alert_mgr]({{< relref "/operate/rs/references/rest-api/objects/services_configuration/alert_mgr" >}}) object | Whether to enable/disable the alert manager processes | +| call_home_agent | [call_home_agent]({{< relref "/operate/rs/references/rest-api/objects/services_configuration/call_home_agent" >}}) object | Whether to enable/disable the call_home_agent process, which sends daily usage statistics to Redis | | cm_server | [cm_server]({{< relref "/operate/rs/references/rest-api/objects/services_configuration/cm_server" >}}) object | Whether to enable/disable the CM server | | crdb_coordinator | [crdb_coordinator]({{< relref "/operate/rs/references/rest-api/objects/services_configuration/crdb_coordinator" >}}) object | Whether to enable/disable the CRDB coordinator process | | crdb_worker | [crdb_worker]({{< relref "/operate/rs/references/rest-api/objects/services_configuration/crdb_worker" >}}) object | Whether to enable/disable the CRDB worker processes | @@ -23,4 +24,5 @@ Optional cluster services settings | ldap_agent_mgr | [ldap_agent_mgr]({{< relref "/operate/rs/references/rest-api/objects/services_configuration/ldap_agent_mgr" >}}) object | Whether to enable/disable the LDAP agent manager processes | | mdns_server | [mdns_server]({{< relref "/operate/rs/references/rest-api/objects/services_configuration/mdns_server" >}}) object | Whether to enable/disable the multicast DNS server | | pdns_server | [pdns_server]({{< relref "/operate/rs/references/rest-api/objects/services_configuration/pdns_server" >}}) object | Whether to enable/disable the PDNS server | +| sentinel_service | [sentinel_service]({{< relref "/operate/rs/references/rest-api/objects/services_configuration/sentinel_service" >}}) object | Whether to enable/disable the Sentinel service process | | stats_archiver | [stats_archiver]({{< relref "/operate/rs/references/rest-api/objects/services_configuration/stats_archiver" >}}) object | Whether to enable/disable the stats archiver service | diff --git a/content/operate/rs/references/rest-api/objects/services_configuration/call_home_agent.md b/content/operate/rs/references/rest-api/objects/services_configuration/call_home_agent.md new file mode 100644 index 000000000..d3c4e4471 --- /dev/null +++ b/content/operate/rs/references/rest-api/objects/services_configuration/call_home_agent.md @@ -0,0 +1,15 @@ +--- +Title: Call home agent object +alwaysopen: false +categories: +- docs +- operate +- rs +description: Documents the call_home_agent object used with Redis Enterprise Software REST API calls. +linkTitle: call_home_agent +weight: $weight +--- + +| Name | Type/Value | Description | +|------|------------|-------------| +| operating_mode | 'disabled'
'enabled' | Enable/disable the call_home_agent process, which sends daily usage statistics to Redis | diff --git a/content/operate/rs/references/rest-api/objects/services_configuration/sentinel_service.md b/content/operate/rs/references/rest-api/objects/services_configuration/sentinel_service.md new file mode 100644 index 000000000..3354f04c9 --- /dev/null +++ b/content/operate/rs/references/rest-api/objects/services_configuration/sentinel_service.md @@ -0,0 +1,15 @@ +--- +Title: Sentinel service object +alwaysopen: false +categories: +- docs +- operate +- rs +description: Documents the sentinel_service object used with Redis Enterprise Software REST API calls. +linkTitle: sentinel_service +weight: $weight +--- + +| Name | Type/Value | Description | +|------|------------|-------------| +| operating_mode | 'disabled'
'enabled' | Enable/disable the Sentinel service process | diff --git a/content/operate/rs/references/rest-api/requests/actions/_index.md b/content/operate/rs/references/rest-api/requests/actions/_index.md index df61c8f3b..26f0e84b1 100644 --- a/content/operate/rs/references/rest-api/requests/actions/_index.md +++ b/content/operate/rs/references/rest-api/requests/actions/_index.md @@ -15,9 +15,11 @@ weight: $weight | Method | Path | Description | |--------|------|-------------| | [GET](#get-all-actions) | `/v1/actions` | Get all actions | +| [GET](#get-all-actions-v2) | `/v2/actions` | Get all actions | | [GET](#get-action) | `/v1/actions/{uid}` | Get a single action | +| [GET](#get-action-v2) | `/v2/actions/{uid}` | Get a single action | -## Get all actions {#get-all-actions} +## Get all actions v1 {#get-all-actions} ``` GET /v1/actions @@ -25,6 +27,8 @@ GET /v1/actions Get the status of all running, pending, or completed actions on all clusters, nodes, and databases. This API tracks long-lived API requests that return either a `task_id` or an `action_uid`. +This API does not return any information about other actions, such as import, export, and backup. To get info about these actions, use [`GET /v2/actions`](#get-all-actions-v2). + #### Required permissions | Permission name | @@ -95,10 +99,86 @@ Regardless of an action’s source, each action in the response contains the fol | Code | Description | |------|-------------| -| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | No error, response provides info about an ongoing action | -| [404 Not Found](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) | Action does not exist (i.e. not currently running and no available status of last run).| +| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | No error, response provides info about an ongoing action | +| [404 Not Found](https://www.rfc-editor.org/rfc/rfc9110.html#name-404-not-found) | Action does not exist (for example, not currently running and no available status of last run).| + +## Get all actions v2 {#get-all-actions-v2} + +``` +GET /v2/actions +``` + +Get the status of all currently running, pending, or completed actions from tasks, state-machines, and other actions, including import, export, and backup. This API tracks long-lived API requests that return either a `task_id` or an `action_uid`. + +#### Required permissions + +| Permission name | +|-----------------| +| [view_status_of_cluster_action]({{< relref "/operate/rs/references/rest-api/permissions#view_status_of_cluster_action" >}}) | -## Get a specific action {#get-action} +### Request {#get-all-request-v2} + +#### Example HTTP request + +``` +GET /v2/actions +``` + +### Response {#get-all-response-v2} + +Returns a JSON array of v2 [action objects]({{< relref "/operate/rs/references/rest-api/objects/action" >}}). + +The v2 action object includes the following fields: + +| Field | Type/Value | Description | +|-------|------------|-------------| +| action_uid | string | The action's globally unique identifier | +| action_type | "task"
"state-machine"
"other" | The action's type | +| creation_time | integer | The action's creation time. Unix timestamp in seconds. | +| name | string | Name of the running or failed state machine | +| progress | float (range: 0-100) | Percent of completed steps for the action | +| status | string | The action's status | +| additional_info | JSON object | A dictionary that can include additional information about the action; only included in the response if it contains at least one key-value pair | + +The `additional_info` object can contain any of the following fields: + +| Field | Type/Value | Description | +|-------|------------|-------------| +| description | string | Short description of the action | +| error | string | A message that describes what error occurred if the action failed | +| object_type | string | The type of object that was processed in the action, such as BDB or node | +| object_uid | string | The unique ID of the object processed in the action | +| pending_ops | JSON object | List of operations that are waiting to run (optional)
{{}}"pending_ops": {
"3": {
"heartbeat": integer,
"snapshot": { ... },
"last_sample_time": integer,
"op_name": string,
"status_code": string,
"status_description": string,
"progress": float
}
}{{
}}
`pending_ops` is a map where the key is the `shard_id`, and the value is a map that can include the following optional fields:
**heartbeat**: The time, in seconds since the Unix epoch, since the last change in the progress of the operation.
**snapshot**: A map of properties stored by the operation that are needed to run.
**last_sample_time**: **last_sample_time**: The time, in seconds since the Unix epoch, when the last snapshot of the operation was taken.
**op_name**: The name of the operation from the state machine that is running.
**status_code**: The code for the operation's current status.
**status_description**: The operation's current status.
**progress**: The operation's progress in percentage (1 to 100). | + +Regardless of an action’s source, each action in the response contains the following attributes: `name`, `action_uid`, `creation_time`, `status`, and `progress`. + +#### Example JSON body + +```json +[ + { + "action_type": "task", + "action_uid": "6155403f-c26f-40ab-8afc-23ed663973f6", + "additional_info": { + "object_type": "node", + "object_uid": "1" + }, + "creation_time": 1742595918, + "name": "retry_bdb", + "progress": 100.0, + "status": "completed" + }, + // Additional task objects +] +``` + +### Status codes {#get-all-status-codes-v2} + +| Code | Description | +|------|-------------| +| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | No error, response provides info about an ongoing action | + +## Get a specific action v1 {#get-action} ``` GET /v1/actions/{uid} @@ -106,6 +186,8 @@ GET /v1/actions/{uid} Get the status of a specific action. +This API does not return any information about other actions, such as import, export, and backup. To get info about these actions, use [`GET /v2/actions/`](#get-action-v2). + #### Required permissions | Permission name | @@ -160,5 +242,85 @@ Regardless of an action’s source, each action contains the following attribute | Code | Description | |------|-------------| -| [200 OK](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1) | No error, response provides info about an ongoing action | -| [404 Not Found](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5) | Action does not exist (i.e. not currently running and no available status of last run) | +| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | No error, response provides info about an ongoing action | +| [404 Not Found](https://www.rfc-editor.org/rfc/rfc9110.html#name-404-not-found) | Action does not exist (that is, not currently running and no available status of last run) | + +## Get a specific action v2 {#get-action-v2} + +``` +GET /v2/actions/{uid} +``` + +Get the status of a specific action. This API can also return information about actions like import, export, and backup. + +#### Required permissions + +| Permission name | +|-----------------| +| [view_status_of_cluster_action]({{< relref "/operate/rs/references/rest-api/permissions#view_status_of_cluster_action" >}}) | + +### Request {#get-request-v2} + +#### Example HTTP request + +``` +GET /v2/actions/{uid} +``` + +#### URL parameters + +| Field | Type | Description | +|-------|------|-------------| +| uid | string | The action_uid to check | + +### Response {#get-response-v2} + +Returns a v2 [action object]({{}}). + +The v2 action object includes the following fields: + +| Field | Type/Value | Description | +|-------|------------|-------------| +| action_uid | string | The action's globally unique identifier | +| action_type | "task"
"state-machine"
"other" | The action's type | +| creation_time | integer | The action's creation time. Unix timestamp in seconds. | +| name | string | Name of the running or failed state machine | +| progress | float (range: 0-100) | Percent of completed steps for the action | +| status | string | The action's status | +| additional_info | JSON object | A dictionary that can include additional information about the action; only included in the response if it contains at least one key-value pair | + +The `additional_info` object can contain any of the following fields: + +| Field | Type/Value | Description | +|-------|------------|-------------| +| description | string | Short description of the action | +| error | string | A message that describes what error occurred if the action failed | +| object_type | string | The type of object that was processed in the action, such as BDB or node | +| object_uid | string | The unique ID of the object processed in the action | +| pending_ops | JSON object | List of operations that are waiting to run (optional)
{{}}"pending_ops": {
"3": {
"heartbeat": integer,
"snapshot": { ... },
"last_sample_time": integer,
"op_name": string,
"status_code": string,
"status_description": string,
"progress": float
}
}{{
}}
`pending_ops` is a map where the key is the `shard_id`, and the value is a map that can include the following optional fields:
**heartbeat**: The time, in seconds since the Unix epoch, since the last change in the progress of the operation.
**snapshot**: A map of properties stored by the operation that are needed to run.
**last_sample_time**: The time, in seconds since the Unix epoch, when the last snapshot of the operation was taken.
**op_name**: The name of the operation from the state machine that is running.
**status_code**: The code for the operation's current status.
**status_description**: The operation's current status.
**progress**: The operation's progress in percentage (1 to 100). | + +Regardless of an action’s source, each action contains the following attributes: `name`, `action_uid`, `creation_time`, `status`, and `progress`. + +#### Example JSON body + +```json +{ + "action_type": "task", + "action_uid": "6155403f-c26f-40ab-8afc-23ed663973f6", + "additional_info": { + "object_type": "node", + "object_uid": "1" + }, + "creation_time": 1742595918, + "name": "retry_bdb", + "progress": 100.0, + "status": "completed" +} +``` + +### Status codes {#get-status-codes-v2} + +| Code | Description | +|------|-------------| +| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | No error, response provides info about an ongoing action | +| [404 Not Found](https://www.rfc-editor.org/rfc/rfc9110.html#name-404-not-found) | Action does not exist (that is, not currently running and no available status of last run) | diff --git a/content/operate/rs/references/rest-api/requests/bdbs/_index.md b/content/operate/rs/references/rest-api/requests/bdbs/_index.md index 7db4438e5..679a9e5f6 100644 --- a/content/operate/rs/references/rest-api/requests/bdbs/_index.md +++ b/content/operate/rs/references/rest-api/requests/bdbs/_index.md @@ -581,11 +581,12 @@ Include a JSON object that contains a [BDB object]({{< relref "/operate/rs/refer "shards_count": 1 }, "recovery_plan": { - "data_files": [ + "original_bdb_shards": [ { - "shard_slots": "0-16383", - "node_uid": "1", - "filename": "redis-4.rdb" + "assigned_slots": "0-16383", + "node_uid": "1", + "role": "master", + "uid": "1" } ] } diff --git a/content/operate/rs/references/rest-api/requests/bdbs/actions/optimize_shards_placement.md b/content/operate/rs/references/rest-api/requests/bdbs/actions/optimize_shards_placement.md index d485e1200..82e8b495d 100644 --- a/content/operate/rs/references/rest-api/requests/bdbs/actions/optimize_shards_placement.md +++ b/content/operate/rs/references/rest-api/requests/bdbs/actions/optimize_shards_placement.md @@ -11,6 +11,10 @@ linkTitle: optimize_shards_placement weight: $weight --- +{{}} +This REST API path is deprecated as of Redis Enterprise Software version 7.22. Use [`PUT /v1/bdbs//actions/revamp?dry_run=true`]({{}}) instead. +{{}} + | Method | Path | Description | |--------|------|-------------| | [GET](#get-bdbs-actions-optimize-shards-placement) | `/v1/bdbs/{uid}/actions/optimize_shards_placement` | Get optimized shards placement for a database | diff --git a/content/operate/rs/references/rest-api/requests/bdbs/actions/revamp.md b/content/operate/rs/references/rest-api/requests/bdbs/actions/revamp.md new file mode 100644 index 000000000..81d9ddaf0 --- /dev/null +++ b/content/operate/rs/references/rest-api/requests/bdbs/actions/revamp.md @@ -0,0 +1,147 @@ +--- +Title: Revamp database requests +alwaysopen: false +categories: +- docs +- operate +- rs +description: REST API requests to update database configuration and optimize shard placement +headerRange: '[1-2]' +linkTitle: revamp +weight: $weight +--- + +| Method | Path | Description | +|--------|------|-------------| +| [PUT](#put-bdbs-actions-revamp) | `/v1/bdbs/{uid}/actions/revamp` | Update database configuration and optimize shard placement | + +## Revamp database {#put-bdbs-actions-revamp} + +```sh +PUT /v1/bdbs/{int: uid}/actions/revamp +``` + +Updates the topology-related configurations of an active database and optimizes the shard placement for the new configuration. + +#### Required permissions + +| Permission name | Roles | +|-----------------|-------| +| [update_bdb_with_action]({{< relref "/operate/rs/references/rest-api/permissions#update_bdb_with_action" >}}) | admin
cluster_member
db_member | + +### Request {#put-request} + +You can include the following parameters in the request JSON body to update their values: + +| Field | Type/Value | Description | +|-------|------------|-------------| +| avoid_nodes | array of strings | Cluster node UIDs to avoid when placing the database's shards and binding its endpoints. | +| bigstore_ram_size | integer | Memory size of bigstore RAM part. | +| memory_size | integer (default: 0) | Database memory limit in bytes. 0 is unlimited. | +| replication | boolean | If `true`, enable in-memory database replication mode. | +| shards_count | integer, (range: 1-512) (default: 1) | Number of database server-side shards. | +| shards_placement | "dense"
"sparse" | Control the density of shards. Values:
**dense**: Shards reside on as few nodes as possible.
**sparse**: Shards reside on as many nodes as possible. | + +#### Example HTTP request + +```sh +PUT /v1/bdbs/1/actions/revamp +{ + "replication": true, + "shards_count": 12 +} +``` + +Dry-run example: + +```sh +PUT /v1/bdbs/1/actions/revamp?dry_run=true +{ + "replication": true, + "shards_count": 12 +} +``` + +#### URL parameters + +| Field | Type | Description | +|-------|------|-------------| +| uid | integer | The unique ID of the database to update. | + +#### Query parameters + +| Field | Type | Description | +|-------|------|-------------| +| dry_run | boolean | If true, returns a blueprint of the database update without actually changing the database. Default is false. | +| pause_persistence | boolean | If true, pause the persistence during the update. Default is false. | + +### Response {#put-response} + +- If `dry_run` is `false`, returns an `action_uid`. You can track the action's progress with a [`GET /v1/actions/`]({{}}) request. + +- If `dry_run` is `true`, returns a blueprint of the database update. + +#### Example response + +If `dry_run` is `false`: + +```sh +{ + "action_uid": "21ad01d5-55aa-4ec6-b5c0-44dc95176486" +} +``` + +If `dry_run` is `true`: + +```sh +[ + { + "nodes": [ + { + "node_uid": "3", + "role": "master" + }, + { + "node_uid": "1", + "role": "slave" + } + ], + "slot_range": "5461-10922" + }, + { + "nodes": [ + { + "node_uid": "3", + "role": "master" + }, + { + "node_uid": "1", + "role": "slave" + } + ], + "slot_range": "10923-16383" + }, + { + "nodes": [ + { + "node_uid": "3", + "role": "master" + }, + { + "node_uid": "1", + "role": "slave" + } + ], + "slot_range": "0-5460" + } +] +``` + +#### Status codes {#put-status-codes} + +| Code | Description | +|------|-------------| +| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | When `dry_run` is false: The request is accepted and is being processed. The database state will be `active-change-pending` until the request has been fully processed.
When `dry_run` is true: No error. | +| [404 Not Found](https://www.rfc-editor.org/rfc/rfc9110.html#name-404-not-found) | Attempting to perform an action on a nonexistent database. | +| [406 Not Acceptable](https://www.rfc-editor.org/rfc/rfc9110.html#name-406-not-acceptable) | The requested configuration is invalid. | +| [409 Conflict](https://www.rfc-editor.org/rfc/rfc9110.html#name-409-conflict) | Attempting to change a database while it is busy with another configuration change. In this context, this is a temporary condition and the request should be re-attempted later. | diff --git a/content/operate/rs/references/rest-api/requests/diagnostics/_index.md b/content/operate/rs/references/rest-api/requests/diagnostics/_index.md new file mode 100644 index 000000000..bf88439a9 --- /dev/null +++ b/content/operate/rs/references/rest-api/requests/diagnostics/_index.md @@ -0,0 +1,205 @@ +--- +Title: Diagnostics requests +alwaysopen: false +categories: +- docs +- operate +- rs +description: REST API requests for the diagnostic logging service. +headerRange: '[1-2]' +hideListLinks: true +linkTitle: diagnostics +weight: $weight +--- + +| Method | Path | Description | +|--------|------|-------------| +| [GET](#get-diagnostics) | `/v1/diagnostics` | Get diagnostic logging service configuration | +| [PUT](#put-diagnostics) | `/v1/diagnostics` | Update diagnostic logging service configuration | + +## Get diagnostic logging service configuration {#get-diagnostics} + +```sh +GET /v1/diagnostics +``` + +Gets the diagnostic logging service configuration as JSON. + +#### Required permissions + +| Permission name | Roles | +|-----------------|-------| +| [view_cluster_info]({{< relref "/operate/rs/references/rest-api/permissions#view_cluster_info" >}}) | admin
cluster_member
cluster_viewer
db_member
db_viewer
user_manager | + +### Request {#get-request} + +#### Example HTTP request + +```sh +GET /v1/diagnostics +``` + +#### Headers + +| Key | Value | Description | +|-----|-------|-------------| +| Host | cnm.cluster.fqdn | Domain name | +| Accept | application/json | Accepted media type | + +### Response {#get-response} + +Returns a JSON object that represents the diagnostic logging service configuration. Each target includes a `cron_expression` that defines the log collection time interval. `slowlog_target` also includes `max_entries`, which specifies the maximum number of entries recorded in the slow log. + +#### Example response body + +```json +{ + "bdb_client_list_target": { + "cron_expression": "*/10 * * * *" + }, + "bdb_info_target": { + "cron_expression": "*/10 * * * *" + }, + "bdb_target": { + "cron_expression": "*/10 * * * *" + }, + "command_stats_target": { + "cron_expression": "*/30 * * * *" + }, + "network_stats_target": { + "cron_expression": "*/30 * * * *" + }, + "persistent_files_target": { + "cron_expression": "*/10 * * * *" + }, + "rladmin_status_target": { + "cron_expression": "*/10 * * * *" + }, + "shard_info_target": { + "cron_expression": "*/10 * * * *" + }, + "shard_latency_histogram_target": { + "cron_expression": "*/10 * * * *" + }, + "shard_latency_target": { + "cron_expression": "*/10 * * * *" + }, + "shard_target": { + "cron_expression": "*/10 * * * *" + }, + "slowlog_target": { + "cron_expression": "*/10 * * * *", + "max_entries": 100 + }, + "socket_files_target": { + "cron_expression": "*/10 * * * *" + } +} +``` + +#### Status codes {#get-status-codes} + +| Code | Description | +|------|-------------| +| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | No error | + +## Update diagnostic logging service configuration {#put-diagnostics} + +```sh +PUT /v1/diagnostics +``` + +Updates the diagnostic logging service configuration. + +#### Required permissions + +| Permission name | Roles | +|-----------------|-------| +| [update_cluster]({{< relref "/operate/rs/references/rest-api/permissions#update_cluster" >}}) | admin | + +### Request {#put-request} + +Provide a JSON object in the request body to update a diagnostic logging service target's configuration. Each target can include a `cron_expression` that defines the log collection time interval for that target. For `slowlog_target`, you can also change `max_entries`, which specifies the maximum number of entries recorded in the slow log. + +#### Example HTTP request + +```sh +PUT /v1/diagnostics +``` + +#### Example JSON body + +```json +{ + "rladmin_status_target": { + "cron_expression": "5 * * * *" + } +} +``` + +#### Headers + +| Key | Value | Description | +|-----|-------|-------------| +| Host | cnm.cluster.fqdn | Domain name | +| Accept | application/json | Accepted media type | + +### Response {#put-response} + +Returns a JSON object that represents the updated diagnostic logging service configuration. Each target includes a `cron_expression` that defines the log collection time interval. `slowlog_target` also includes `max_entries`, which specifies the maximum number of entries recorded in the slow log. + + +#### Example response body + +```json +{ + "bdb_client_list_target": { + "cron_expression": "*/10 * * * *" + }, + "bdb_info_target": { + "cron_expression": "*/10 * * * *" + }, + "bdb_target": { + "cron_expression": "*/10 * * * *" + }, + "command_stats_target": { + "cron_expression": "*/30 * * * *" + }, + "network_stats_target": { + "cron_expression": "*/30 * * * *" + }, + "persistent_files_target": { + "cron_expression": "*/10 * * * *" + }, + "rladmin_status_target": { + "cron_expression": "5 * * * *" + }, + "shard_info_target": { + "cron_expression": "*/10 * * * *" + }, + "shard_latency_histogram_target": { + "cron_expression": "*/10 * * * *" + }, + "shard_latency_target": { + "cron_expression": "*/10 * * * *" + }, + "shard_target": { + "cron_expression": "*/10 * * * *" + }, + "slowlog_target": { + "cron_expression": "*/10 * * * *", + "max_entries": 100 + }, + "socket_files_target": { + "cron_expression": "*/10 * * * *" + } +} +``` + +#### Status codes {#put-status-codes} + +| Code | Description | +|------|-------------| +| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | No error. | +| [400 Bad Request](https://www.rfc-editor.org/rfc/rfc9110.html#name-400-bad-request) | Bad content provided. | +| [409 Conflict](https://www.rfc-editor.org/rfc/rfc9110.html#name-409-conflict) | Attempting to configure the diagnostic logging service target while it is busy with another configuration change. In this context, this is a temporary condition, and the request should be re-attempted later. | diff --git a/content/operate/rs/references/rest-api/requests/migrations/_index.md b/content/operate/rs/references/rest-api/requests/migrations/_index.md new file mode 100644 index 000000000..4d1b79128 --- /dev/null +++ b/content/operate/rs/references/rest-api/requests/migrations/_index.md @@ -0,0 +1,75 @@ +--- +Title: Migrations requests +alwaysopen: false +categories: +- docs +- operate +- rs +description: REST API request to get the migration status of a database in the cluster when using Replica Of. +headerRange: '[1-2]' +hideListLinks: true +linkTitle: migrations +weight: $weight +--- + +| Method | Path | Description | +|--------|------|-------------| +| [GET](#get-migrations) | `/v1/migrations/` | Get database migration status | + +## Get migration status {#get-migrations} + +```sh +GET /v1/migrations/ +``` + +Gets the migration status of a database in the cluster when using Replica Of. + +#### Required permissions + +| Permission name | Roles | +|-----------------|-------| +| [view_bdb_info]({{< relref "/operate/rs/references/rest-api/permissions#view_bdb_info" >}}) | admin
cluster_member
cluster_viewer
db_member
db_viewer
user_manager | + +### Request {#get-request} + +#### Example HTTP request + +```sh +GET /v1/migrations/1 +``` + +#### Headers + +| Key | Value | Description | +|-----|-------|-------------| +| Host | cnm.cluster.fqdn | Domain name | +| Accept | application/json | Accepted media type | + +#### URL parameters + +| Field | Type | Description | +|-------|------|-------------| +| uid | integer | The database's unique ID | + +### Response {#get-response} + +Returns a JSON array with all data required by the migration orchestrator. + +#### Example response body + +```json +"migration": { + "status": "foo", + "lag": 123, + "run_id": "5", + "flush_counter": 2, + "source_shards": [{"replication_id": "1", "replication_offset": 2}] +} +``` + +#### Status codes {#get-status-codes} + +| Code | Description | +|------|-------------| +| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | No error | +| [404 Not Found](https://www.rfc-editor.org/rfc/rfc9110.html#name-404-not-found) | Database does not exist | diff --git a/content/operate/rs/references/rest-api/requests/nodes/_index.md b/content/operate/rs/references/rest-api/requests/nodes/_index.md index d758f6637..9f26c8074 100644 --- a/content/operate/rs/references/rest-api/requests/nodes/_index.md +++ b/content/operate/rs/references/rest-api/requests/nodes/_index.md @@ -168,13 +168,18 @@ Update a [node object]({{< relref "/operate/rs/references/rest-api/objects/node" Currently, you can edit the following attributes: -- `addr` - -- `external_addr` - -- `recovery_path` - -- `accept_servers` +| Field | Type/Value | Description | +|-------|------------|-------------| +| accept_servers | boolean (default: true) | The node only accepts new shards if `accept_servers` is `true` | +| addr | string | Internal IP address of node | +| external_addr | complex object | External IP addresses of node. `GET /v1/jsonschema` to retrieve the object's structure. | +| max_listeners | integer | Maximum number of listeners on the node | +| max_redis_forks | integer (default: -1) | Maximum number of background processes forked from shards that can exist on the node at any given time. Set to 0 for unlimited. Set to -1 to use cluster settings. | +| max_redis_servers | integer | Maximum number of shards on the node | +| max_slave_full_syncs | integer (default: -1) | Maximum number of simultaneous replica full syncs that can run at any given time. Set to 0 for unlimited. Set to -1 to use cluster settings. | +| rack_id | string | Rack ID where node is installed | +| recovery_path | string | Recovery files path | +| second_rack_id | string | Second rack ID where node is installed | {{}} You can only update the `addr` attribute for offline nodes. Otherwise, the request returns an error. diff --git a/content/operate/rs/references/rest-api/requests/usage_report/_index.md b/content/operate/rs/references/rest-api/requests/usage_report/_index.md new file mode 100644 index 000000000..1a6de2e98 --- /dev/null +++ b/content/operate/rs/references/rest-api/requests/usage_report/_index.md @@ -0,0 +1,123 @@ +--- +Title: Usage report requests +alwaysopen: false +categories: +- docs +- operate +- rs +description: REST API request to get the database usage report from the cluster. +headerRange: '[1-2]' +hideListLinks: true +linkTitle: usage_report +weight: $weight +--- + +| Method | Path | Description | +|--------|------|-------------| +| [GET](#get-usage-report) | `/v1/usage_report` | Get the cluster's database usage report | + +## Get usage report {#get-usage-report} + +```sh +GET /v1/usage_report +``` + +Gets the database usage report from the cluster as a gzip file that contains Newline Delimited JSON (NDJSON). The final line in the file is the response's MD5 hash. + +### Request {#get-request} + +#### Example HTTP request + +```sh +GET /v1/usage_report +``` + +#### Headers + +| Key | Value | Description | +|-----|-------|-------------| +| Host | cnm.cluster.fqdn | Domain name | +| Accept | application/json | Accepted media type | + +### Response {#get-response} + +Returns a gzip file that contains Newline Delimited JSON (NDJSON), which represents the usage report for every database in the cluster. The final line in the file is the response's MD5 hash. + +| Field | Type/Value | Description | +|-------|------------|-------------| +| active_active | boolean | Indicates if Active-Active is enabled | +| api_version | string | API version | +| backup | boolean | Indicates if backup is enabled | +| bdb_uid | string | The database's unique ID | +| cluster_name | string | Cluster name | +| cluster_uuid | string | Cluster's unique ID | +| date | string | Date of the report, including time and time zone | +| dominant_shard_criteria | "mem"
"ops"
"rof" | Dominant criteria for shard selection | +| type | "core"
"premium"
"auto_tiering" | Database type | +| shard_type | "micro"
"normal"
"large"
"auto_tiering" | Shard type | +| no_eviction | boolean | Indicates if no eviction policy is applied | +| ops/sec | number | Consolidated ops/sec for the whole database | +| persistence | boolean | Indicates if persistence is enabled | +| provisioned_memory | number | Provisioned memory in bytes | +| replication | boolean | Indicates if replication is enabled | +| software_version | string | The Redis Enterprise Software version | +| used_memory | number | Used memory in bytes | +| using_redis_search | boolean | Indicates if RediSearch is in use | +| master_shards_count | number | Amount of primary shards | + +#### Example response + +```json +{ + "cluster_name": "mycluster.local", + "cluster_uuid": "7e9f93c6-825e-4bbb-a067-7f6306b98609", + "date": "2024-08-08T13:16:00.000000Z", + "software_version": "7.0.0", + "api_version" "1", + "bdb_uid": "1", + "type": "auto_tiering", + "shard_type": "auto_tiering", + "dominant_shard_criteria": "rof", + "provisioned_memory": 1073741824, + "used_memory": 5828776, + "master_shards_count": 3, + "no_eviction": false, + "persistence": false, + "backup": false, + "using_redis_search": false, + "ops_sec": 0, + "replication": false, + "active_active": false +} +{ + "cluster_name": "mycluster.local", + "cluster_uuid": "7e9f93c6-825e-4bbb-a067-7f6306b98609", + "date": "2024-08-08T13:17:00.000000Z", + "software_version": "7.0.0", + "api_version" "1", + "bdb_uid": "1", + "type": "auto_tiering", + "shard_type": "auto_tiering", + "dominant_shard_criteria": "rof", + "provisioned_memory": 1073741824, + "used_memory": 5828776, + "master_shards_count": 3, + "no_eviction": false, + "persistence": false, + "backup": false, + "using_redis_search": false, + "ops_sec": 0, + "replication": false, + "active_active": false +} +... + +``` + +#### Status codes {#get-status-codes} + +| Code | Description | +|------|-------------| +| [200 OK](https://www.rfc-editor.org/rfc/rfc9110.html#name-200-ok) | No error | +| [400 Bad Request](https://www.rfc-editor.org/rfc/rfc9110.html#name-400-bad-request) | Invalid date format | +| [503 Service Unavailable](https://www.rfc-editor.org/rfc/rfc9110.html#name-503-service-unavailable) | Unreachable node | diff --git a/content/operate/rs/release-notes/rs-7-22-releases/_index.md b/content/operate/rs/release-notes/rs-7-22-releases/_index.md new file mode 100644 index 000000000..9857a8f8e --- /dev/null +++ b/content/operate/rs/release-notes/rs-7-22-releases/_index.md @@ -0,0 +1,144 @@ +--- +Title: Redis Enterprise Software release notes 7.22.x +alwaysopen: false +categories: +- docs +- operate +- rs +compatibleOSSVersion: Redis 7.4.0 +description: Diagnostic logging service. Call home client to send daily usage statistics to Redis. Usage reports in support packages. Revamp database API. Migration status API. Two-dimensional rack awareness. New version for actions API. Additional REST API enhancements. +hideListLinks: true +linkTitle: 7.22.x releases +toc: 'true' +weight: 68 +--- + +​[​Redis Enterprise Software version 7.22](https://redis.io/downloads/#software) is now available! + +## Highlights + +This version offers: + +- Diagnostic logging service + +- Call home client to send daily usage statistics to Redis + +- Usage reports in support packages + +- Revamp database API + +- Migration status API + +- Two-dimensional rack awareness + +- New version for actions API + +- Additional REST API enhancements + +## Detailed release notes + +For more detailed release notes, select a build version from the following table: + +{{}} + +## Version changes + +- The fully qualified domain name is now validated using the FQDN library instead of a regex during cluster creation. + +### Deprecations + +#### API deprecations + +- Deprecated [`GET /v1/bdbs//actions/optimize_shards_placement`]({{}}) REST API request. Use [`PUT /v1/bdbs//actions/revamp?dry_run=true`]({{}}) to get an optimized shard placement blueprint for a database instead. + +- Deprecated the `data_files` option for the `recovery_plan` specified in [`POST /v2/bdbs`]({{}}) requests. Use the new `original_bdb_shards` option to recover a database from the provided list of shards instead. + +#### Internal monitoring and v1 Prometheus metrics deprecation + +The existing [internal monitoring engine]({{}}) is deprecated. We recommend transitioning to the new [metrics stream engine]({{}}) for improved performance, enhanced integration capabilities, and modernized metrics streaming. + +V1 Prometheus metrics are deprecated but still available. To transition to the new metrics stream engine, either migrate your existing dashboards using [this guide]({{}}) now, or wait to use new preconfigured dashboards when they become available in a future release. + +### Supported platforms + +The following table provides a snapshot of supported platforms as of this Redis Enterprise Software release. See the [supported platforms reference]({{< relref "/operate/rs/references/supported-platforms" >}}) for more details about operating system compatibility. + + Supported – The platform is supported for this version of Redis Enterprise Software and Redis Stack modules. + +:warning: Deprecation warning – The platform is still supported for this version of Redis Enterprise Software, but support will be removed in a future release. + +| Redis Software
major versions | 7.22 | 7.8 | 7.4 | 7.2 | 6.4 | 6.2 | +|---------------------------------|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:| +| **Release date** | May 2025 | Nov 2024 | Feb 2024 | Aug 2023 | Feb 2023 | Aug 2021 | +| [**End-of-life date**]({{< relref "/operate/rs/installing-upgrading/product-lifecycle#endoflife-schedule" >}}) | Determined after
next major release | May 2027 | Nov 2026 | Feb 2026 | Aug 2025 | Feb 2025 | +| **Platforms** | | | | | | | +| RHEL 9 &
compatible distros[1](#table-note-1) | | | | – | – | – | +| RHEL 9
FIPS mode[5](#table-note-5) | | | – | – | – | – | +| RHEL 8 &
compatible distros[1](#table-note-1) | | | | | | | +| RHEL 7 &
compatible distros[1](#table-note-1) | – | – | – | :warning: | | | +| Ubuntu 22.04[2](#table-note-2) | | | – | – | – | – | +| Ubuntu 20.04[2](#table-note-2) | | | | | | – | +| Ubuntu 18.04[2](#table-note-2) | – | – | :warning: | :warning: | | | +| Ubuntu 16.04[2](#table-note-2) | – | – | – | :warning: | | | +| Amazon Linux 2 | | | | | | – | +| Amazon Linux 1 | – | – | – | | | | +| Kubernetes[3](#table-note-3) | | | | | | | +| Docker[4](#table-note-4) | | | | | | | + +1. The RHEL-compatible distributions CentOS, CentOS Stream, Alma, and Rocky are supported if they have full RHEL compatibility. Oracle Linux running the Red Hat Compatible Kernel (RHCK) is supported, but the Unbreakable Enterprise Kernel (UEK) is not supported. + +2. The server version of Ubuntu is recommended for production installations. The desktop version is only recommended for development deployments. + +3. See the [Redis Enterprise for Kubernetes documentation]({{< relref "/operate/kubernetes/reference/supported_k8s_distributions" >}}) for details about support per version and Kubernetes distribution. + +4. [Docker images]({{< relref "/operate/rs/installing-upgrading/quickstarts/docker-quickstart" >}}) of Redis Enterprise Software are certified for development and testing only. + +5. Supported only if [FIPS was enabled during RHEL installation](https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/security_hardening/switching-rhel-to-fips-mode_security-hardening#proc_installing-the-system-with-fips-mode-enabled_switching-rhel-to-fips-mode) to ensure FIPS compliance. + +## Known issues + +- RS131972: Creating an ACL that contains a line break in the Cluster Manager UI can cause shard migration to fail due to ACL errors. + +- RS155734: Endpoint availability metrics do not work as expected due to a calculation error. As a workaround, use this query to measure availability: + + ```sh + endpoint_server_became_unavailable{cluster="$cluster", db="$db"} + - + endpoint_server_available_again{cluster="$cluster", db="$db"} + ``` + + For up: 0-2 + + For down: 2-1000000 + +- RS156391: The `job_scheduler`'s memory usage can increase significantly when the diagnostic logging service is enabled. + +## Known limitations + +#### Upload modules before OS upgrade + +If the cluster contains any databases that use modules, you must upload module packages for the target OS version to a node in the existing cluster before you upgrade the cluster's operating system. + +See [Upgrade a cluster's operating system]({{}}) for detailed upgrade instructions. + +#### New Cluster Manager UI limitations + +The following legacy UI features are not yet available in the new Cluster Manager UI: + +- Purge an Active-Active instance. + + Use [`crdb-cli crdb purge-instance`]({{< relref "/operate/rs/references/cli-utilities/crdb-cli/crdb/purge-instance" >}}) instead. + +- Search and export the log. + +#### RedisGraph prevents upgrade to RHEL 9 + +You cannot upgrade from a prior RHEL version to RHEL 9 if the Redis Enterprise Software cluster contains a RedisGraph module, even if unused by any database. The [RedisGraph module has reached end-of-life](https://redis.com/blog/redisgraph-eol/) and is completely unavailable in RHEL 9. + +#### Query results might include hash keys with lazily expired fields + +If one or more fields of a hash key expire after an `FT.SEARCH` or `FT.AGGREGATE` query begins, Redis does not account for these lazily expired fields. As a result, keys with expired fields might still be included in the query results, leading to potentially incorrect or inconsistent results. + +#### Active defragmentation does not stop mid-key for JSON + +Active defragmentation does not stop mid-key for JSON data. Large keys are defragmented in full, which might cause latency spikes. diff --git a/content/operate/rs/release-notes/rs-7-22-releases/rs-7-22-0-28.md b/content/operate/rs/release-notes/rs-7-22-releases/rs-7-22-0-28.md new file mode 100644 index 000000000..e46d45796 --- /dev/null +++ b/content/operate/rs/release-notes/rs-7-22-releases/rs-7-22-0-28.md @@ -0,0 +1,423 @@ +--- +Title: Redis Enterprise Software release notes 7.22.0-52 (May 2025) +alwaysopen: false +categories: +- docs +- operate +- rs +compatibleOSSVersion: Redis 7.4.0 +description: Diagnostic logging service. Call home client to send daily usage statistics to Redis. Usage reports in support packages. Revamp database API. Migration status API. Two-dimensional rack awareness. New version for actions API. Additional REST API enhancements. +linkTitle: 7.22.0-52 (May 2025) +weight: 90 +--- + +​[​Redis Enterprise Software version 7.22.0](https://redis.io/downloads/#software) is now available! + +## Highlights + +This version offers: + +- Diagnostic logging service + +- Call home client to send daily usage statistics to Redis + +- Usage reports in support packages + +- Revamp database API + +- Migration status API + +- Two-dimensional rack awareness + +- New version for actions API + +- Additional REST API enhancements + +## New in this release + +### New features + +- [Diagnostic logging service]({{}}): + + - New diagnostic logs for improved troubleshooting. + + - Diagnostic logs are enabled by default. + + - Logs are configurable using [REST API requests]({{}}). + + - Logs have a predefined rotation and retention policy, which can be updated as needed. + + - JSON response format for easy integration with external logging tools. + +- The [call home client]({{}}) sends daily usage statistics to Redis for operational insights. Reports include memory usage, shard information, enabled features, and other operational metrics. + +- [Support packages]({{}}) now include [usage reports]({{}}). + +- [Revamp database REST API requests]({{}}): + + - Updates topology-related configurations of an active database and optimises the shards placement for the new configuration. Example configuration parameters include `memory_size`, `shards_count`, `avoid_nodes`, `shards_placement`, `bigstore_ram_size`, and `replication`. + + - `PUT /v1/bdbs//actions/revamp?dry_run=true` replaces the deprecated request to [optimize shards placement]({{}}). + +- [Migration status REST API request]({{}}), which reports the migration status of a database in the cluster when using Replica Of. + +- Added `secondary_rack_id` to bootstrap and node configuration to support [two-dimensional rack awareness]({{}}). + +- A new version of the [actions API]({{}}), which adds progress tracking to all background actions, is available at `GET /v2/actions`. + +### Enhancements + +- REST API enhancements: + + - Adjusted the API to [get the database recovery plan]({{}}) to only return the best persistence file per slot range for databases with `master_persistence` enabled. + + - A database's `maxclients` can now be configured with an [update database configuration]({{}}) request. + + - Added `bigstore_version` to database configuration and `default_bigstore_version` to cluster settings. + + - Added `default_oss_cluster` to cluster settings. + + - Added `sentinel_service` as an optional service that can be enabled or turned off with an [update cluster services configuration]({{}}) request. + + - Added `replica_read_only` to database configuration. If set to `true`, it enables an Active-Passive setup where Replica Of databases only allow read operations. `replica_read_only` is only configurable during [database creation]({{}}) and cannot be changed later. + + - Added `robust_crdt_syncer` to enable or turn off the robust syncer for Active-Active databases. + + - Added `incoming_connections_rate_limit`, `incoming_connections_capacity`, and `incoming_connections_min_capacity` to proxy configuration. + + - Added `client_eviction` to proxy configuration. If set to `true`, it enables client eviction based on `maxmemory_clients`. + + - The cluster's `logrotate_settings` can now be configured with an [update cluster configuration]({{}}) request. + + - Added `multi_commands_opt` to cluster configuration and database configuration. If set to `batch`, it reduces the overhead of transaction management by batching multiple commands into a single transaction. + + - Added the following active defragmentation parameters to database configuration: `activedefrag`, `active_defrag_cycle_max`, `active_defrag_cycle_min`, `active_defrag_ignore_bytes`, `active_defrag_max_scan_fields`, `active_defrag_threshold_lower`, and `active_defrag_threshold_upper`. + + - Added an `original_bdb_shards` option for the `recovery_plan` specified in [`POST /v2/bdbs`]({{}}) requests to recover a database from the provided list of shards. + +- Added module information to database creation log messages. + +- Performance improvements for full-sync replication flows. + +- Additional performance improvements: + + - Introduced proxy optimizations for single-sharded databases when a user sends a pipeline of commands. + + - Enabled deeper default optimization levels on the proxy, namely O3 and link time optimization (LTO). + + - Introduced `redis-last` shard optimizations that improved overall baseline performance for `@fast` commands. + +- Reserved the following ports: + + | Port | Process name | Usage | + |------|--------------|-------| + | 3346 | cluster_api_internal | Cluster API internal port | + | 3351 | cluster_watchdog_grpc_api | Cluster watchdog now supports gRPC | + | 3352 | grpc_service_mesh | gRPC communication between nodes | + | 3353 | local_grpc_service_mesh | Local gRPC services | + | 3354 | grpc_gossip_envoy | gRPC gossip protocol communication between nodes | + | 3355 | authentication_service | Authentication service internal port | + +### Redis database versions + +Redis Enterprise Software version 7.22.0 includes three Redis database versions: 7.4, 7.2, and 6.2. + +The [default Redis database version]({{}}) is 7.4. + +### Redis module feature sets + +Redis Enterprise Software comes packaged with several modules. As of version 7.22.0, Redis Enterprise Software includes three feature sets, compatible with different Redis database versions. + +The following table shows which Redis modules are compatible with each Redis database version included in this release. + +| Redis database version | Compatible Redis modules | +|------------------------|--------------------------| +| 7.4 | [RediSearch 2.10]({{< relref "/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.10-release-notes.md" >}})
[RedisJSON 2.8]({{< relref "/operate/oss_and_stack/stack-with-enterprise/release-notes/redisjson/redisjson-2.8-release-notes.md" >}})
[RedisTimeSeries 1.12]({{< relref "/operate/oss_and_stack/stack-with-enterprise/release-notes/redistimeseries/redistimeseries-1.12-release-notes.md" >}})
[RedisBloom 2.8]({{< relref "/operate/oss_and_stack/stack-with-enterprise/release-notes/redisbloom/redisbloom-2.8-release-notes.md" >}}) | +| 7.2 | [RediSearch 2.8]({{< relref "/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.8-release-notes.md" >}})
[RedisJSON 2.6]({{< relref "/operate/oss_and_stack/stack-with-enterprise/release-notes/redisjson/redisjson-2.6-release-notes.md" >}})
[RedisTimeSeries 1.10]({{< relref "/operate/oss_and_stack/stack-with-enterprise/release-notes/redistimeseries/redistimeseries-1.10-release-notes.md" >}})
[RedisBloom 2.6]({{< relref "/operate/oss_and_stack/stack-with-enterprise/release-notes/redisbloom/redisbloom-2.6-release-notes.md" >}}) | +| 6.2 | [RediSearch 2.6]({{< relref "/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.6-release-notes.md" >}})
[RedisJSON 2.4]({{< relref "/operate/oss_and_stack/stack-with-enterprise/release-notes/redisjson/redisjson-2.4-release-notes.md" >}})
[RedisTimeSeries 1.8]({{< relref "/operate/oss_and_stack/stack-with-enterprise/release-notes/redistimeseries/redistimeseries-1.8-release-notes.md" >}})
[RedisBloom 2.4]({{< relref "/operate/oss_and_stack/stack-with-enterprise/release-notes/redisbloom/redisbloom-2.4-release-notes.md" >}}) | + +### Resolved issues + +- RS134225: Fixed an issue where the server restart could fail during cluster upgrade due to a timeout. + +- RS133342: Fixed an issue where too many API requests in the queue could cause new API requests to fail. + +- RS125543: Changed slow log duration to milliseconds in the new Cluster Manager UI. + +- RS142296: Fixed a REST API issue where updating an existing database with an empty module list removed modules from the database. Such requests now return an error instead. + +- RS94080: Fixed `PUT /v1/bdbs//` requests to allow `flush` and `reset_admin_pass` actions without requiring a request body. + +- RS140649: Fixed an issue where database backups were not deleted at the expected time based on the configured retention period. + +- RS136409: Improved checks to determine if the cluster is in an unstable state. + +- RS122370: Changed Envoy concurrency to 4 by default to prevent an issue where Envoy on the primary node in a cluster with many nodes sometimes failed to receive API requests. + +- RS107325: Fixed an issue where database recovery could get stuck due to shard UID conflicts. + +- RS139699: Fixed an issue where the Cluster Manager UI reported "invalid username or password" if the connection timed out during a sign-in attempt. + +- RS138625: Fixed an issue where `rlcheck` reported `verify_tcp_connectivity` as failed for optional services that were not enabled instead of skipping the check. + +- RS134742: Fixed an issue where the `virbr0` interface was automatically added to the external addresses when nodes joined the cluster, which could cause network conflicts and connectivity issues due to duplicated IP addresses. + +- RS138490: Reduced log entries for unbootstrapped nodes, which do not have log rotation scheduled yet, to prevent filling the disk with logs. + +- RS123576: Fixed an issue that prevented reconfiguring an existing ACL file with `rlutil`. + +- RS133679: Added a validation check to the optimize shards API to return quicker if the database cannot fit on the cluster. + +- RS134968: Improved the functionality around killing shards. + +- RS146096: Fixed an issue where the syncer could fail due to the RDB file parser incorrectly parsing least frequently used values larger than 127. + +- RS125845: Fixed an issue where outdated AOF persistence files were not rotated upon upgrading the Redis database version from 6 to 7. + +- RS147882: Fixed a `Failed to write PID file: Permission denied` error in `ccs-redis.log` by removing an unneeded CCS PID file. + +- RS146941: Fixed an issue where `crdb-cli crdb get` failed with a `KeyError` when `replication_endpoint` or `replication_tls_sni` were not set for the Active-Active database. + +- RS122668: Fixed an issue where new DMC workers created after a certificate update could still have the old certificate. + +- RS141853: Optimized connection pool handling to reduce memory and CPU usage by `node_wd`. + +- RS150853: Fixed an issue during RDB loading where replica shards sometimes terminated with the module error `no matching module type 'AAAAAAAAA'`. + +- RS149480: Fixed an issue where port 9091 was missing from the reserved ports list returned by `rladmin` and `ccs-cli`. + +- RS148075: Changed the default value of `gradual_sync_mode` to `enabled` for Replica Of databases to sync data from one shard at a time and reduce load on the destination. + +- RS135446: Added cleanup of temporary files after `debug_info` generation failures. + +- RS151534: Fixed a permissions issue for `crdb-cli.log` that caused `crdb-cli crdb list` to fail for users in the `redislabs` group. + +- RS150746: Added a retry mechanism in case the DMC fails to create a listener on a database port. + +- RS145047: Fixed an issue where repeated error messages were excessively logged when the auditing server was no longer reachable. + +- RS155261: Fixed an issue where the CRDB syncer could fail after an upgrade due to `SASL negotation failed` errors. + +- RS153478: Fixed an issue that could cause inconsistent memory settings across shards and out-of-memory errors. + +## Version changes + +- The fully qualified domain name is now validated using the FQDN library instead of a regex during cluster creation. + +### Deprecations + +#### API deprecations + +- Deprecated [`GET /v1/bdbs//actions/optimize_shards_placement`]({{}}) REST API request. Use [`PUT /v1/bdbs//actions/revamp?dry_run=true`]({{}}) to get an optimized shard placement blueprint for a database instead. + +- Deprecated the `data_files` option for the `recovery_plan` specified in [`POST /v2/bdbs`]({{}}) requests. Use the new `original_bdb_shards` option to recover a database from the provided list of shards instead. + +#### Internal monitoring and v1 Prometheus metrics deprecation + +The existing [internal monitoring engine]({{}}) is deprecated. We recommend transitioning to the new [metrics stream engine]({{}}) for improved performance, enhanced integration capabilities, and modernized metrics streaming. + +V1 Prometheus metrics are deprecated but still available. To transition to the new metrics stream engine, either migrate your existing dashboards using [this guide]({{}}) now, or wait to use new preconfigured dashboards when they become available in a future release. + +### Supported platforms + +The following table provides a snapshot of supported platforms as of this Redis Enterprise Software release. See the [supported platforms reference]({{< relref "/operate/rs/references/supported-platforms" >}}) for more details about operating system compatibility. + + Supported – The platform is supported for this version of Redis Enterprise Software and Redis Stack modules. + +:warning: Deprecation warning – The platform is still supported for this version of Redis Enterprise Software, but support will be removed in a future release. + +| Redis Software
major versions | 7.22 | 7.8 | 7.4 | 7.2 | 6.4 | 6.2 | +|---------------------------------|:-----:|:-----:|:-----:|:-----:|:-----:|:-----:| +| **Release date** | May 2025 | Nov 2024 | Feb 2024 | Aug 2023 | Feb 2023 | Aug 2021 | +| [**End-of-life date**]({{< relref "/operate/rs/installing-upgrading/product-lifecycle#endoflife-schedule" >}}) | Determined after
next major release | May 2027 | Nov 2026 | Feb 2026 | Aug 2025 | Feb 2025 | +| **Platforms** | | | | | | | +| RHEL 9 &
compatible distros[1](#table-note-1) | | | | – | – | – | +| RHEL 9
FIPS mode[5](#table-note-5) | | | – | – | – | – | +| RHEL 8 &
compatible distros[1](#table-note-1) | | | | | | | +| RHEL 7 &
compatible distros[1](#table-note-1) | – | – | – | :warning: | | | +| Ubuntu 22.04[2](#table-note-2) | | | – | – | – | – | +| Ubuntu 20.04[2](#table-note-2) | | | | | | – | +| Ubuntu 18.04[2](#table-note-2) | – | – | :warning: | :warning: | | | +| Ubuntu 16.04[2](#table-note-2) | – | – | – | :warning: | | | +| Amazon Linux 2 | | | | | | – | +| Amazon Linux 1 | – | – | – | | | | +| Kubernetes[3](#table-note-3) | | | | | | | +| Docker[4](#table-note-4) | | | | | | | + +1. The RHEL-compatible distributions CentOS, CentOS Stream, Alma, and Rocky are supported if they have full RHEL compatibility. Oracle Linux running the Red Hat Compatible Kernel (RHCK) is supported, but the Unbreakable Enterprise Kernel (UEK) is not supported. + +2. The server version of Ubuntu is recommended for production installations. The desktop version is only recommended for development deployments. + +3. See the [Redis Enterprise for Kubernetes documentation]({{< relref "/operate/kubernetes/reference/supported_k8s_distributions" >}}) for details about support per version and Kubernetes distribution. + +4. [Docker images]({{< relref "/operate/rs/installing-upgrading/quickstarts/docker-quickstart" >}}) of Redis Enterprise Software are certified for development and testing only. + +5. Supported only if [FIPS was enabled during RHEL installation](https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/security_hardening/switching-rhel-to-fips-mode_security-hardening#proc_installing-the-system-with-fips-mode-enabled_switching-rhel-to-fips-mode) to ensure FIPS compliance. + +## Downloads + +The following table shows the SHA256 checksums for the available packages: + +| Package | SHA256 checksum (7.22.0-52 May release) | +|---------|---------------------------------------| +| Ubuntu 20 | | +| Ubuntu 22 | | +| Red Hat Enterprise Linux (RHEL) 8 | | +| Red Hat Enterprise Linux (RHEL) 9 | | +| Amazon Linux 2 | | + +## Known issues + +- RS131972: Creating an ACL that contains a line break in the Cluster Manager UI can cause shard migration to fail due to ACL errors. + +- RS155734: Endpoint availability metrics do not work as expected due to a calculation error. As a workaround, use this query to measure availability: + + ```sh + endpoint_server_became_unavailable{cluster="$cluster", db="$db"} + - + endpoint_server_available_again{cluster="$cluster", db="$db"} + ``` + + For up: 0-2 + + For down: 2-1000000 + +- RS156391: The `job_scheduler`'s memory usage can increase significantly when the diagnostic logging service is enabled. + +## Known limitations + +#### Upload modules before OS upgrade + +If the cluster contains any databases that use modules, you must upload module packages for the target OS version to a node in the existing cluster before you upgrade the cluster's operating system. + +See [Upgrade a cluster's operating system]({{}}) for detailed upgrade instructions. + +#### New Cluster Manager UI limitations + +The following legacy UI features are not yet available in the new Cluster Manager UI: + +- Purge an Active-Active instance. + + Use [`crdb-cli crdb purge-instance`]({{< relref "/operate/rs/references/cli-utilities/crdb-cli/crdb/purge-instance" >}}) instead. + +- Search and export the log. + +#### RedisGraph prevents upgrade to RHEL 9 + +You cannot upgrade from a prior RHEL version to RHEL 9 if the Redis Enterprise Software cluster contains a RedisGraph module, even if unused by any database. The [RedisGraph module has reached End-of-Life](https://redis.com/blog/redisgraph-eol/) and is completely unavailable in RHEL 9. + +#### Query results might include hash keys with lazily expired fields + +If one or more fields of a hash key expire after an `FT.SEARCH` or `FT.AGGREGATE` query begins, Redis does not account for these lazily expired fields. As a result, keys with expired fields might still be included in the query results, leading to potentially incorrect or inconsistent results. + +#### Active defragmentation does not stop mid-key for JSON + +Active defragmentation does not stop mid-key for JSON data. Large keys are defragmented in full, which might cause latency spikes. + +## Security + +#### Open source Redis security fixes compatibility + +As part of Redis's commitment to security, Redis Enterprise Software implements the latest [security fixes](https://github.com/redis/redis/releases) available with [open source Redis](https://github.com/redis/redis). Redis Enterprise Software has already included the fixes for the relevant CVEs. + +Some CVEs announced for open source Redis do not affect Redis Enterprise Software due to different or additional functionality available in Redis Enterprise Software that is not available in open source Redis. + +Redis Enterprise Software 7.22.0-52 supports open source Redis 7.4, 7.2, and 6.2. Below is the list of open source Redis CVEs fixed by version. + +Redis 7.4.x: + +- (CVE-2025-21605) An unauthenticated client can cause unlimited growth of output buffers until the server runs out of memory or is terminated, which can lead to denial-of-service. + +Redis 7.2.x: + +- (CVE-2025-21605) An unauthenticated client can cause unlimited growth of output buffers until the server runs out of memory or is terminated, which can lead to denial-of-service. + +- (CVE-2024-31449) An authenticated user may use a specially crafted Lua script to trigger a stack buffer overflow in the bit library, which may potentially lead to remote code execution. + +- (CVE-2024-31228) An authenticated user can trigger a denial-of-service by using specially crafted, long string match patterns on supported commands such as `KEYS`, `SCAN`, `PSUBSCRIBE`, `FUNCTION LIST`, `COMMAND LIST`, and ACL definitions. Matching of extremely long patterns may result in unbounded recursion, leading to stack overflow and process crashes. + +- (CVE-2023-41056) In some cases, Redis may incorrectly handle resizing of memory buffers, which can result in incorrect accounting of buffer sizes and lead to heap overflow and potential remote code execution. + +- (CVE-2023-41053) Redis does not correctly identify keys accessed by `SORT_RO` and, as a result, may grant users executing this command access to keys that are not explicitly authorized by the ACL configuration. (Redis 7.2.1) + +Redis 7.0.x: + +- (CVE-2024-31449) An authenticated user may use a specially crafted Lua script to trigger a stack buffer overflow in the bit library, which may potentially lead to remote code execution. + +- (CVE-2024-31228) An authenticated user can trigger a denial-of-service by using specially crafted, long string match patterns on supported commands such as `KEYS`, `SCAN`, `PSUBSCRIBE`, `FUNCTION LIST`, `COMMAND LIST`, and ACL definitions. Matching of extremely long patterns may result in unbounded recursion, leading to stack overflow and process crashes. + +- (CVE-2023-41056) In some cases, Redis may incorrectly handle resizing of memory buffers, which can result in incorrect accounting of buffer sizes and lead to heap overflow and potential remote code execution. + +- (CVE-2023-41053) Redis does not correctly identify keys accessed by `SORT_RO` and, as a result, may grant users executing this command access to keys that are not explicitly authorized by the ACL configuration. (Redis 7.0.13) + +- (CVE-2023-36824) Extracting key names from a command and a list of arguments may, in some cases, trigger a heap overflow and result in reading random heap memory, heap corruption, and potentially remote code execution. Specifically: using `COMMAND GETKEYS*` and validation of key names in ACL rules. (Redis 7.0.12) + +- (CVE-2023-28856) Authenticated users can use the `HINCRBYFLOAT` command to create an invalid hash field that will crash Redis on access. (Redis 7.0.11) + +- (CVE-2023-28425) Specially crafted `MSETNX` commands can lead to assertion and denial-of-service. (Redis 7.0.10) + +- (CVE-2023-25155) Specially crafted `SRANDMEMBER`, `ZRANDMEMBER`, and `HRANDFIELD` commands can trigger an integer overflow, resulting in a runtime assertion and termination of the Redis server process. (Redis 7.0.9) + +- (CVE-2023-22458) Integer overflow in the Redis `HRANDFIELD` and `ZRANDMEMBER` commands can lead to denial-of-service. (Redis 7.0.8) + +- (CVE-2022-36021) String matching commands (like `SCAN` or `KEYS`) with a specially crafted pattern to trigger a denial-of-service attack on Redis can cause it to hang and consume 100% CPU time. (Redis 7.0.9) + +- (CVE-2022-35977) Integer overflow in the Redis `SETRANGE` and `SORT`/`SORT_RO` commands can drive Redis to OOM panic. (Redis 7.0.8) + +- (CVE-2022-35951) Executing an `XAUTOCLAIM` command on a stream key in a specific state, with a specially crafted `COUNT` argument, may cause an integer overflow, a subsequent heap overflow, and potentially lead to remote code execution. The problem affects Redis versions 7.0.0 or newer. (Redis 7.0.5) + +- (CVE-2022-31144) A specially crafted `XAUTOCLAIM` command on a stream key in a specific state may result in heap overflow and potentially remote code execution. The problem affects Redis versions 7.0.0 or newer. (Redis 7.0.4) + +- (CVE-2022-24834) A specially crafted Lua script executing in Redis can trigger a heap overflow in the cjson and cmsgpack libraries, and result in heap corruption and potentially remote code execution. The problem exists in all versions of Redis with Lua scripting support, starting from 2.6, and affects only authenticated and authorized users. (Redis 7.0.12) + +- (CVE-2022-24736) An attacker attempting to load a specially crafted Lua script can cause NULL pointer dereference which will result in a crash of the `redis-server` process. This issue affects all versions of Redis. (Redis 7.0.0) + +- (CVE-2022-24735) By exploiting weaknesses in the Lua script execution environment, an attacker with access to Redis can inject Lua code that will execute with the (potentially higher) privileges of another Redis user. (Redis 7.0.0) + +Redis 6.2.x: + +- (CVE-2025-21605) An unauthenticated client can cause unlimited growth of output buffers until the server runs out of memory or is terminated, which can lead to denial-of-service. + +- (CVE-2024-31449) An authenticated user may use a specially crafted Lua script to trigger a stack buffer overflow in the bit library, which may potentially lead to remote code execution. + +- (CVE-2024-31228) An authenticated user can trigger a denial-of-service by using specially crafted, long string match patterns on supported commands such as `KEYS`, `SCAN`, `PSUBSCRIBE`, `FUNCTION LIST`, `COMMAND LIST`, and ACL definitions. Matching of extremely long patterns may result in unbounded recursion, leading to stack overflow and process crashes. + +- (CVE-2023-28856) Authenticated users can use the `HINCRBYFLOAT` command to create an invalid hash field that will crash Redis on access. (Redis 6.2.12) + +- (CVE-2023-25155) Specially crafted `SRANDMEMBER`, `ZRANDMEMBER`, and `HRANDFIELD` commands can trigger an integer overflow, resulting in a runtime assertion and termination of the Redis server process. (Redis 6.2.11) + +- (CVE-2023-22458) Integer overflow in the Redis `HRANDFIELD` and `ZRANDMEMBER` commands can lead to denial-of-service. (Redis 6.2.9) + +- (CVE-2022-36021) String matching commands (like `SCAN` or `KEYS`) with a specially crafted pattern to trigger a denial-of-service attack on Redis can cause it to hang and consume 100% CPU time. (Redis 6.2.11) + +- (CVE-2022-35977) Integer overflow in the Redis `SETRANGE` and `SORT`/`SORT_RO` commands can drive Redis to OOM panic. (Redis 6.2.9) + +- (CVE-2022-24834) A specially crafted Lua script executing in Redis can trigger a heap overflow in the cjson and cmsgpack libraries, and result in heap corruption and potentially remote code execution. The problem exists in all versions of Redis with Lua scripting support, starting from 2.6, and affects only authenticated and authorized users. (Redis 6.2.13) + +- (CVE-2022-24736) An attacker attempting to load a specially crafted Lua script can cause NULL pointer dereference which will result in a crash of the `redis-server` process. This issue affects all versions of Redis. (Redis 6.2.7) + +- (CVE-2022-24735) By exploiting weaknesses in the Lua script execution environment, an attacker with access to Redis can inject Lua code that will execute with the (potentially higher) privileges of another Redis user. (Redis 6.2.7) + +- (CVE-2021-41099) Integer to heap buffer overflow handling certain string commands and network payloads, when `proto-max-bulk-len` is manually configured to a non-default, very large value. (Redis 6.2.6) + +- (CVE-2021-32762) Integer to heap buffer overflow issue in `redis-cli` and `redis-sentinel` parsing large multi-bulk replies on some older and less common platforms. (Redis 6.2.6) + +- (CVE-2021-32761) An integer overflow bug in Redis version 2.2 or newer can be exploited using the `BITFIELD` command to corrupt the heap and potentially result with remote code execution. (Redis 6.2.5) + +- (CVE-2021-32687) Integer to heap buffer overflow with intsets, when `set-max-intset-entries` is manually configured to a non-default, very large value. (Redis 6.2.6) + +- (CVE-2021-32675) Denial Of Service when processing RESP request payloads with a large number of elements on many connections. (Redis 6.2.6) + +- (CVE-2021-32672) Random heap reading issue with Lua Debugger. (Redis 6.2.6) + +- (CVE-2021-32628) Integer to heap buffer overflow handling ziplist-encoded data types, when configuring a large, non-default value for `hash-max-ziplist-entries`, `hash-max-ziplist-value`, `zset-max-ziplist-entries` or `zset-max-ziplist-value`. (Redis 6.2.6) + +- (CVE-2021-32627) Integer to heap buffer overflow issue with streams, when configuring a non-default, large value for `proto-max-bulk-len` and `client-query-buffer-limit`. (Redis 6.2.6) + +- (CVE-2021-32626) Specially crafted Lua scripts may result with Heap buffer overflow. (Redis 6.2.6) + +- (CVE-2021-32625) An integer overflow bug in Redis version 6.0 or newer can be exploited using the STRALGO LCS command to corrupt the heap and potentially result with remote code execution. This is a result of an incomplete fix by CVE-2021-29477. (Redis 6.2.4) + +- (CVE-2021-29478) An integer overflow bug in Redis 6.2 could be exploited to corrupt the heap and potentially result with remote code execution. The vulnerability involves changing the default set-max-intset-entries configuration value, creating a large set key that consists of integer values and using the COPY command to duplicate it. The integer overflow bug exists in all versions of Redis starting with 2.6, where it could result with a corrupted RDB or DUMP payload, but not exploited through COPY (which did not exist before 6.2). (Redis 6.2.3) + +- (CVE-2021-29477) An integer overflow bug in Redis version 6.0 or newer could be exploited using the STRALGO LCS command to corrupt the heap and potentially result in remote code execution. The integer overflow bug exists in all versions of Redis starting with 6.0. (Redis 6.2.3)