From 3666dba7be4f52988f383cecd92f52af56a89309 Mon Sep 17 00:00:00 2001 From: Lance Leonard Date: Sun, 31 Oct 2021 07:06:49 -0700 Subject: [PATCH] Jira DOC-806: RS 6.2.8 docs (#1632) * Added more detail to rladmin verify commands (#1550) * Jira DOC-703: Update Database backup to reflect start time and updated directions. (#1548) * First steps; not yet ready for review. * Initial draft * Adding default start time discussion. * Minor tweaks and edits. * Moar fixes * Jira DOC-769: Update TLS support statement for TLS. (#1554) * Initial draft * Adding statement to Supported OS article. * Tweaks and fixes * Jira DOC-929: Add additional details about the upgrade policy to the upgrade doc. (#1599) * Initial draft * Promoting section. * Incoporating editorial feedback. * Jira DOC-939: RS - Align Export data article to Back up data article (#1598) * Initial draft * Editorial feedback. * Jira DOC-857: RS - v6.2.8 Release notes (#1628) * Added public read parameter to automated deployment of robots.txt (#1622) * Initial draft * Editorial fixes/tweaks * More fixes/tweaks * Jira DOC-564: RS - Clarify how to enable public/private IP support (#1611) * Initial draft. * Editorial feedback/tweaks. * Fixing typo. * More updates/tweaks. * Allow HTML encoding in table-children column names (#1629) * Jira DOC-196: Modules: document enterprise capability support (#1504) * Initial draft * Tweaks and fixes * Editorial feedback. * More editorial feedback. * More editorial changes. * More fixes/updates * Updating limitations. Co-authored-by: Rachel Elledge <86307637+rrelledge@users.noreply.github.com> Co-authored-by: Rachel Elledge <86307637+rrelledge@users.noreply.github.com> --- content/embeds/supported-platforms-embed.md | 13 +- .../updating-certificates.md | 20 +- .../import-export/database-backup.md | 256 ++++++++++++++++-- .../import-export/exporting-data.md | 235 ++++++++++++++-- content/rs/installing-upgrading/upgrading.md | 49 +++- content/rs/references/rladmin.md | 25 +- content/rs/release-notes/_index.md | 4 +- .../legacy-release-notes/_index.md | 2 +- .../rs-5-5-preview-april-2019.md | 2 +- .../rs/release-notes/rs-5-6-0-april-2020.md | 2 +- .../release-notes/rs-6-0-12-january-2021.md | 2 +- .../rs/release-notes/rs-6-0-20-april-2021.md | 17 +- .../release-notes/rs-6-0-8-september-2020.md | 2 +- content/rs/release-notes/rs-6-0-may-2020.md | 4 +- .../rs/release-notes/rs-6-2-4-august-2021.md | 12 +- .../rs/release-notes/rs-6-2-8-october-2021.md | 104 +++++++ static/images/rs/admin-console-menu.png | Bin 0 -> 21051 bytes .../database-configuration-export-button.png | Bin 0 -> 2141 bytes ...database-configuration-periodic-backup.png | Bin 0 -> 49080 bytes .../database-export-details-export-button.png | Bin 0 -> 2312 bytes static/images/rs/database-export-details.png | Bin 0 -> 23287 bytes .../images/rs/database-tabs-configuration.png | Bin 0 -> 7661 bytes 22 files changed, 663 insertions(+), 86 deletions(-) create mode 100644 content/rs/release-notes/rs-6-2-8-october-2021.md create mode 100755 static/images/rs/admin-console-menu.png create mode 100755 static/images/rs/database-configuration-export-button.png create mode 100755 static/images/rs/database-configuration-periodic-backup.png create mode 100755 static/images/rs/database-export-details-export-button.png create mode 100755 static/images/rs/database-export-details.png create mode 100755 static/images/rs/database-tabs-configuration.png diff --git a/content/embeds/supported-platforms-embed.md b/content/embeds/supported-platforms-embed.md index 2840e43ce8b..a3f07c6ce32 100644 --- a/content/embeds/supported-platforms-embed.md +++ b/content/embeds/supported-platforms-embed.md @@ -1,12 +1,12 @@ -Redis Enterprise Software (RS) is supported on several operating systems, cloud environments, and virtual environments. +Redis Enterprise Software is supported on several operating systems, cloud environments, and virtual environments. {{< note >}} Make sure your system meets these requirements: - Only 64-bit operating systems are supported. - You must install Redis Enterprise Software directly on the host, not through system cloning. -- You must install on a clean host with no other applications running so that all RAM is allocated to the OS and RS only. +- You must install on a clean host with no other applications running so that all RAM is allocated to the OS and Redis Enterprise Software only. - Linux distributions must be installed with at least "Minimal Install" configuration. {{< /note >}} @@ -14,13 +14,20 @@ Make sure your system meets these requirements: |------------|-----------------| | Ubuntu | 14.04 (Support ends on November 30, 2020)
16.04, 18.04
Server version is recommended for production installations. Desktop version is only recommended for development deployments. | | RHEL/CentOS 6 | 6.7, 6.8, 6.9 (Support ends on November 30, 2020) | -| RHEL/CentOS 7 | 7.0, 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8, 7.9
Requires OpenSSL 1.0.2 and [firewall configuration]({{< relref "/rs/installing-upgrading/configuring/centos-rhel-7-firewall.md" >}}) | +| RHEL/CentOS 7 | 8.0, 7.0, 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8, 7.9
Requires OpenSSL 1.0.2 and [firewall configuration]({{< relref "/rs/installing-upgrading/configuring/centos-rhel-7-firewall.md" >}}) | | Oracle Linux 6 | Based on the corresponding RHEL version | | Oracle Linux 7 | Based on the corresponding RHEL version | | Amazon Linux | Version 1 | | Docker | [Docker images]({{< relref "/rs/getting-started/getting-started-docker.md" >}}) of Redis Enterprise Software are certified for Development and Testing only. | | Kubernetes | See the [Platform documentation]({{< relref "/kubernetes/_index.md" >}}) | +Be aware that Redis Enterprise Software relies on certain components that require support from the operating system. You cannot enable support for components, services, protocols, or versions that aren't supported by the operating system running Redis Enterprise Software. In addition, updates to the operating system or to Redis Enterprise Software can impact component support. + +To illustrate, version 6.2.8 of Redis Enterprise Software removed support for TLS 1.0 and TLS 1.1 on Red Hat Enterprise Linux 8 (RHEL 8) because that operating system [does not enable support](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/security_hardening/using-the-system-wide-cryptographic-policies_security-hardening) for these versions by default. + +If you have trouble enabling specific components, features, or versions, verify that they're supported by your operating system and that they're configured correctly. + + ## VMware Redis Enterprise is compatible with VMware, but make sure that you: diff --git a/content/rs/administering/cluster-operations/updating-certificates.md b/content/rs/administering/cluster-operations/updating-certificates.md index fd395342fd3..d4de64f86d5 100644 --- a/content/rs/administering/cluster-operations/updating-certificates.md +++ b/content/rs/administering/cluster-operations/updating-certificates.md @@ -7,7 +7,7 @@ categories: ["RS"] aliases: ["/rs/administering/cluster-operations/updating-certificates"] --- -Redis Enterprise Software (RS) uses self-signed certificates out-of-the-box to make sure that the product is secure by default. +Redis Enterprise Software uses self-signed certificates out-of-the-box to make sure that the product is secure by default. The self-signed certificates are used to establish encryption-in-transit for the following traffic: - Management admin console (CM) - The certificate for connections to the management admin console @@ -16,7 +16,7 @@ The self-signed certificates are used to establish encryption-in-transit for the - Syncer - The certificate for Active-Active and Replica Of synchronization between clusters - Metrics exporter - The certificate to export metrics to Prometheus -These self-signed certificates are generated on the first node of each RS installation and are copied to all other nodes added to the cluster. +These self-signed certificates are generated on the first node of each Redis Enterprise Software installation and are copied to all other nodes added to the cluster. When you use the default self-signed certificates and you connect to the admin console over a web browser, you'll seen an untrusted connection notification. @@ -28,7 +28,7 @@ When you update the certificates, the new certificate replaces the same certific ## How to update TLS certificates -You can use either the rladmin CLI or the REST API to update the certificates. +You can use either the rladmin command-line interface (CLI) or the REST API to update the certificates. ### Using the CLI @@ -66,7 +66,7 @@ curl -k -X PUT -u ":" -H "Content-Type: application/json" -d Where: - cert_name - The name of the certificate to replace: - - For management UI: `cm` + - For management admin console: `cm` - For REST API: `api` - For database endpoint: `proxy` - For syncer: `syncer` @@ -83,7 +83,7 @@ Where: The new certificates are used the next time the clients connect to the database. -When you upgrade RS, the upgrade process copies the certificates that are on the first upgraded node to all of the nodes in the cluster. +When you upgrade Redis Enterprise Software, the upgrade process copies the certificates that are on the first upgraded node to all of the nodes in the cluster. ### Update syncer certificates for Active-Active databases @@ -105,7 +105,7 @@ crdb-cli crdb update --crdb-guid --force ## TLS protocol and ciphers -TLS protocols and ciphers define the overall suite of algorithms that clients are able to connect to the servers with. You can change the TLS protocols and ciphers to improve the security posture of your RS cluster and databases. The default settings are in line with industry best practices, but you can customize them to match the security policy of your organization. +TLS protocols and ciphers define the overall suite of algorithms that clients are able to connect to the servers with. You can change the TLS protocols and ciphers to improve the security posture of your Redis Enterprise cluster and databases. The default settings are in line with industry best practices, but you can customize them to match the security policy of your organization. The communications for which you can modify TLS protocols and ciphers are: @@ -115,6 +115,12 @@ The communications for which you can modify TLS protocols and ciphers are: You can configure the TLS protocols and ciphers with the `rladmin` commands shown here, or with the REST API. +Be aware that TLS support depends on the operating system. You cannot enable support for protocols or versions that aren't supported by the operating system running Redis Enterprise Software. In addition, updates to the operating system or to Redis Enterprise Software can impact protocol and version support. + +To illustrate, version 6.2.8 of Redis Enterprise Software removed support for TLS 1.0 and TLS 1.1 on Red Hat Enterprise Linux 8 (RHEL 8) because that operating system [does not enable support](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/security_hardening/using-the-system-wide-cryptographic-policies_security-hardening) for these versions by default. + +If you have trouble enabling specific versions of TLS, verify that they're supported by your operating system and that they're configured correctly. + ### TLS protocol for the control plane To set the minimum TLS protocol for the control plane: @@ -178,7 +184,7 @@ For your changes to take effect on the discovery service, restart the service wi supervisorctl restart sentinel_service ``` -After you set the minimum TLS version, RS does not accept communications with +After you set the minimum TLS version, Redis Enterprise Software does not accept communications with TLS versions older than the specified version. ### Cipher configuration diff --git a/content/rs/administering/import-export/database-backup.md b/content/rs/administering/import-export/database-backup.md index 78a9649f427..a7005aed64b 100644 --- a/content/rs/administering/import-export/database-backup.md +++ b/content/rs/administering/import-export/database-backup.md @@ -6,23 +6,26 @@ alwaysopen: false categories: ["RS"] aliases: /rs/administering/database-operations/database-backup/ --- -You can manually [export your data]({{< relref "/rs/administering/import-export/exporting-data.md" >}}) -from a specific Redis Enterprise Software database at any time. -You can also schedule backups of your databases to make sure you always have valid backups. -The backup process can be scheduled for every 1, 4, 12 or 24 hours from the time that you save the backup configuration. -You can schedule backups to these locations: +Periodic backups provide a way to restore data with minimal data loss. With Redis Enterprise Software, you can schedule periodic backups to occur every once a day (every 24 hours), twice a day (every twelve hours), every four hours, or every hour. + +As of v6.2.8, you can specify the start time for twenty-four or twelve hour backups. + +To make an on-demand backup, [export your data]({{< relref "/rs/administering/import-export/exporting-data.md" >}}). + +You can schedule backups to a variety of locations, including: - FTP server - SFTP server -- Amazon S3 - Local mount point +- Amazon Simple Storage Service (S3) - Azure Blob Storage - Google Cloud Storage -The backup process creates compressed (.gz) RDB files that you can [import into a database]({{< relref "/rs/administering/import-export/importing-data.md" >}}). -If you backup a database configured for database clustering, -Redis Software copies a backup file for each shard to the specified backup location. +The backup process creates compressed (.gz) RDB files that you can [import into a database]({{< relref "/rs/administering/import-export/importing-data.md" >}}). + +When you back up a database configured for database clustering, +Redis Enterprise Software creates a backup file for each shard in the configuration. All backup files are copied to the storage location. {{< note >}} @@ -34,13 +37,234 @@ Redis Software copies a backup file for each shard to the specified backup locat ## Schedule periodic backups +Before scheduling periodic backups, verify that your storage location exists and is available to the user running Redis Enterprise Software (`redislabs` by default). You should verify that: + +- Permissions are set correctly +- The user running Redis Enterprise Software is authorized to access the storage location +- The authorization credentials work + +Storage location access is verified before periodic backups are scheduled. + To schedule periodic backups for a database: -1. In **databases**, click on the database that you want to configure backups for. -1. In **configuration**, select **Periodic backup**. -1. Select an interval for the backups to run either every **1**, **4**, **12** or **24** hours. -1. Select one of the available storage types. -1. Enter the details for the selected storage type. -1. To save the database configuration, click **Update**. +1. Sign in to the Redis Enterprise Software admin console using admin credentials. +2. From the admin console, choose **Databases** and then select your database. +3. Select the **Edit** button. +4. Locate and enable the **Periodic backup** checkbox. + + {{In the admin console, the Periodic backup settings can be found on the Configuration details tab of the database.}}{{< /image >}} + +6. Use the following table to help specify the details: + + | Setting | Description | + |--------------|-------------| + | **Interval** | Specifies the frequency of the backup; that is, the time between each backup snapshot.

Supported values include _Every 24 hours_, _Every 12 hours_, _Every 4 hours_, and _Every hour_. | + | **Set starting time** | _v6.2.8 or later: _ Specifies the start time for the backup; available when **Interval** is set to _Every 24 hours_ or _Every 12 hours_.

If not specified, defaults to a time selected by Redis Enterprise Software. | + | **Choose storage type** | Specifies the storage type for the backup. Supported options vary and might require additional details. To learn more, see [Supported storage locations](#supported-storage-locations). + +7. Select **Update** to apply your changes. + +Access to the storage location is verified when you apply your updates. This means the location, credentials, and other details must exist and function before you can enable periodic backups. + +## Default backup start time + +If you do _not_ specify a start time for twenty-four or twelve hour backups, Redis Enterprise Software chooses one for you, based on the time the backups are enabled. + +This choice assumes that your database is deployed to a multi-tenant cluster containing multiple databases. This means that default start times are staggered (offset) to ensure availability. This is done by calculating a random offset which specifies a number of seconds added to the start time. + +Here's how it works: + +- Assume you're enabling the backup at 4:00 pm (1600 hours). +- You choose to back up your database every 12 hours. +- Because you didn't set a start time, the cluster randomly chooses an offset of 4,320 seconds (or 72 minutes). + +This means your first periodic backup occurs 72 minutes after the time you enabled periodic backups (4:00 pm + 72 minutes). Backups repeat every twelve hours at roughly same time. + +The backup time is imprecise because they're started by a trigger process that runs every five minutes. When the process wakes, it compares the current time to the scheduled backup time. If that time has passed, it triggers a backup. + +If the previous backup fails, the trigger process retries the backup until it succeeds. + +In addition, throttling and resource limits also affect backup times. + +For help with specific backup issues, [contact support](https://redis.com/company/support/). + + +## Supported storage locations {#supported-storage-locations} + +Database backups can be saved to a local mount point, transferred to [a URI](https://en.wikipedia.org/wiki/Uniform_Resource_Identifier) using FTP/SFTP, or stored on cloud provider storage. + +When saved to a local mount point or a cloud provider, backup locations need to be available to [the group and user]({{< relref "/rs/installing-upgrading/customize-user-and-group.md" >}}) running Redis Enterprise Software, `redislabs:redislabs` by default. + +Redis Enterprise Software needs the ability to view permissions and update objects in the storage location. Implementation details vary according to the provider and your configuration. To learn more, consult the provider's documentation. + +The following sections provide general guidelines. Because provider features change frequently, use your provider's documentation for the latest info. + +### FTP server + +Before enabling backups to an FTP server, verify that: + +- Your Redis Enterprise cluster can connect and authenticate to the FTP server. +- The user specified in the FTP server location has read and write privileges. + +To store your backups on an FTP server, set its **Backup Path** using the following syntax: + +`ftp://[username]:[password]@[host]:[port]/[path]/` + +Where: + +- *protocol*: the server's protocol, can be either `ftp` or `ftps`. +- *username*: your username, if needed. +- *password*: your password, if needed. +- *hostname*: the hostname or IP address of the server. +- *port*: the port number of the server, if needed. +- *path*: the backup path, if needed. + +Example: `ftp://username:password@10.1.1.1/home/backups/` + +The user account needs permission to write files to the server. + +### SFTP server + +Before enabling backups to an SFTP server, make sure that: + +- Your Redis Enterprise cluster can connect and authenticate to the SFTP server. +- The user specified in the SFTP server location has read and write privileges. +- The SSH private keys are specified correctly. You can use the key generated by the cluster or specify a custom key. + + When using the cluster auto generated key, copy the **Cluster SSH Public Key** to the appropriate location on the SFTP server. This is available from the **General** tab of the **Settings** menu in the admin console. + + Use the server documentation to determine the appropriate location for the SSH Public Key. + +To backup to an SFTP server, enter the SFTP server location in the format: + +```sh +sftp://user:password@host<:custom_port>/path/ +``` + +For example: `sftp://username:password@10.1.1.1/home/backups/` + +### Local mount point + +Before enabling periodic backups to a local mount point, verify that: + +- The node can connect to the destination server, the one hosting the mount point. +- The `redislabs:redislabs` user has read and write privileges on the local mount point +and on the destination server. +- The backup location has enough disk space for your backup files. Backup files +are saved with filenames that include the timestamp, which means that earlier backups are not overwritten. + +To back up to a local mount point: + +1. On each node in the cluster, create the mount point: + 1. Connect to a shell running on Redis Enterprise Software server hosting the node. + 1. Mount the remote storage to a local mount point. + + For example: + + ```sh + sudo mount -t nfs 192.168.10.204:/DataVolume/Public /mnt/Public + ``` + +1. In the path for the backup location, enter the mount point. + + For example: `/mnt/Public` + +1. Verify that the user running Redis Enterprise Software has permissions to access and update files in the mount location. + +### AWS Simple Storage Service + +To store backups in an Amazon Web Services (AWS) Simple Storage Service (S3) [bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-buckets-s3.html): + +1. Sign in to the [AWS Management Console](https://console.aws.amazon.com/). + +1. Use the **Services** menu to locate and select **Storage** > **S3**. This takes you to the Amazon S3 admin panel. + +1. If you do not already have a bucket for backups, select the **Create Bucket** button in the upper, right corner of the **Buckets** panel. + + 1. When the **Create bucket** screen appears, enter a name for your bucket. + + 1. Set **AWS Region** to an appropriate region. + + 1. Set other properties according to your company standards. + + 1. When finished, select the **Create bucket** button near the bottom of the screen. + +1. Use the Buckets list to locate and select your bucket. When the settings appear, select the **Permissions** tab, locate the **Access control list (ACL)** section, and then select the **Edit** button. + +1. When the **Edit access control list (ACL)** screen appears, locate the **Access for other AWS accounts** section and then select the **Add grantee** button. + + 1. In the **Grantee** field, enter the AWS account ID: + + ``` + fd1b05415aa5ea3a310265ddb13b156c7c76260dbc87e037a8fc290c3c86b614 + ``` + + 1. In the **Objects** list, enable **Write**. + 1. In the **Bucket ACL** list, enable **Read** and **Write**. + 1. When finished, select the **Save changes** button. + +Once the bucket is available and the permissions are set, use the name of your bucket as the **Backup destination** for your database **Remote backup settings**. + +Use the S3 protocol scheme (`s3://`) to set *backups-bucket* to the name of your backup bucket. If, for example, your bucket is named *backups-bucket*, set **Backup destination** to `s3://backups-bucket`. + +### GCP Storage + +For [Google Cloud Platform (GCP) +console](https://developers.google.com/console/) subscriptions, store your backups in a Google Cloud Storage bucket: + +1. Sign in to Google Cloud Platform console. + +1. In the admin console menu, locate the _Storage_ section then select **Cloud Storage > Browser**. + +1. Create or select a bucket. + +1. Select the [overflow menu](https://material.io/components/app-bars-top#anatomy) (three dots, stacked) and then select the **Edit Bucket Permissions** command. + +1. Select the **Add members** button and then add: + + `service@redislabs-prod-clusters.iam.gserviceaccount.com` + +1. Set **Role** to **Storage Legacy** | **Storage Legacy Bucket Writer**. + +1. Save your changes. + +1. Verify that your bucket does _not_ have a set retention policy. + + To do so: + + 1. View the details of your bucket. + + 1. Select the **Retention** tab. + + 1. Verify that there is no retention policy. + + If a policy is defined and you cannot delete it, you need to use a different bucket. + +Use the bucket details **Configuration** tab to locate the **gsutil URI**. This is the value you'll assign to your resource's backup path. + +### Azure Blob Storage + +To store your backup in Microsoft Azure Blob Storage, sign in to the Azure portal and then: + +1. [Create an Azure Storage account](https://docs.microsoft.com/en-us/azure/storage/common/storage-account-create) if you do not already have one + +1. [Create a container](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-portal#create-a-container) if you do not already have one + +1. [Manage storage account access keys](https://docs.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage) + +Set your resource's **Backup Path** to the path of your storage account. + +The syntax for creating the backup varies according to your authorization mechanism. For example: + +`abs://storage_account_access_key@storage_account_name/container_name/[path/]` + +Where: + +- *storage_account_access_key:* the primary access key to the + storage account +- *storage_account_name:* the storage account name +- *container_name:* the name of the container, if needed. +- *path*: the backups path, if needed. + +To learn more, see [Authorizing access to data in Azure Storage](https://docs.microsoft.com/en-us/azure/storage/common/storage-auth) -{{< embed-md "backup-locations.md" >}} diff --git a/content/rs/administering/import-export/exporting-data.md b/content/rs/administering/import-export/exporting-data.md index 0ba7e04e15c..12376331c27 100644 --- a/content/rs/administering/import-export/exporting-data.md +++ b/content/rs/administering/import-export/exporting-data.md @@ -7,11 +7,8 @@ categories: ["RS"] aliases: /rs/administering/import-export/exporting-data/ /rs/administering/database-operations/exporting-data/ --- -You can [schedule backups]({{< relref "/rs/administering/import-export/exporting-data.md" >}}) -of a specific Redis Enterprise Software database to make sure you always have valid backups. -You can also export the data from a specific database at any time. -You can export a database to these locations: +You can export the data from a specific database at any time. The following destinations are supported: - FTP server - SFTP server @@ -20,25 +17,223 @@ You can export a database to these locations: - Azure Blob Storage - Google Cloud Storage -{{}}The backup process creates compressed (.gz) RDB files that you can [import into a database]({{< relref "/rs/administering/import-export/importing-data.md" >}}). -If you backup a database configured for database clustering, -RS copies a backup file for each shard to the specified backup location. +If you export a database configured for database clustering, export files are created for each shard. -{{< note >}} -Make sure that you have enough space available in your storage location. -If there is not enough space in the backup location, the backup fails. -{{< /note >}} -{{}} +## Storage space requirements -## Export data from a database +Before exporting data, verify that you have enough space available in the storage destination and on the local storage associated with the node hosting the database. + +Export is a two-step process: a temporary copy of the data is saved to the local storage of the node and then copied to the storage destination. (The temporary file is removed after the copy operation.) + +Export fails when there isn't enough space for either step. + +## Export database data To export data from a database: -1. In **databases**, click on the database that you want to export data from. -1. In **configuration**, at the bottom of the page click **Export**. -1. Select the location type to export the data to and enter the connection details. -1. Select **Receive email notification on success/failure**, if you want to receive - email notifications about the import process. -1. Click **Export**. +1. Sign in to the admin console. +1. Select the **Databases** command from the console menu. + + {{Choose the **Databases** command from the admin console menu.}}{{< /image >}} + + The admin console commands vary according to your level of access. Here, you see commands available to users with full access. + +1. Select the database from the database list. + +1. Select the **Configuration** tab. + + {{Select the **Configuration** tab to export data.}}{{< /image >}} + +1. Select the **Export** button. + + {{Select the **Export** button tab to export data.}}{{< /image >}} + + If the **Export** button is disabled, you do not have permission to export data. + +1. Enter the export details. + + {{Enter export details and then select the Export button to begin exporting data.}}{{< /image >}} + + The **Choose storage type** list defines the destination storage container for the exported data; select the appropriate value and then enter the requested details. Details vary for each storage type. For help, see [Supported storage locations](#supported-storage-locations). + +1. Select the **Export** button to begin the export process. + + {{Select the **Export** button to export data.}}{{< /image >}} + +## Supported storage locations {#supported-storage-locations} + +Data can be exported to a local mount point, transferred to [a URI](https://en.wikipedia.org/wiki/Uniform_Resource_Identifier) using FTP/SFTP, or stored on cloud provider storage. + +When saved to a local mount point or a cloud provider, export locations need to be available to [the group and user]({{< relref "/rs/installing-upgrading/customize-user-and-group.md" >}}) running Redis Enterprise Software, `redislabs:redislabs` by default. + +Redis Enterprise Software needs the ability to view permissions and update objects in the storage location. Implementation details vary according to the provider and your configuration. To learn more, consult the provider's documentation. + +The following sections provide general guidelines. Because provider features change frequently, use your provider's documentation for the latest info. + +### FTP server + +Before exporting data to an FTP server, verify that: + +- Your Redis Enterprise cluster can connect and authenticate to the FTP server. +- The user specified in the FTP server location has read and write privileges. + +To export data to an FTP server, set **Path** using the following syntax: + +`ftp://[username]:[password]@[host]:[port]/[path]/` + +Where: + +- *protocol*: the server's protocol, can be either `ftp` or `ftps`. +- *username*: your username, if needed. +- *password*: your password, if needed. +- *hostname*: the hostname or IP address of the server. +- *port*: the port number of the server, if needed. +- *path*: the export destination path, if needed. + +Example: `ftp://username:password@10.1.1.1/home/exports/` + +The user account needs permission to write files to the server. + +### SFTP server + +Before exporting data to an SFTP server, make sure that: + +- Your Redis Enterprise cluster can connect and authenticate to the SFTP server. +- The user specified in the SFTP server location has read and write privileges. +- The SSH private keys are specified correctly. You can use the key generated by the cluster or specify a custom key. + + When using the cluster key, copy the **Cluster SSH Public Key** to the appropriate location on the SFTP server. This is available from the **General** tab of the **Settings** menu in the admin console. + + Use the server documentation to determine the appropriate location for the SSH Public Key. + +To export data to an SFTP server, enter the SFTP server location in the format: + +```sh +sftp://user:password@host<:custom_port>/path/ +``` + +For example: `sftp://username:password@10.1.1.1/home/exports/` + +### Local mount point + +Before exporting data to a local mount point, verify that: + +- The node can connect to the destination server, the one hosting the mount point. +- The `redislabs:redislabs` user has read and write privileges on the local mount point +and on the destination server. +- The export location has enough disk space for your exported data. + +To export to a local mount point: + +1. On each node in the cluster, create the mount point: + 1. Connect to a shell running Redis Enterprise Software server hosting the node. + 1. Mount the remote storage to a local mount point. + + For example: + + ```sh + sudo mount -t nfs 192.168.10.204:/DataVolume/Public /mnt/Public + ``` + +1. In the path for the export location, enter the mount point. + + For example: `/mnt/Public` + +1. Verify that the user running Redis Enterprise Software has permissions to access and update files in the mount location. + +### AWS Simple Storage Service + +To export data to an Amazon Web Services (AWS) Simple Storage Service (S3) [bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-buckets-s3.html): + +1. Sign in to the [AWS Management Console](https://console.aws.amazon.com/). + +1. Use the **Services** menu to locate and select **Storage** > **S3**. This takes you to the Amazon S3 admin panel. + +1. If you do not already have a bucket for exports, select the **Create Bucket** button in the upper, right corner of the **Buckets** panel. + + 1. When the **Create bucket** screen appears, enter a name for your bucket. + + 1. Set **AWS Region** to an appropriate region. + + 1. Set other properties according to your company standards. + + 1. When finished, select the **Create bucket** button near the bottom of the screen. + +1. Use the Buckets list to locate and select your bucket. When the settings appear, select the **Permissions** tab, locate the **Access control list (ACL)** section, and then select the **Edit** button. + +1. When the **Edit access control list (ACL)** screen appears, locate the **Access for other AWS accounts** section and then select the **Add grantee** button. + + 1. In the **Grantee** field, enter the AWS account ID: + + ``` + fd1b05415aa5ea3a310265ddb13b156c7c76260dbc87e037a8fc290c3c86b614 + ``` + + 1. In the **Objects** list, enable **Write**. + 1. In the **Bucket ACL** list, enable **Read** and **Write**. + 1. When finished, select the **Save changes** button. + +Once the bucket is available and the permissions are set, use the name of your bucket as the **Backup destination** for your database **Remote backup settings**. + +Use the S3 protocol scheme (`s3://`) to set *bucket-name* to the name of your export bucket. If, for example, your bucket is named *exports-bucket*, set **Path** to `s3://exports-bucket`. + +### GCP Storage + +For [Google Cloud Platform (GCP) +console](https://developers.google.com/console/) subscriptions, store your exports in a Google Cloud Storage bucket: + +1. Sign in to Google Cloud Platform console. + +1. In the admin console menu, locate the _Storage_ section then select **Cloud Storage > Browser**. + +1. Create or select a bucket. + +1. Select the [overflow menu](https://material.io/components/app-bars-top#anatomy) (three dots, stacked) and then select the **Edit Bucket Permissions** command. + +1. Select the **Add members** button and then add: + + `service@redislabs-prod-clusters.iam.gserviceaccount.com` + +1. Set **Role** to **Storage Legacy** | **Storage Legacy Bucket Writer**. + +1. Save your changes. + +1. Verify that your bucket does _not_ have a set retention policy. + + To do so: + + 1. View the details of your bucket. + + 1. Select the **Retention** tab. + + 1. Verify that there is no retention policy. + + If a policy is defined and you cannot delete it, you need to use a different bucket. + +Use the bucket details **Configuration** tab to locate the **gsutil URI**. This is the value you'll assign to your resource's path. + +### Azure Blob Storage + +To export to Microsoft Azure Blob Storage, sign in to the Azure portal and then: + +1. [Create an Azure Storage account](https://docs.microsoft.com/en-us/azure/storage/common/storage-account-create) if you do not already have one + +1. [Create a container](https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-portal#create-a-container) if you do not already have one + +1. [Manage storage account access keys](https://docs.microsoft.com/en-us/azure/storage/common/storage-account-keys-manage) + +Set your resource's **Path** to the path of your storage account. + +The syntax for creating the export destination varies according to your authorization mechanism. For example: + +`abs://storage_account_access_key@storage_account_name/container_name/[path/]` + +Where: + +- *storage_account_access_key:* the primary access key to the + storage account +- *storage_account_name:* the storage account name +- *container_name:* the name of the container, if needed. +- *path*: the backups path, if needed. -{{< embed-md "backup-locations.md" >}} +To learn more, see [Authorizing access to data in Azure Storage](https://docs.microsoft.com/en-us/azure/storage/common/storage-auth). diff --git a/content/rs/installing-upgrading/upgrading.md b/content/rs/installing-upgrading/upgrading.md index 9cfddc4d709..59333c31ffe 100644 --- a/content/rs/installing-upgrading/upgrading.md +++ b/content/rs/installing-upgrading/upgrading.md @@ -33,6 +33,45 @@ To upgrade successfully, both of the following must be true: If you do not meet these minimums, you must first update the nodes and databases accordingly. +## Redis upgrade policy + +In version 6.2.4, Redis Enterprise Software introduced the Redis database compatibility upgrade policy (`redis_upgrade_policy`). This policy controls the default value for the Redis database compatibility when creating or updating databases. + +As of v6.2.4, this policy defaults to `major`, which limits Redis database compatibility to the most recent major release (v6.0, as of this writing). + +This value supports a more conservative approach to upgrades. You can change the value to support more frequent upgrades, however, you'll need to upgrade more frequently to stay current. + +If you change the policy to `latest`, you need to upgrade Redis Enterprise Software every time there's a minor release. Further, you'll need to leave the policy set to `latest` until the next major release of Redis Enterprise Software, which generally happens every 18-24 months. + +Changes to the upgrade policy do _not_ affect existing databases. The policy is used only when you create a new database, upgrade a database, or change its configuration. + +For best results, we recommend changing the policy value only after upgrading to a major release of Redis Enterprise Software. + +## Upgrade policy values + +The Redis version of a database indicates its open source Redis compatibility. When you create a database or edit its configuration, the compatibility version is updated to support the most recent version supported by your copy of Redis Enterprise Software. + +The database compatibility upgrade policy controls this by limiting compatibility to either the most recent _major_ (x.0) release or the _latest_ release (x.y) supported by your version of Redis Enterprise Software. + +- When set to `major`, the policy limits Redis compatibility to major releases. This allows for longer upgrade cycles by supporting Redis versions across multiple Redis Enterprise Software releases. + + This is the default value for Redis Enterprise Software. + +- When set to `latest`, the policy limits compatibility to the latest (most recent) version of open source Redis supported by your copy of Redis Enterprise Software. (This was the default behavior of earlier releases. As of v6.2.4, this is no longer the default behavior.) + + Setting the upgrade policy to `latest` ensures that the most recent Redis features are available to new databases and ones that are upgraded. It also requires more frequent upgrades, as open source Redis is updated more frequently than Redis Enterprise Software. + +To demonstrate: The Redis Enterprise Software 6.2.4 package included compatibility with the most recent major Redis release (v6.0 at the time) and the latest (most recent) update to Redis (v6.2.3 at the time). + +By default, compatibility with v6.0 was installed with the upgrade. + +To change this to use the latest release available, use `rladmin` to set the upgrade policy and the default Redis version: + +``` shell +tune cluster redis_upgrade_policy latest +tune cluster default_redis_version 6.2 +``` + ## Upgrade a cluster ### Upgrade prerequisites @@ -108,16 +147,6 @@ Before upgrading a database: - When persistence is enabled without replication, the database is unavailable during restart because the data is restored from the persistence file. AOF persistence restoration is slower than snapshot restoration. -### Redis database upgrade policy - -In version 6.2.4, Redis Enterprise Software introduced the Redis database compatibility upgrade policy (`redis_upgrade_policy`). This policy controls the default value for the Redis database compatibility used to create new and update existing databases. To learn more, see [`rladmin upgrade`]({{< relref "/rs/references/rladmin.md#upgrade" >}}). - -As of v6.2.4, this policy defaults to `major`, which limits Redis database compatibility to the most recent major release (v6.0, as of this writing.). To create databases using the most recent release of Redis, use `rladmin` to set the policy to `latest`. - -``` shell -tune cluster redis_upgrade_policy latest -``` - ### Database upgrade process To upgrade a database: diff --git a/content/rs/references/rladmin.md b/content/rs/references/rladmin.md index 02ce9dee538..aa77e020b4a 100644 --- a/content/rs/references/rladmin.md +++ b/content/rs/references/rladmin.md @@ -747,13 +747,34 @@ As of v6.2.4, the default behavior for `upgrade db` has changed. It is now cont ### `verify` -`rladmin verify balance` prints a cluster shard balance report. +`rladmin verify` prints verification reports for the cluster. + +#### `verify balance` + +`rladmin verify balance` prints a balance report that displays all of the unbalanced endpoints or nodes in the cluster. The [proxy policy]({{}}) determines which nodes or endpoints to report as unbalanced. ```text rladmin verify balance [ node ] ``` -`rladmin verify rack_aware` prints a cluster rack aware verification report. +| Optional Parameters | Description | +| - | - | +| node | Specify a node ID to return a balance table for that node only | + +A node is unbalanced if: +- `all-nodes` proxy policy and the node has no endpoint + +An endpoint is unbalanced in the following cases: +- `single` proxy policy and one of the following is true: + - Shard placement is [`sparse`]({{}}) and none of the master shards are on the node + - Shard placement is [`dense`]({{}}) and some master shards are on a different node from the endpoint +- `all-master-shards` proxy policy and one of the following is true: + - None of the master shards are on the node + - Some master shards are on a different node from the endpoint + +#### `verify rack_aware` + +`rladmin verify rack_aware` verifies that the cluster complies with the rack awareness policy and reports any discovered rack collisions, if [rack-zone awareness]({{}}) is enabled. ```text rladmin verify rack_aware diff --git a/content/rs/release-notes/_index.md b/content/rs/release-notes/_index.md index 1b2f3eebbe3..f82bbd583cc 100644 --- a/content/rs/release-notes/_index.md +++ b/content/rs/release-notes/_index.md @@ -6,6 +6,6 @@ alwaysopen: false categories: ["RS"] --- -Here's what changed recently in Redis Enteprise Software: +Here's what changed recently in Redis Enterprise Software: -{{< allchildren style="h2" sort="Weight" >}} +{{< table-children columnNames="Version (Release date) ,Major changes" columnSources="LinkTitle,Description" enableLinks="LinkTitle" >}} \ No newline at end of file diff --git a/content/rs/release-notes/legacy-release-notes/_index.md b/content/rs/release-notes/legacy-release-notes/_index.md index a98ff940536..81faac621cd 100644 --- a/content/rs/release-notes/legacy-release-notes/_index.md +++ b/content/rs/release-notes/legacy-release-notes/_index.md @@ -1,6 +1,6 @@ --- Title: Previous Releases -description: +description: Release notes for Redis Enterprise Software 5.4.14 (February 2020) and earlier versions. weight: 100 alwaysopen: false categories: ["RS"] diff --git a/content/rs/release-notes/rs-5-5-preview-april-2019.md b/content/rs/release-notes/rs-5-5-preview-april-2019.md index 0d24d6ff684..3cffe32fe54 100644 --- a/content/rs/release-notes/rs-5-5-preview-april-2019.md +++ b/content/rs/release-notes/rs-5-5-preview-april-2019.md @@ -1,7 +1,7 @@ --- Title: Redis Enterprise Software Release Notes 5.5 Preview (April 2019) linkTitle: 5.5 Preview (April 2019) -description: +description: Preview release. Databases support multiple modules. weight: 87 alwaysopen: false categories: ["RS"] diff --git a/content/rs/release-notes/rs-5-6-0-april-2020.md b/content/rs/release-notes/rs-5-6-0-april-2020.md index 6afa7b09e63..3aeb0db6a0d 100644 --- a/content/rs/release-notes/rs-5-6-0-april-2020.md +++ b/content/rs/release-notes/rs-5-6-0-april-2020.md @@ -1,7 +1,7 @@ --- Title: Redis Enterprise Software Release Notes 5.6.0 (April 2020) linkTitle: 5.6.0 (April 2020) -description: +description: Install improvements for RHEL 6 and 7. Active-Active support for HyperLogLog. Redis on Flash now supports RedisJSON. Active-Active default changes for high availability and OSS Cluster API support. Backup support for Google Cloud Storage and Azure Blob storage. Compatible with open source Redis 5.0.8. weight: 81 alwaysopen: false categories: ["RS"] diff --git a/content/rs/release-notes/rs-6-0-12-january-2021.md b/content/rs/release-notes/rs-6-0-12-january-2021.md index 8a3f3c210e9..f7055a445d5 100644 --- a/content/rs/release-notes/rs-6-0-12-january-2021.md +++ b/content/rs/release-notes/rs-6-0-12-january-2021.md @@ -1,7 +1,7 @@ --- Title: Redis Enterprise Software Release Notes 6.0.12 (January 2021) linkTitle: 6.0.12 (January 2021) -description: +description: Distribute synchronization across nodes for Active-Active and Active-Passive databases. Disable internal services to free memory. User accounts support password rotation. Module depdencies automatically installed. Syncer process recovery. Compatible with open source Redis 6.0.6. weight: 78 alwaysopen: false categories: ["RS"] diff --git a/content/rs/release-notes/rs-6-0-20-april-2021.md b/content/rs/release-notes/rs-6-0-20-april-2021.md index bc0a612ed20..a7784b20783 100644 --- a/content/rs/release-notes/rs-6-0-20-april-2021.md +++ b/content/rs/release-notes/rs-6-0-20-april-2021.md @@ -1,7 +1,7 @@ --- Title: Redis Enterprise Software Release Notes 6.0.20 (April 2021) linkTitle: 6.0.20 (April 2021) -description: +description: Role-based LDAP integration. Enhanced client mutual authentication. Active-Active improvements for eviction policies, migration, and the BITFIELD data type. Compatible with open source Redis 6.0.9. weight: 77 alwaysopen: false categories: ["RS"] @@ -160,9 +160,6 @@ All known bugs around setting ciphers were fixed. To learn more, see [Updating - The Active-Active replication backlog size of new Active-Active databases is allocated dynamically according to shard size. - - - ## Important fixes - RS50905, RS54809, 54940 - Fix in Redis preventing missing process PID @@ -191,8 +188,6 @@ All known bugs around setting ciphers were fixed. To learn more, see [Updating - The bundled RedisTimeSeries module was upgraded to v1.4.9 - The bundled RediSearch module was upgraded to v2.0.8 - - ## Known limitations - RS59983 - Clients may get disconnected by the proxy when one client sends an UNSUBSCRIBE command without being subscribed to any channel and disconnect before the response returns back from the server (from the proxy). @@ -243,17 +238,17 @@ All known bugs around setting ciphers were fixed. To learn more, see [Updating - As part of Redis commitment to security, the following [Open Source Redis](https://github.com/redis/redis) [CVE's](https://github.com/redis/redis/security/advisories) have been addressed in Redis Enterprise 6.0.20: - - [CVE-2021-32626](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-32626) - Lua scripts can overflow the heap-based Lua stack. This has been addressed in Redis Enterprise 6.0.20-62 + - [CVE-2021-32626](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-32626) - Lua scripts can overflow the heap-based Lua stack. This has been addressed in Redis Enterprise 6.0.20-62 - - [CVE-2021-32627](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-32627) - Integer overflow issue with Streams. This has been addressed in Redis Enterprise 6.0.20-1 + - [CVE-2021-32627](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-32627) - Integer overflow issue with Streams. This has been addressed in Redis Enterprise 6.0.20-1 - - [CVE-2021-32628](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-32628) - Vulnerability in handling large ziplists. This has been addressed in Redis Enterprise 6.0.20-1 + - [CVE-2021-32628](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-32628) - Vulnerability in handling large ziplists. This has been addressed in Redis Enterprise 6.0.20-1 - - [CVE-2021-32687](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-32687) - Integer overflow issue with intsets. This has been addressed in Redis Enterprise 6.0.20-89 + - [CVE-2021-32687](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-32687) - Integer overflow issue with intsets. This has been addressed in Redis Enterprise 6.0.20-89 - The following [Open Source Redis](https://github.com/redis/redis) [CVE's](https://github.com/redis/redis/security/advisories) do not affect Redis Enterprise: - - [CVE-2021-32625](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-32625) - Redis Enterprise is not impacted by the CVE that was found and fixed in open source Redis since Redis Enterprise does not implement `LCS`. Additional information about the open source Redis fix is on [the Redis GitHub page](https://github.com/redis/redis/releases) (Redis 6.2.4, Redis 6.0.14) + - [CVE-2021-32625](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-32625) - Redis Enterprise is not impacted by the CVE that was found and fixed in open source Redis since Redis Enterprise does not implement `LCS`. Additional information about the open source Redis fix is on [the Redis GitHub page](https://github.com/redis/redis/releases) (Redis 6.2.4, Redis 6.0.14) - [CVE-2021-32672](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-32672) - Redis Enterprise is not impacted by the CVE that was found and fixed in open source Redis because the LUA debugger is unsupported in Redis Enterprise. Additional information about the open source Redis fix is on [the Redis GitHub page](https://github.com/redis/redis/releases) (Redis 6.2.6, Redis 6.0.16) diff --git a/content/rs/release-notes/rs-6-0-8-september-2020.md b/content/rs/release-notes/rs-6-0-8-september-2020.md index 634c897f2f9..8e93e62d78e 100644 --- a/content/rs/release-notes/rs-6-0-8-september-2020.md +++ b/content/rs/release-notes/rs-6-0-8-september-2020.md @@ -1,7 +1,7 @@ --- Title: Redis Enterprise Software Release Notes 6.0.8 (September 2020) linkTitle: 6.0.8 (September 2020) -description: +description: RediSearch 2.0 support. Improved rladmin support for module upgrades. Compatible with open source Redis 6.0.5 weight: 79 alwaysopen: false categories: ["RS"] diff --git a/content/rs/release-notes/rs-6-0-may-2020.md b/content/rs/release-notes/rs-6-0-may-2020.md index be6a4d3a9a5..d267a2b5417 100644 --- a/content/rs/release-notes/rs-6-0-may-2020.md +++ b/content/rs/release-notes/rs-6-0-may-2020.md @@ -1,7 +1,7 @@ --- Title: Redis Enterprise Software Release Notes 6.0 (May 2020) linkTitle: 6.0 (May 2020) -description: +description: ACL and RBAC improvements for database access. Active-Active databases support Redis Streams. Compatible with open source Redis 6. weight: 80 alwaysopen: false categories: ["RS"] @@ -115,7 +115,7 @@ To use the updated modules with a database, you must [upgrade the module on the - If replication is enabled, you must run the BGREWRITEAOF command on all slave shards after the upgrade. - If replication is not enabled, you must run the BGREWRITEAOF command on all shards after the upgrade. - Starting from RS 5.4.2, to preserve the current Redis major.minor version during database upgrade you must use the keep_redis_version option instead of keep_current_version. -- Dynatrace agent installed on the cluster nodes can hamper the working on Envoy process leading to failure of UI and REST API. Prior upgrading we recommed removing Dynatrace completely or try upgrading to newer versions. +- Dynatrace agent installed on the cluster nodes can hamper the working on Envoy process leading to failure of UI and REST API. Prior upgrading we recommend removing Dynatrace completely or try upgrading to newer versions. ### Redis commands diff --git a/content/rs/release-notes/rs-6-2-4-august-2021.md b/content/rs/release-notes/rs-6-2-4-august-2021.md index 05801a0082a..f5f8b4692af 100644 --- a/content/rs/release-notes/rs-6-2-4-august-2021.md +++ b/content/rs/release-notes/rs-6-2-4-august-2021.md @@ -1,7 +1,7 @@ --- Title: Redis Enterprise Software Release Notes 6.2.4 (August 2021) linkTitle: 6.2.4 (August 2021) -description: +description: Internode encryption. Nginx replaced by envoy. New upgrade policies/behavior. Compatible with open source Redis 6.2. weight: 76 alwaysopen: false categories: ["RS"] @@ -32,7 +32,7 @@ Keep the following in mind: - [In v6.0.20]({{}}), Redis Enterprise Software replaced Nginx with envoy to improve internal security and communication. As of v6.2.4, Nginx is no longer provided with Redis Enterprise Software. -### Database upgrade defaults +### Database upgrade default changes The default behavior of the `upgrade db` command has changed. It is now controlled by a new cluster policy (`redis_upgrade_policy`), which defines the policy for creating new databases and upgrading existing databases. The policy supports the following values: @@ -154,15 +154,11 @@ To learn more, see [rladmin upgrade]({{}}) from v6.0.20 have been fixed. - -#### Security +## Security - The following [Open Source Redis](https://github.com/redis/redis) [CVE's](https://github.com/redis/redis/security/advisories) do not affect Redis Enterprise: - - [CVE-2021-32625](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-32625) - Redis Enterprise is not impacted by the CVE that was found and fixed in open source Redis since Redis Enterprise does not implement `LCS`. Additional information about the open source Redis fix is on [the Redis GitHub page](https://github.com/redis/redis/releases) (Redis 6.2.4, Redis 6.0.14) + - [CVE-2021-32625](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-32625) - Redis Enterprise is not impacted by the CVE that was found and fixed in open source Redis since Redis Enterprise does not implement `LCS`. Additional information about the open source Redis fix is on [the Redis GitHub page](https://github.com/redis/redis/releases) (Redis 6.2.4, Redis 6.0.14) - [CVE-2021-32672](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-32672) - Redis Enterprise is not impacted by the CVE that was found and fixed in open source Redis because the LUA debugger is unsupported in Redis Enterprise. Additional information about the open source Redis fix is on [the Redis GitHub page](https://github.com/redis/redis/releases) (Redis 6.2.6, Redis 6.0.16) diff --git a/content/rs/release-notes/rs-6-2-8-october-2021.md b/content/rs/release-notes/rs-6-2-8-october-2021.md new file mode 100644 index 00000000000..a5a9b4185cb --- /dev/null +++ b/content/rs/release-notes/rs-6-2-8-october-2021.md @@ -0,0 +1,104 @@ +--- +Title: Redis Enterprise Software Release Notes 6.2.8 (October 2021) +linkTitle: 6.2.8 (October 2021) +description: RHEL 8 support. Set backup start time. Compatible with open source Redis 6.2.3. +weight: 75 +alwaysopen: false +categories: ["RS"] +aliases: /rs/release-notes/rs-6-2-8-october-2021/ + /rs/release-notes/rs-6-2-8-october-2021.md +--- + +[Redis Enterprise Software version 6.2.8](https://redislabs.com/redis-enterprise-software/download-center/software/) is now available! + +## Features and enhancements + +This version features: + +- Support for Red Hat Linux Edition (RHEL) 8 +- You can now set the start time for [12- and 24-hour backups]({{}}) +- Compatibility with version of [open source Redis 6.2.3](https://github.com/redis/redis/releases/tag/6.2.3) (starting with [Redis Enterprise Software v6.2.4]({{}})) +- Compatibility with the security fixes of the latest [open source Redis 6.2.6](https://github.com/redis/redis/releases/tag/6.2.6) +- Enhancements and bug fixes + +## Version changes + +### Prerequisites and notes + +- You can [upgrade to v6.2.8]({{}}) from Redis Enterprise Software v6.0 and later. + +- Refer to the [v6.2.4 release notes]({{}}) for important notes regarding the upgrade process. + +- Upgrades from versions earlier than v6.0 are not supported + +### Product lifecycle updates + +As of 31 October 2021, Redis Enterprise Software v5.6.0 is end of life (EOF). + +To learn more, see the Redis Enterprise Software [product lifecycle]({{}}), which details the release number and the end-of-life schedule for Redis Enterprise Software. + +Redis Enterprise modules have individual release numbers [and lifecycles]({{}}). + +### Redis modules + +Redis Enterprise Software v6.2.8 includes the following Redis modules: + +- [RediSearch v2.0.11]({{}}) +- [RedisJSON v1.0.8]({{}}) +- [RedisBloom v2.2.6]({{}}) +- [RedisGraph v2.4.7]({{}}) +- [RedisTimeSeries v1.4.10]({{}}) + +To learn more, see [Upgrade the module for a database]({{}}). + +## Resolved issues + +### User interface fixes + +- RS58804 - Display an error message in case of a login attempt with an LDAP user +- RS56680 - Notify that SASLAUTHD should be disabled prior to enabling LDAP +- RS55844 - Use the correct password and mask it on LDAP password update +- RS60877 - Fixed reset of Active-Active database compression level, in cases where the compression level wasn’t set to default, when changing any other configuration via the DB configuration page +- RS43999 - Fixed UI database configuration to allow changes when SFTP SSH key is customized +- RS59861 - Fixed the UI to display an explanation error message when password complexity does not meet requirements +- RS57734 - Fixed inaccessible UI after cluster upgrade due to missing certificate +- RS43041 - Mask secret keys for backup destination for view and edit in the UI + +### Additional fixes + +- RS60068 / RS59146 - Fixed unresolved endpoint due to PDNS issues +- RS52812 - Expand API wrapper to return API 405 errors as JSON/XML +- RS57666 - Fixed false shard migration message when the shard fails to bind the port +- RS57444, RS55294, RS4903 - Fixed false “backup finished successfully” message when the backup failed due to restricted access to the backup destination + +## Known limitations + +- RS63258 - Redis Enterprise Software 6.2.8 is not supported on RHEL 8 with FIPS enabled. + + FIPS changes system-generated keys, which can limit secure access to the cluster or the admin console via port 8443. + +- RS63375 - RHEL 7 clusters cannot be directly upgraded to RHEL 8 when hosting databases using modules. + + Due to binary differences in modules between the two operating systems, you cannot directly update RHEL 7 clusters to RHEL 8 when those clusters host databases using modules. Instead, you need to create a new cluster on RHEL 8 and then migrate existing data from your RHEL 7 cluster. This does not apply to clusters that do not use modules. + +All [known limitations]({{}}) from v6.2.4 have been fixed. + +## Security + +### Open source Redis security fix compatibility + +As part of its commitment to security, Redis Enterprise Software implements the latest [security fixes](https://github.com/redis/redis/releases) available with open source Redis. + +The following [open source Redis](https://github.com/redis/redis) [CVEs](https://github.com/redis/redis/security/advisories) do not affect Redis Enterprise: + +- [CVE-2021-32625](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-32625) - Redis Enterprise is not impacted by the CVE that was found and fixed in open source Redis since Redis Enterprise does not implement `LCS`. Additional information about the open source Redis fix is on [the Redis GitHub page](https://github.com/redis/redis/releases) (Redis 6.2.4, Redis 6.0.14) + +- [CVE-2021-32672](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-32672) - Redis Enterprise is not impacted by the CVE that was found and fixed in open source Redis because the LUA debugger is unsupported in Redis Enterprise. Additional information about the open source Redis fix is on [the Redis GitHub page](https://github.com/redis/redis/releases) (Redis 6.2.6, Redis 6.0.16) + +- [CVE-2021-32675](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-32675) - Redis Enterprise is not impacted by the CVE that was found and fixed in open source Redis because the proxy in Redis Enterprise does not forward unauthenticated requests. Additional information about the open source Redis fix is on [the Redis GitHub page](https://github.com/redis/redis/releases) (Redis 6.2.6, Redis 6.0.16) + +- [CVE-2021-32762](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-32762) - Redis Enterprise is not impacted by the CVE that was found and fixed in open source Redis because the memory allocator used in Redis Enterprise is not vulnerable. Additional information about the open source Redis fix is on [the Redis GitHub page](https://github.com/redis/redis/releases) (Redis 6.2.6, Redis 6.0.16) + +- [CVE-2021-41099](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-41099) - Redis Enterprise is not impacted by the CVE that was found and fixed in open source Redis because the proto-max-bulk-len CONFIG is blocked in Redis Enterprise. Additional information about the open source Redis fix is on [the Redis GitHub page](https://github.com/redis/redis/releases) (Redis 6.2.6, Redis 6.0.16) + +Some CVEs announced for Open Source Redis do not affect Redis Enterprise due to functionality that is either different from (or not available in) open source Redis. \ No newline at end of file diff --git a/static/images/rs/admin-console-menu.png b/static/images/rs/admin-console-menu.png new file mode 100755 index 0000000000000000000000000000000000000000..55bf84f941fe42cf8e02e5936bf3e9645b8c6a07 GIT binary patch literal 21051 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

xYQ;+HBdYZ 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 literal 0 HcmV?d00001 diff --git a/static/images/rs/database-configuration-periodic-backup.png b/static/images/rs/database-configuration-periodic-backup.png new file mode 100755 index 0000000000000000000000000000000000000000..413d87e1a6afbcac3fa9ad4a777842490619809d GIT binary patch literal 49080 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 z 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 literal 0 HcmV?d00001 diff --git a/static/images/rs/database-export-details-export-button.png b/static/images/rs/database-export-details-export-button.png new file mode 100755 index 0000000000000000000000000000000000000000..1d4c41fcf0e57430a2eb6fa5d35fbf975614a2d3 GIT binary patch literal 2312 zcmZ`*dpy&7AD?TR%W<8Yj+~jh+Qlul=04ik3=wL17>i+Z+04wP7nw*Wl2fiFi*6^? z6XFz-YYDk@h>+ZMR&t5r@NDYU>GhoF`MqA>-}iHSzki?a`}6(dm*M7mKwf5-3;+O- z$K$Xb!aYa0^nlXBHv;llAl$^59tZ3J6{ta$P+GxnY5*AgGPCybOke7BbMOtN;jy9?oE*IabhZ zVzkf}g%ME5b_pxY3hG02gE&M)Qz7PXGdL0|ghL>h=%8b053JKyxX`nLhOk(XXapiQ zHWnUh3Xg~mMi`?|CF9wZeE&SI1 z3V*?15F$0cQ|F8F+fkwPqA?=A%~9liy9-o?@B%~&CtaMZkpuuplkr$PPmZ6U2t?@f z)@W<6x?E-}Mp6V%7R?5|(cw^`^GMkY7hFFq6r=ajb_N!B4tajAw2Q73!^ls`L|=8# zXZF<^9y^sH=WbgfV|4PVm#x9_tM!IWcYS}i!jO)29Yo^5*4V_B;5}z+K*qKPX<>A? zuAY&|jM5@FX%DpcW0aC{k~1aliq3+WG(iUry!VG62&a1c_41a{Mn=*TG{yGGv=O~F zAG_((QRU@t#On(iIb5<6&o+B}CY18-^ao5N!?hjT%<&^gOQa?gH*(;4+3IS^po{>e ze;Sf)3AuXpjH7x-ESYDeC0n}Yh>!PM-}q>E>I3~3})58|}p zMadU#tL-kILA+;e``tFgMd2Q-m{PHul3zfiEVX;r*Q4W^wKtMt46 z?tdq1<}Dvl)6=xdjM_n>93F)ctcy8^mx{iK0 z-DVqv;2+d@n4swEdE$8`KfT@10ec8k?&sMU>xwGI~c<{sX zKSmvxc%{&;P5GF2QlGg$MR)PTSJ{W}vxWM-sWxTJ)WdIc6u=FdS5^WtFF^gLxMq`7 zm1I;?K)S`E%_)Z##Ck^NeAb=6+O$?RPG!oLKH+Vh)11&msWcvGaA+A%G#FYiwm*)M z=4IJ*Ig)sv7j@AmhcB2;ub)89$*+a=0-;z0;n~`bf~Q9;ZDwGV1Fy91Nvc=BmRN(4 z{Ed4%oL%x|rf6eq-vVb%#^@f>u#~xyQt(krW6$!RZKrxJeR4OY#~Sry7q;97to%w2 zc^mp#RUJzyZ_KV$uwSYYH#-_XTd*s=#PViSi#>&>JtkW@T90oD>JP=!X5#6xg~}d% zFEFY)xB2k-551n`_HJ>xf>eti~iix|WVuBT$* z?AHZ4xZDc2#Cu9pHdmf=4E$r1cfWmf5$J-7HX9TF>f$6M#!jbnKejB@y_aVhW`@=UC*M>yHi_FKK5_24?hQ=k zg_=4pS)>OnXvSKOGze%Ydy8a~(Aa2{bHgZ5B8oTCI8rgLzSw1-8t!7M4?1*)2z+v_ z@2usOv(opV%9Cub8b^ox2l|*}UH1F&ElU%Dm-Ro$1zRmnOr%R)KRNSToB~;8r_X&a z@7_#-CYVSbB9c$#pGeyvqy6%ufN^`&8lRUZ2QNQZ@Kbkr>#cIW&;MfPg_;3=Sm>4R zC4<=RBJ9yWe1W*4GC56&myhf=(pM-da}Bz4xGf$9)P+sUH$_4#rgJKeW1fzTP4p&Y zq&#y6A2eP8Qa)LV&AqocXnbUU9m0ugL@*1P_SkrrL~nxOs&j9a==~U&<=AYu_k8($ zH8DN?1ZXbG@&cAz=6kUCXX>5~w*T{5Kd?DxZuw9w z``MqmLqkJ?`3;wFu`@l|vwq9jNM#MsRbF}dr8Nbq)~uHKIt9GwcLeX~imkBsPx%im C|JQK}+Es`QqG9(qv` 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