type=page
status=published
title=Upgrading Applications Without Loss of Availability
next=session-persistence-and-failover.html
prev=http-load-balancing.html
~~~~~~

= Upgrading Applications Without Loss of Availability

[[GSHAG00010]][[abdik]]


[[upgrading-applications-without-loss-of-availability]]
== 8 Upgrading Applications Without Loss of Availability

Upgrading an application to a new version without loss of availability
to users is called a rolling upgrade. Carefully managing the two
versions of the application across the upgrade ensures that current
users of the application complete their tasks without interruption,
while new users transparently get the new version of the application.
With a rolling upgrade, users are unaware that the upgrade occurs.

For more information about application versions and how they are
identified, see "link:application-deployment-guide/overview.html#GSDPG00324[Module and Application Versions]" in
{productName} Application Deployment Guide.

In a clustered environment, a rolling upgrade redeploys an application
with a minimal loss of service and sessions. A session is any artifact
that can be replicated, for example:

* `HttpSession`
* `SingleSignOn`
* `ServletTimer`
* `DialogFragment`
* Stateful session bean

A rolling upgrade can take place under light to moderate loads. The
procedure requires about 10-15 minutes for each {productName}
instance.


[CAUTION]
====
To prevent the risk of version mismatch when a session fails over,
upgrade all instances in a cluster at the same time. Otherwise a session
might fail over to an instance where different versions of components
are running.
====


Perform this task on each cluster separately. A cluster acts as a safe
boundary for session failover for instances in the cluster. Sessions in
one cluster can never fail over to sessions in another cluster.
Therefore, the risk of version mismatch is avoided.

[[abdil]][[GSHAG00205]][[application-compatibility]]

=== Application Compatibility

Rolling upgrades pose varying degrees of difficulty depending on the
magnitude of changes between the two application versions.

If the changes are superficial, for example, changes to static text and
images, the two versions of the application are compatible and can both
run at once in the same cluster.

Compatible applications must:

* Use the same session information
* Use compatible database schemas
* Have generally compatible application-level business logic
* Use the same physical data source

You can perform a rolling upgrade of a compatible application in either
a single cluster or multiple clusters. For more information, see
link:#abdim[Upgrading In a Single Cluster].

If the two versions of an application do not meet all the above
criteria, then the applications are considered incompatible. Executing
incompatible versions of an application in one cluster can corrupt
application data and cause session failover to not function correctly.
The problems depend on the type and extent of the incompatibility. It is
good practice to upgrade an incompatible application by creating a
"shadow cluster" to which to deploy the new version and slowly quiesce
the old cluster and application. For more information, see
link:#abdio[Upgrading Incompatible Applications].

The application developer and administrator are the best people to
determine whether application versions are compatible. If in doubt,
assume that the versions are incompatible, since this is the safest
approach.

[[abdim]][[GSHAG00206]][[upgrading-in-a-single-cluster]]

=== Upgrading In a Single Cluster

You can perform a rolling upgrade of an application deployed to a single
cluster, providing the cluster's configuration is not shared with any
other cluster.

[[fxxvd]][[GSHAG00151]][[to-upgrade-an-application-in-a-single-cluster]]

==== To Upgrade an Application in a Single Cluster

1. Deploy the upgraded application to the cluster in a disabled state
and with a new version identifier. For example:
+
[source]
----
asadmin> asadmin deploy --enabled=false --target myCluster myApp:1.1
----

2. Perform the following steps for each server instance in the cluster.
[arabic]
.. Quiesce one server instance in the cluster from the load balancer.
   Follow these steps:
... Disable the server instance using `asadmin disable-http-lb-server.`
... Export the load balancer configuration file using
    `asadmin export-http-lb-config`.
... Copy the exported configuration file to the web server instance's
    configuration directory. +
    For example, for Sun Java System Web Server, the location is
    web-server-install-dir``/https-``host-name``/config/loadbalancer.xml``.
... Wait until the timeout has expired. +
    Monitor the load balancer's log file.
.. Enable the upgraded application version on the quiesced server instance. +
   For example:
+
[source]
----
asadmin> asadmin enable --target instance01 myApp:1.1
----
Enabling the upgraded application version automatically disables the previous version.
.. Test the upgraded application on the server instance to make sure it runs correctly.
.. Re-enable the server instance in load balancer. Follow these steps:
... Enable the server instance using `asadmin enable-http-lb-server.`
... Export the load balancer configuration file using
    `asadmin export-http-lb-config`.
... Copy the configuration file to the web server's configuration directory.

[[abdin]][[GSHAG00207]][[upgrading-in-multiple-clusters]]

=== Upgrading in Multiple Clusters

[[fxxvb]][[GSHAG00152]][[to-upgrade-a-compatible-application-in-two-or-more-clusters]]

==== To Upgrade a Compatible Application in Two or More Clusters

Repeat the following procedure for each cluster.

1. Deploy the upgraded application to one cluster in a disabled state
and with a new version identifier. For example:
+
[source]
----
asadmin> asadmin deploy --enabled=false --target myCluster myApp:1.1
----

2. Quiesce the cluster with the upgraded application from the load balancer.
[arabic]
.. Disable the cluster using `asadmin disable-http-lb-server`.
.. Export the load balancer configuration file using
`asadmin export-http-lb-config`.
.. Copy the exported configuration file to the web server instance's configuration directory. +
   For example, for Sun Java System Web Server, the location is
   web-server-install-dir``/https-``host-name``/config/loadbalancer.xml``.
.. Wait until the timeout has expired. +
   Monitor the load balancer's log file.

3. Enable the upgraded application version on the quiesced cluster. For example:
+
[source]
----
asadmin> asadmin enable --target myCluster myApp:1.1
----
Enabling the upgraded application version automatically disables the
previous version.

4. Test the upgraded application on the cluster to make sure it runs correctly.

5. Enable the cluster in the load balancer:
[arabic]
.. Enable the cluster using `asadmin enable-http-lb-server.`
.. Export the load balancer configuration file using
   `asadmin export-http-lb-config`.
.. Copy the configuration file to the web server's configuration directory.

[[abdio]][[GSHAG00208]][[upgrading-incompatible-applications]]

=== Upgrading Incompatible Applications

If the new version of the application is incompatible with the old
version, use the following procedure. For information on what makes
applications compatible, see link:#abdil[Application Compatibility].
Also, you must upgrade incompatible application in two or more clusters.
If you have only one cluster, create a "shadow cluster" for the upgrade,
as described below.

When upgrading an incompatible application:

* Give the new version of the application a different version identifier
from the old version of the application. The steps below assume that the
application has a new version identifier.
* If the data schemas are incompatible, use different physical data
sources after planning for data migration.
* Deploy the new version to a different cluster from the cluster where
the old version is deployed.
* Set an appropriately long timeout for the cluster running the old
application before you take it offline, because the requests for the
application won't fail over to the new cluster. These user sessions will
simply fail.

[[abdip]][[GSHAG00153]][[to-upgrade-an-incompatible-application-by-creating-a-second-cluster]]

==== To Upgrade an Incompatible Application by Creating a Second Cluster

1. Create a "shadow cluster" on the same or a different set of machines
as the existing cluster. If you already have a second cluster, skip this
step.
[arabic]
.. Use the Administration Console to create the new cluster and
   reference the existing cluster's named configuration. +
   Customize the ports for the new instances on each machine to avoid
   conflict with existing active ports.
.. For all resources associated with the cluster, add a resource
   reference to the newly created cluster using
   `asadmin create-resource-ref`.
.. Create a reference to all other applications deployed to the cluster
   (except the current upgraded application) from the newly created cluster
   using `asadmin create-application-ref`.
.. Configure the cluster to be highly available using
   `asadmin configure-ha-cluster`.
.. Create reference to the newly-created cluster in the load balancer
   configuration file using `asadmin create-http-lb-ref.`

2. Give the new version of the application a different version
identifier from the old version.

3. Deploy the new application version with the new cluster as the
target. Use a different context root or roots.

4. Start the new cluster while the other cluster is still running. +
The start causes the cluster to synchronize with the domain and be
updated with the new application.

5. Test the application on the new cluster to make sure it runs correctly.

6. Disable the old cluster from the load balancer using
`asadmin disable-http-lb-server`.

7. Set a timeout for how long lingering sessions survive.

8. Enable the new cluster from the load balancer using
`asadmin enable-http-lb-server`.

9. Export the load balancer configuration file using
`asadmin export-http-lb-config`.

10. Copy the exported configuration file to the web server instance's configuration directory. +
For example, for Sun Java System Web Server, the location is
web-server-install-dir``/https-``host-name``/config/loadbalancer.xml``.

11. After the timeout period expires or after all users of the old
application have exited, stop the old cluster and undeploy the old
application version.
