IBM Support

IBM MQ: Considerations for PortWorx 2.5.5

Troubleshooting


Problem

IBM MQ provides guidance on the functional capabilities for a file system and the testing a user should complete in their own environment. If a file system has been verified by the lab, or known issues identified, these are documented here.
This provides functional verification, but users often need to understand the performance characteristics and if any bottlenecks occur when scaling. The recommended approach is for users to complete a comprehensive performance test of their own environment to verify that it produces the desired behavior, and a stress test to understand the characteristics in extreme situations.
In the case of Portworx, we have identified several aspects that are important to consider and might affect the scalability and suitability of using Portworx with respect to multi-instance. Additionally, testing has been completed for single instance queue managers backed by multi-replica Portworx based PVs, which is an alternative configuration. 
Please note that IBM has completed testing on Portworx version 2.5.5 with stork version 2.4.2.1 and has verified that the core functionality exists to run IBM MQ multi-instance queue manager deployments at those levels. 
General Considerations
When using Portworx as the storage solution there are several general recommendations that should be followed: 
  • Regardless of deployment architecture, ensure that Portworx has been installed on an infrastructure that meets at least the minimum hardware requirements.
  • The use of a journal device is also recommended, because IBM MQ requires synchronous writes and the use of the journal device feature is noted as beneficial.
  • Portworx does not, at time of writing, have the ability to rate limit individual volumes. Applications such as IBM MQ have a dynamic IO footprint that depends on the workload. Under heavy loads the application grabs as much IO as it possibly can, which can impact other pods that are using Portworx PVs backed by the same Physical volumes in the "noisy neighbor" scenario. 
Multi-Instance Considerations 
  • Portworx Version: The first Portworx version supporting NFSv4 is 2.5.5. Any versions below this do not have the characteristics required for Multi-instance queue managers.
  • Deployment Architecture: Portworx describes two possible architectures for a Portworx installation.  With respect to multi-instance, MQ either make use of a Disaggregated deployment architecture, where the storage nodes are different to the compute nodes,  or MQ uses something akin to a Converged deployment architecture. In the latter case, you must have storageless nodes and you must ensure that the MQ Queue managers pods runs on those storageless nodes with the storage on the storage nodes.
  • Storage Class: there are various parameters that Portworx provides to customize storage classes for the different needs of a given application. IBM MQ multi-instance requires several parameters to be set in the storage class definition:
    • IBM MQ Multi-instance queue manager requires use of Portworx sharedv4 (ReadWriteMany) volumes. Therefore the following parameter needs to be set
      • sharedv4: “true”
    • IBM MQ Multi-instance queue manager failover behavior requires lease locking on a shared file and as such requires NFSv4. Therefore the following parameter needs to be set
      • nfs_v4 : “true” 
    • The io_profile parameter needs to be set to one that is synchronous. Portworx recommends the use of the following profile
      • io_profile: “db_remote”
  • Stork scheduler: Testing has been completed both with and without the Stork scheduler being explicitly set.  With respect to multi-instance and remote PVs, Stork did not appear to have an impact. However, with Stork specified during testing, no negative consequences were observed. 
  • Failover Time: Multi-instance allows for a slightly faster fail over when compared to that of single-instance. The failover time is the sum of the lease lock timeout plus a small amount of time for the Standby to become active.
Single-Instance Considerations 
An alternative approach for High Availability with Portworx is that of a single queue manager backed by a portworx volume with multiple replicas. In this setup, when an error scenario occurs, the Queue Manager pod is restarted or in the case of a node becoming unusable the pod is moved to an alternative node potentially in a different datacenter. 
  • Portworx Version: There are no known restrictions to the version of Portworx. However, as noted previously our testing was done with version 2.5.5 
  • Deployment Architecture: Portworx describes possible architectures for a Portworx installation. With respect to single-instance the recommend setup is to use a Converged deployment architecture with hyper-convergence.
  • Storage Class: there are various parameters that Portworx provides to customize storage classes for the different needs of a given application. IBM MQ single-instance requires a number of parameters to be set in the storage class definition
    • The io_profile parameter needs to be set to one that is synchronous. Portworx recommends the use of the following profile
      • io_profile: “db_remote”
  • Stork scheduler: use the stork scheduler to gain hyper-convergence.
  • Failover Time: Single-instance has a slower fail over when compared to that of multi-instance due to the detection and pod restart time.  As such this will roughly be the time for the error condition to be detected and the pod restarted on the existing or an alternative node, depending on the failure scenario.
     

Symptom

Cause

Environment

Diagnosing The Problem

Resolving The Problem

Document Location

Worldwide

[{"Line of Business":{"code":"LOB45","label":"Automation"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSYHRD","label":"IBM MQ"},"ARM Category":[{"code":"a8m0z00000008KJAAY","label":"Components and Features->High Availability (HA)"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Version(s)"}]

Document Information

Modified date:
14 October 2020

UID

ibm16346543