---
title:  Planning an Upgrade
---

<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

Before you upgrade your system, back it up.  Make backup copies of all existing disk-stores,
server-side code, configuration files, and data across the entire cluster.  To get a backup of the
data that includes the most recent changes may require that traffic across the cluster is stopped
before the backup is made.
The discussion at [Creating Backups for System Recovery and Operational Management](../../managing/disk_storage/backup_restore_disk_store.html#backup_restore_disk_store)
explains the process, and the
[backup disk-store](../../tools_modules/gfsh/command-pages/backup.html) command reference page describes
how to use the `gfsh backup disk-store` command to make a backup.

## <a id="guidelines-upgrading" class="no-quick-link"></a>Guidelines for Upgrading

-   Schedule your upgrade during a period of low user activity for your system and network.
-   Verify that the machines hosting the cluster members meet the [Host Machine Requirements](../system_requirements/host_machine.html) of the upgraded cluster.
-   **Important:** After all locators have been upgraded, *do not start or restart any processes* that use the older version of the software. The older process will either not be allowed to join the cluster or, if allowed to join, can potentially cause a deadlock.
-   Verify that all members that you wish to upgrade are members of the same cluster.
A list of cluster members will be output with the `gfsh` command:

    ``` pre
    gfsh>list members
    ```

-   Locate a copy of your system's startup script, if your site has one (most do). The startup script can be a handy reference for restarting upgraded locators and servers with the same `gfsh` command lines that were used in your current installation.

- Identify how your current cluster configuration was specified. The way in which your cluster
  configuration was created determines which commands you use to save and restore that cluster
  configuration during the upgrade procedure.  There are two possibilites:

  - With `gfsh` commands, relying on the underlying **cluster configuration service** to record the configuration: see [Exporting and Importing Cluster Configurations](../../configuring/cluster_config/export-import.html).
  - With **XML properties** specified through the Java API or configuration files: see [Deploying Configuration Files without the Cluster Configuration Service](../../configuring/running/deploying_config_files.html).

-   Do not modify region attributes or data, either via `gfsh` or `cache.xml` configuration, during the upgrade process.

-   If possible, follow the [Rolling Upgrade](upgrade_rolling.html) procedure.  A multi-site
installation can also do rolling upgrades within each site.  If a rolling upgrade is not possible,
follow the [Off-Line Upgrade](upgrade_offline.html) procedure.
A rolling upgrade is not possible for a cluster that has partitioned regions without redundancy.
Without the redundancy, region entries will be lost when individual servers are taken out of the
cluster during a rolling upgrade.

## <a id="version_compatibilities" class="no-quick-link"></a>Version Compatibilities

Your choice of upgrade procedure depends, in part, on the versions of <%=vars.product_name_long%> involved.

- **Version Compatibility Between Peers and Cache Servers**

    For best reliability and performance, all server components of a <%=vars.product_name%> system should run the same version of the software.
    For the purposes of a rolling upgrade, you can have peers or cache servers running different minor
    versions of <%=vars.product_name_long%> at the same time, as long as the major version is the same. For example,
    some components can continue to run under version <%=vars.product_version_old_minor%> while you are in the process of upgrading to
    version <%=vars.product_version%>.

- **Version Compatibility Between Clients and Servers**

    Client/server access is backward compatible. An <%=vars.product_name_long%> cluster can be accessed by clients using any previous version. However, clients
    cannot connect to servers running older versions of <%=vars.product_name_long%>. For example, a client running <%=vars.product_name_long%> <%=vars.product_version_old_minor%> can access a cluster
    running <%=vars.product_name_long%> <%=vars.product_version%>, but a client running <%=vars.product_name_long%> <%=vars.product_version%> could not connect to a cluster running <%=vars.product_name_long%> <%=vars.product_version_old_minor%>.

- **Version Compatibility Between Sites in Multi-Site (WAN) Deployments**

    In multi-site (WAN) deployments, sites should still be able to communicate with one another, even if they use different versions.
