# Upgrade a Redis Enterprise Software cluster

```json metadata
{
  "schema_version": 2,
  "title": "Upgrade a Redis Enterprise Software cluster",
  "description": "Upgrade a Redis Enterprise Software cluster.",
  "categories": ["docs","operate","rs"],
  "tableOfContents": {"sections":[{"id":"supported-upgrade-paths","title":"Supported upgrade paths"},{"id":"upgrade-prerequisites","title":"Upgrade prerequisites"},{"id":"upgrade-cluster","title":"Upgrade cluster"}]}

,
  "codeExamples": []
}
```


## Supported upgrade paths

<span title="Check mark icon">&#x2705;</span> Supported – You can upgrade directly from the current Redis Software cluster version.

<span title="X icon">:x:</span> 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 7.2.x | Upgrade to Redis Software 7.4.x |  Upgrade to Redis Software 7.8.x | Upgrade to Redis Software 7.22.x | Upgrade to Redis Software 8.0.2-8.0.10 | Upgrade to Redis Software 8.0.16-8.0.20 | Upgrade to Redis Software 8.2.x |
|:-----------------------:|:----------------:|:----------------:|:----------------:|:----------------:|:----------------:|:----------------:|:----------------:|
| 6.0.x | <span title="Supported">&#x2705;</span> | <span title="Not supported">:x:</span> | <span title="Not supported">:x:</span> | <span title="Not supported">:x:</span> | <span title="Not supported">:x:</span> | <span title="Not supported">:x:</span> | <span title="Not supported">:x:</span> |
| 6.2.4<br />6.2.8 | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> | <span title="Not supported">:x:</span> | <span title="Not supported">:x:</span> | <span title="Not supported">:x:</span> | <span title="Not supported">:x:</span> | <span title="Not supported">:x:</span> |
| 6.2.10<br />6.2.12<br />6.2.18 | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> | <span title="Not supported">:x:</span> | <span title="Not supported">:x:</span> | <span title="Not supported">:x:</span> | <span title="Not supported">:x:</span> |
| 6.4.x | <span title="Supported">&#x2705;</span> |  <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> | <span title="Not supported">:x:</span> | <span title="Not supported">:x:</span> |
| 7.2.x | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> |
| 7.4.x | – | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> |
| 7.8.x | – | – | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> |
| 7.22.x | – | – | – | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> |
| 8.0.2<br />8.0.6<br />8.0.10 | – | – | – | – | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> |
| 8.0.16<br />8.0.18<br />8.0.20 | – | – | – | – | - | <span title="Supported">&#x2705;</span> | <span title="Supported">&#x2705;</span> |
| 8.2.x | – | – | – | – | – | – | <span title="Supported">&#x2705;</span> |


See the [Redis Enterprise Software product lifecycle](https://redis.io/docs/latest/operate/rs/installing-upgrading/product-lifecycle) for more information about release numbers and the end-of-life schedule.

## Upgrade prerequisites

Before upgrading a cluster:

- Verify access to [rlcheck](https://redis.io/docs/latest/operate/rs/references/cli-utilities/rlcheck) and [rladmin](https://redis.io/docs/latest/operate/rs/references/cli-utilities/rladmin#use-the-rladmin-shell) commands.

- Run [rlcheck](https://redis.io/docs/latest/operate/rs/references/cli-utilities/rlcheck) on each node and verify there are no issues:

    ```sh
    rlcheck
    ```

- Verify [maintenance mode](https://redis.io/docs/latest/operate/rs/clusters/maintenance-mode) is not enabled:

    1. On a node in the cluster, run [`rladmin status`](https://redis.io/docs/latest/operate/rs/references/cli-utilities/rladmin/status):

        ```sh
        rladmin status
        ```

    1. Review each node's `SHARDS` field. If the value is yellow, the node is in maintenance mode.

        ![](https://redis.io/docs/latest/images/rs/maintenance_mode.png)

    1. To deactivate maintenance mode on a node, run the following [`rladmin node maintenance_mode off`](https://redis.io/docs/latest/operate/rs/references/cli-utilities/rladmin/node/maintenance-mode#node-maintenance_mode-off) command. See [Deactivate maintenance mode](https://redis.io/docs/latest/operate/rs/clusters/maintenance-mode#deactivate-maintenance-mode) for additional details.

        ```sh
        rladmin node <node_id> maintenance_mode off
        ```

- Verify that you meet the upgrade path requirements for your desired cluster version and review the relevant [release notes](https://redis.io/docs/latest/operate/rs/release-notes/) for any preparation instructions.

- Avoid changing the database configuration or performing other cluster management operations during the upgrade process, as this might cause unexpected results.

- Upgrade the cluster's primary (master) node first. To identify the primary node, use one of the following methods:

    - **Nodes** screen in the new Cluster Manager UI (only available for Redis Enterprise versions 7.2 and later)

    - [`rladmin status nodes`](https://redis.io/docs/latest/operate/rs/references/cli-utilities/rladmin/status#status-nodes) command
    
    - [`GET /nodes/status`](https://redis.io/docs/latest/operate/rs/references/rest-api/requests/nodes/status#get-all-nodes-status) REST API request

## Upgrade cluster

Starting with the primary (master) node, follow these steps for every node in the cluster. To ensure cluster availability, upgrade each node separately.

1.  Verify node operation with the following commands:

    ``` shell
    $ rlcheck
    $ rladmin status extra all
    ```

2.  Download the Redis Enterprise Software installation package to the machine running the node from the Download Center on [https://cloud.redis.io](https://cloud.redis.io).  

3.  Extract the installation package:

    ```sh
    tar vxf <tarfile name>
    ```

    > [!NOTE]
    > You cannot change the installation path or the user during the upgrade.
    >

1.  Run the install command. See [installation script options](https://redis.io/docs/latest/operate/rs/installing-upgrading/install/install-script) for a list of command-line options you can add to the following command:

    ``` shell
    sudo ./install.sh
    ```

    The installation script automatically recognizes the upgrade and responds accordingly.

    The upgrade replaces all node processes, which might briefly interrupt any active connections.

2.  Verify the node was upgraded to the new version and is still operational:

    ``` shell
    $ rlcheck
    $ rladmin status extra all
    ```

3.  Visit the Cluster Manager UI.

    If the Cluster Manager UI was open in a web browser during the upgrade, refresh the browser to reload the console.

After all nodes are upgraded, the cluster is fully upgraded. Certain features introduced in the new version of Redis Enterprise Software only become available after upgrading the entire cluster.

After upgrading from version 6.0.x to 6.2.x, restart `cnm_exec` on each cluster node to enable more advanced state machine handling capabilities:

```sh
supervisorctl restart cnm_exec
```

