Upgrading API Gateway with Zero Downtime
The migration procedure outlined below seamlessly migrates webMethods API Gateway applications from version 10.15 to version 11.1 while ensuring zero downtime. This task specifically outlines the migration process for webMethods API Gateway instances deployed with API Data Store and alongside an external Elasticsearch.
This procedure accommodates various scenarios, including:
- Migrating from single instance to another single instace
- Migrating from clustered setup to other clustered setup
Prerequisites:
- For migration of containerized webMethods API Gateway applications, download
the latest source and target webMethods API Gateway container images.
Note: The target webMethods API Gateway version must be higher than the source webMethods API Gateway.
- For migration of non-containerized webMethods API Gateway instances, install
latest fixes in both source and target webMethods API Gateway versions.Note: The target webMethods API Gateway version must be higher than the source webMethods API Gateway instance.
- Create a source Elasticsearch repository to back up the source webMethods API Gateway by following these steps:
- Configure the
path.repo
property in the Elasticsearch configuration file:In a non-containerized setup:
Configure the
path.repo
property in the configuration file located at ../InternalDataStore/config/elasticsearch.yml, if you are using the embedded elasticsearch, else, the elasticsearch.yml should be in elasticsearch/config.In a containerized setup:
Configure the
path.repo
property in the external Elasticsearch configuration file located at usr/share/elasticsearch/config.In Docker, add the following entry in theenvironment
configuration section of your Docker configuration:environment: - path.repo=path_to_your_backup_directory
In Kubernetes, add the following entry in theenvironment
configuration section of your Kubernetes configuration:environment: - name: path.repo value: path_to_your_backup_directory
This property specifies the directory where external Elasticsearch stores its backups. Ensure that external Elasticsearch has the required permissions to read from and write to the specified directory. You can modify this path to another directory of your choice.
A sample configuration to configure thepath.repo
property in Docker is as follows:environment: - path.repo=/usr/share/elasticsearch/backup
In this example, the backups are stored at
/usr/share/elasticsearch/backup
.Note: Use a shared volume to map the path specified bypath.repo
in both the source and target Elasticsearch instances. This ensures the target instance can access the stored backups. Alternatively, copy the generated backups to your desired directory and configurepath.repo
to point to that directory. - Create a file system repository with type
fs
using the external Elasticsearch snapshot API in the source external Elasticsearch instance, using the following command:PUT /_snapshot/{repositoryName} { "type": "fs", "settings": { "location": "path_to_your_backup_directory" } }
Replace
{repositoryName}
with your chosen repository name and ensure thelocation
field points to the desired directory where the backups are stored.Note: You may use this repository for future migrations. If you prefer to use the default repository names instead of specifying other names during migration, create repositories with the default names at this step. The default name for the core data repository ismigration-core-repo
, and the default name for the events and logs data repository ismigration-eventsandlogs-repo
. - Use the external Elasticsearch API to retrieve information about the registered
repositories using the following command:
GET /_snapshot/{repositoryName}
Replace
{repositoryName}
with your chosen repository name.This returns information about the
{repositoryName}
repository.
- Configure the
- Create a target lasticsearch repository to restore the backup in the target webMethods API Gateway instance by following
these steps:
- Configure the
path.repo
property in the Elasticsearch configuration file:In a non-containerized setup:
Configure the
path.repo
property in the configuration file located at ../InternalDataStore/config/elasticsearch.yml, if you are using the embedded elasticsearch, else, the elasticsearch.yml should be in elasticsearch/config.In a containerized setup:
Configure the
path.repo
property in the external Elasticsearch configuration file located at usr/share/elasticsearch/config.In Docker, add the following entry in theenvironment
configuration section of your Docker configuration:environment: - path.repo=path_to_your_backup_directory
In Kubernetes, add the following entry in theenvironment
configuration section of your Kubernetes configuration:environment: - name: path.repo value: path_to_your_backup_directory
This property specifies the directory where external Elasticsearch stores its backups. Ensure that external Elasticsearch has the required permissions to read from and write to the specified directory. You can modify this path to another directory of your choice.
A sample configuration to configure thepath.repo
property in Docker is as follows:environment: - path.repo=/usr/share/elasticsearch/backup
In this example, the backups are stored at
/usr/share/elasticsearch/backup
.Note: Use a shared volume to map the path specified bypath.repo
in both the source and target Elasticsearch instances. This ensures the target instance can access the stored backups. Alternatively, copy the generated backups to your desired directory and configurepath.repo
to point to that directory. - Create a file system repository with type
fs
using the external Elasticsearch snapshot API in the target external Elasticsearch instance and make it read-only for restoration, using the following command:PUT /_snapshot/{repositoryName} { "type": "fs", "settings": { "location": "path_to_your_backup_directory" "readonly": true } }
Replace
{repositoryName}
with your chosen repository name and ensure thelocation
field points to the desired directory where the backups are stored.Note: You may use this repository for future migrations. If you prefer to use the default repository names instead of specifying other names during migration, create repositories with the default names at this step. The default name for the core data repository ismigration-core-repo
, and the default name for the events and logs data repository ismigration-eventsandlogs-repo
. - Use the external Elasticsearch API to retrieve information about the registered
repositories using the following command:
GET /_snapshot/{repositoryName}
Replace
{repositoryName}
with your chosen repository name.This returns information about the
{repositoryName}
repository.
- Configure the
The following image illustrates the different stages of migration:

To migrate webMethods API Gateway instance