Update the ActiveMQ Deployments
Updating the ActiveMQ Deployments
The architecture of the ActiveMQ deployment has changed as of release 2.11
. The changes to the architecture are:
The "Active/Passive" highly-available (HA) configuration is no longer available for new deployments. All new deployments are single-server deployment and have only one replica. The
HADeploy
deployment option has been removed from thecreate-or-delete-activemq-container
Jenkins job.All new ActiveMQ deployments now use Amazon’s Elastic File System (EFS) for persistent storage. In previous releases only the HA deployment used EFS while the single-server deployment used Elastic Block Storage (EBS) volumes.
This change is due to issues sharing the file-system between the active and passive ActiveMQ instances. These issues led to message data being improperly processed by ActiveMQ. For more information about the issue this addresses see the ActiveMQ Availability and Performance Blog Post.
While we recommend updating your ActiveMQ deployment to avoid potential data-processing issues, you may choose not to migrate your ActiveMQ deployment to a single instance architecture. Note that if you decide not to update to a single instance architecture:
You are not able to use the
create-or-delete-activemq-container
job to manage or update your ActiveMQ deployment.You are not able to update your ActiveMQ deployment to run as
non-root
and use Elastic Path Docker release4.2
or higher.
If you choose to update your ActiveMQ deployments to a single instance architecture, note that there are implementation changes that need to be applied to both highly-available (HA) deployments and single-instance deployments.
- Highly-Available (HA) deployments are ActiveMQ deployments that were deployed with the
HADeploy
selected (set totrue
) in thecreate-or-delete-activemq-container
Jenkins job. - Single-instance deployments are ActiveMQ deployments that were deployed with the
HADeploy
deselected (set tofalse
) in thecreate-or-delete-activemq-container
Jenkins job.
You can migrate existing HA ActiveMQ deployments from the Jenkins job through a multi-step confirmation process.
The process to update single-instance ActiveMQ deployments created with CloudOps for Kubernetes release 2.10
or earlier requires two steps.
- Delete the existing deployment.
- Create a new deployment.
Prerequisite
The steps in this document only apply and can only be performed after you have upgraded to CloudOps for Kubernetes release 2.11.x
or higher. For information about upgrading from release 2.10.x
to release 2.11.x
, see Update from version 2.10.0.
Updating a Single Instance ActiveMQ Deployment
Repeat the following steps for each of your single instance ActiveMQ deployments. These steps are required to create a single ActiveMQ instance with an Elastic File System (EFS) volume that uses the new non-root image and updated configuration.
Delete the old single instance ActiveMQ deployment.
Build the
create-or-delete-activemq-container
Jenkins job.Use the
kubernetesNickname
parameter set to the namespace of the previously deployed ActiveMQ deployment and the parameters that you previously used to run thecreate-or-delete-activemq-container
Jenkins job. Ensure that thedeleteContainer
parameter is set totrue
.Build the
create-or-delete-activemq-container
Jenkins job.Use the
kubernetesNickname
parameter set to the namespace of the previously deployed HA ActiveMQ deployment and the parameters that you previously used to run thecreate-or-delete-activemq-container
Jenkins job. Ensure that:- The
cloudOpsForKubernetesBranch
parameter is set to the new release branch. - The
dockerImageTag
is set to the same value as theimageTag
parameter from the Jenkins jobbuild-selected-docker-images
. - The
deleteContainer
parameter is set tofalse
.
- The
The Commerce services are updated as explained in the section Updating the Self Managed Commerce Stack.
Migrating a HA ActiveMQ Deployment
Repeat the following steps for each of your HA ActiveMQ deployments. These steps are required to migrate to a single ActiveMQ instance with an Elastic File System (EFS) volume.
note
This is a multi-step confirmation process.
Build the
create-or-delete-activemq-container
Jenkins job.Use the
kubernetesNickname
parameter set to the namespace of the previously deployed HA ActiveMQ deployment and the parameters that you previously used to run thecreate-or-delete-activemq-container
Jenkins job. Ensure that:- The
cloudOpsForKubernetesBranch
parameter is set to the new release branch. - The
dockerImageTag
is set to the same value as theimageTag
parameter from the Jenkins jobbuild-selected-docker-images
with release4.1.x
or earlier of the Elastic Path Docker repository. - The
containerUser
parameter is set toroot
.
- The
During the run, the
create-or-delete-activemq-container
Jenkins job is paused and you are prompted for confirmation before migrating your HA ActiveMQ deployment to a single instance deployment. SelectYes
to continue the migration.Immediately restart the Self Managed Commerce services that rely on the ActiveMQ deployment you just updated. This is required for those Self Managed Commerce in the
kubernetesNickname
namespace to properly use the updated ActiveMQ. For the instructions to restart the Self Managed Commerce services, see Restarting Self Managed Commerce Deployments.