Zero downtime upgrade

The standard process to upgrade to API Gateway 7.6.2 involves a short period of downtime during the apply phase. With most .fed files, this downtime should not be more than a few minutes. However, with bigger .fed files of large and complex configurations, this downtime can be longer. This topic describes an approach you can take, and some sample scripts you can use as a reference, to achieve a zero downtime upgrade (ZDU) to API Gateway 7.6.2.

This approach involves the use of a load balancer to ensure that available API Gateways can always process traffic, and if you are using a DevOps framework, the ZDU sample scripts provide an example for a basic high availability (HA) deployment and an nginx load balancer, to help you understand the required steps. The ZDU sample scripts provide an example only, and although the scripts are somewhat configurable, you must adapt them for your specific needs.

The ZDU scripts package is available from Axway Support at https://support.axway.com. The package includes scripts for UNIX/Linux.

Note    
  • Use the ZDU sample scripts only for upgrading from API Gateway 7.5.2 or later to 7.6.2 when Cassandra contains all the shared data.
  • We recommend that you perform a full upgrade that is completed in a single attempt. Because shared data (in particular quota counts) are involved, it is possible that this data could degrade if an upgraded subset of the domain coexists with a non-upgraded subset for a significant period of time.

Reference configuration

The reference configuration is a three-node topology configured as follows:

  • Two Admin Node Managers, one on Node A and the other on Node C.
  • One Node Manager on Node B.
  • Each node runs a single API Gateway instance that are grouped as follows:
    • Gateway Group containing API Gateway instances on Node A and Node B.
    • GatewayManager Group containing a single API Gateway instance running API Manager.

Illustration on the ZDU scripts reference configuration

ZDU script package

The ZDU script package (for example, APIGateway_7.6.2_Package_ZDUScripts_linux-x86-64_BNYYYYMMDDn.zip) contains the following folders and files:

  • README.md: This file explains how the ZDU scripts work.
  • bin: This folder contains the zdupgrade shell script for use on UNIX/Linux.
  • config: This folder contains a topology.json file for a sample configuration.
  • scripts: This folder contains the individual sample scripts that the zdupgrade script uses. You can adapt these scripts to your specific needs.

Sample scripts

The following diagram shows the architecture.

ZDU scripts architecture

The following table describes the purpose of each sample script.

Script Description
command_builder.py

Generates the UNIX/Linux commands to be run (for example, sysupgrade commands, commands to start or stop processes).

command_executor.py

Executes commands on a node (for example, run a sysupgrade step, start or stop a process, check if a process is running, roll back). Requires command_builder and command_handler.

command_handler.py

Handles how commands are run on a node (for example, how to connect to remote nodes to run commands).

conductor.py

Orchestrates the zero downtime upgrade process (for example, connect to all nodes, run sysupgrade steps on each node in sequence, disconnect from all nodes, display a summary).

definitions.py

Defines variables used throughout the other scripts.

load_balancer.py

Placeholder script to implement load balancer logic (for example, to enable or disable traffic on a node).

logging_handler.py

Provides logging capabilities.

options_parser.py

Parses and validates command-line options.

rollback_helper.py

Analyzes errors generated during the ZDU process and determines if a roll-back is needed.

summary.py

Provides a summary of ZDU results per node and per upgrade phase.

topology_builder.py

Builds the topology information from the configuration file.

upgrade_steps.py

Implements the ZDU process steps on each node.

See the comments included in each script for more detailed information. For more information on using and running the scripts, see Use the ZDU scripts.

Related Links