--- Title: Upgrade a cluster's operating system alwaysopen: false categories: - docs - operate - rs description: Upgrade a Redis Enterprise Software cluster's operating system to a later major version. linkTitle: Upgrade operating system toc: 'true' weight: 70 url: '/operate/rs/7.22/installing-upgrading/upgrading/upgrade-os/' --- To upgrade the operating system (OS) on a Redis Enterprise Software cluster to a later major version, perform a rolling upgrade. Because you upgrade one node at a time, you can upgrade your cluster's OS without downtime. ## Prerequisites Before you upgrade a cluster's operating system: 1. [Upgrade all nodes in the cluster]({{< relref "/operate/rs/7.22/installing-upgrading/upgrading/upgrade-cluster" >}}) to a Redis Enterprise Software version that supports the OS's current version and upgrade version. To learn which versions of Redis Enterprise Software support specific OS versions, see [Supported platforms]({{< relref "/operate/rs/7.22/references/supported-platforms#supported-platforms" >}}). 1. If the cluster contains any databases that use modules: 1. Update all nodes in the cluster to [Redis Enterprise Software version 7.2.4-52]({{< relref "/operate/rs/release-notes/rs-7-2-4-releases" >}}) or later before you upgrade the OS. 1. Check the status of modules using [`rladmin`]({{< relref "/operate/rs/7.22/references/cli-utilities/rladmin" >}}): ```sh rladmin status modules ``` The output lists the module versions installed on the cluster and the module versions used by existing databases: ```sh CLUSTER MODULES: MODULE VERSION RedisBloom 2.6.3 RediSearch 2 2.8.4 RedisGears 2.0.12 RedisGraph 2.10.12 RedisJSON 2.6.6 RedisTimeSeries 1.10.6 DATABASE MODULES: DB:ID NAME MODULE VERSION ARGS STATUS db:1 db1 RediSearch 2 2.6.9 PARTITIONS AUTO OK, OLD MODULE VERSION db:1 db1 RedisJSON 2.4.7 OK, OLD MODULE VERSION ``` 1. Upload module packages for the target OS version to a node in the existing cluster. See [Install a module on a cluster]({{< relref "/operate/oss_and_stack/stack-with-enterprise/install/add-module-to-cluster" >}}) for instructions. {{}} The uploaded module packages have the following requirements: - The module is compiled for the target OS version. - The module version matches the version currently used by databases. {{}} 1. If the cluster uses custom directories, make sure the OS upgrade version also supports custom directories, and specify the same custom directories during installation for all nodes. See [Customize installation directories]({{< relref "/operate/rs/7.22/installing-upgrading/install/customize-install-directories" >}}) for details. ## Perform OS rolling upgrade To upgrade the cluster's operating system, use one of the following rolling upgrade methods: - [Extra node method](#extra-node-upgrade) - recommended if you have additional resources available - [Replace node method](#replace-node-upgrade) - recommended if you cannot temporarily allocate additional resources ### Extra node upgrade method {#extra-node-upgrade} 1. Complete all [prerequisites](#prerequisites) before starting the rolling upgrade. 1. Create a node with the OS upgrade version. 1. [Install the cluster's current Redis Enterprise Software version]({{< relref "/operate/rs/7.22/installing-upgrading/install/install-on-linux" >}}) on the new node using the installation package for the OS upgrade version. 1. [Add the new node]({{< relref "/operate/rs/7.22/clusters/add-node" >}}) to the cluster. 1. If the [cluster uses DNS]({{}}), add the new node’s IP address to the DNS records. 1. [Remove one node]({{< relref "/operate/rs/7.22/clusters/remove-node#remove-a-node" >}}) running the earlier OS version from the cluster. 1. Repeat the previous steps until all nodes with the earlier OS version are removed. If the final node to remove from the cluster is the primary node, [demote it]({{}}) to a secondary node before you remove it. ### Replace node upgrade method {#replace-node-upgrade} 1. Complete all [prerequisites](#prerequisites) before starting the rolling upgrade. 1. [Remove a node]({{< relref "/operate/rs/7.22/clusters/remove-node#remove-a-node" >}}) with the earlier OS version from the cluster. 1. Uninstall Redis Enterprise Software from the removed node: ```sh sudo ./rl_uninstall.sh ``` 1. Either upgrade the existing node to the OS upgrade version, or create a new node with the OS upgrade version. 1. [Install the cluster's current Redis Enterprise Software version]({{< relref "/operate/rs/7.22/installing-upgrading/install/install-on-linux" >}}) on the upgraded node using the installation package for the OS upgrade version. 1. [Add the new node]({{< relref "/operate/rs/7.22/clusters/add-node" >}}) to the cluster. If you want to reuse the removed node's ID when you add the node to the cluster, run [`rladmin cluster join`]({{< relref "/operate/rs/7.22/references/cli-utilities/rladmin/cluster/join" >}}) with the `replace_node` flag: ```sh rladmin cluster join nodes username password replace_node ``` 1. If the [cluster uses DNS]({{}}), add the new node’s IP address to the DNS records. 1. Verify node health: 1. Run `rlcheck` on all nodes: ```sh rlcheck ``` The output lists the result of each verification test: ```sh ##### Welcome to Redis Enterprise Cluster settings verification utility #### Running test: verify_bootstrap_status PASS ... Running test: verify_encrypted_gossip PASS Summary: ------- ALL TESTS PASSED. ``` For healthy nodes, the expected output is `ALL TESTS PASSED`. 1. Run [`rladmin status`]({{< relref "/operate/rs/7.22/references/cli-utilities/rladmin/status" >}}) on the new node: ```sh rladmin status extra all ``` The expected output is the `OK` status for the cluster, nodes, endpoints, and shards: ```sh CLUSTER: OK. Cluster master: 2 () Cluster health: OK, [0, 0.0, 0.0] failures/minute - avg1 0.00, avg15 0.00, avg60 0.00. ... ``` 1. Repeat the previous steps until all nodes with the earlier OS version are replaced. If the final node to remove from the cluster is the primary node, [demote it]({{}}) to a secondary node before you remove it.