SlideShare a Scribd company logo
Building a resilient and scalable
solution with IBM MQ on z/OS
Matt Leming
Architect, MQ on z/OS
2
-Why you need scalability and resilience
-Queue sharing groups
-Achieving consistent configuration
-Connectivity
-Application considerations
-Resilience
-Putting it all together
-A comparison with uniform clusters
© 2019 IBM Corporation3
App
© 2019 IBM Corporation4
App App App App App App
decoupled
© 2019 IBM Corporation
Queue Manager Queue Manager Queue Manager Queue Manager
Queue Manager Queue Manager Queue Manager Queue Manager
Queue Manager Queue Manager Queue Manager Queue Manager
Queue Manager Queue Manager Queue Manager Queue Manager
Scaling
5
Single Multiple
Queue Manager
Queue Manager Queue Manager Queue Manager Queue Manager Queue Manager
Queue Manager Queue Manager Queue Manager Queue Manager
x1x4 x1x2x3x4x5x6x7x8xn
© 2019 IBM Corporation
Fault Toleration
6
Queue Manager
Single
Queue Manager Queue Manager Queue Manager Queue Manager
Multiple
100%
0%
100%
0%
availabilityavailability
© 2019 IBM Corporation
Single vs. Multiple
7
Single
o Simple
o Invisible to applications
o Limited by maximum system size
o Liable to hit internal limits
o Not all aspects scale linearly
o Restart times can grow
o Every outage is high impact
Multiple
o Unlimited by system size
o All aspects scale linearly
o More suited to cloud scaling
o Reduced restart times
o Enables rolling upgrades
o Tolerate partial failures
o Potentially more complicated
o Needs to, and should be, planned for
Queue Manager Queue Manager Queue Manager Queue Manager
Queue Manager
© 2019 IBM Corporation
Queue Manager Queue Manager Queue Manager
It’s not just the queue managers…
8
Client Client Client
Step 1
Horizontally scale the application into multiple instances, all
performing the same role
A queue manager works better when there are multiple
applications working in parallel Queue Manager
Step 2
Horizontally scale the queue managers
Create multiple queue managers with the ‘same’ configuration
Distribute the application instances across the queue managers
Client Client Client Client Client Client
Queue Manager Queue Manager Queue Manager
© 2019 IBM Corporation
9
Queue sharing groups
© 2019 IBM Corporation
Private queues – a recap
10
Private queues are defined to individual queue
managers
On z/OS messages are held in memory in buffer
pools and where necessary stored on disk in a page
set
Persistent messages are logged
Queue Manager
Page set
Logs
Buffer
pool
© 2019 IBM Corporation
Private queues – a recap
11
Messages can only be accessed by the owning
queue manager
If the queue manager fails messages are lost if non-
persistent, or unavailable until the queue manager
restarts if persistent
On distributed MQ all queues are implicitly private…
Queue Manager
Page set
Logs
Buffer
pool
© 2019 IBM Corporation
Shared queues
12
Shared queues are defined to a set of related queue
managers – a queue sharing group
Messages are stored in a coupling facility, in a
memory structure called a list structure
As before, persistent messages are logged
The messages can be accessed by any queue
manager in the group
Queue Manager
Queue Manager
Queue Manager Queue Manager
Coupling Facility
© 2019 IBM Corporation
Shared queues
13
Apps connect to the group rather than an individual
queue manager
If an individual queue manager in the group isn’t
running messages in the shared queue are still
available to apps via the remaining queue
managers in the group
Queue managers in a queue sharing group can also
have private queues Queue Manager
Coupling Facility
App App App
App App
Queue Manager
Queue Manager Queue Manager
© 2019 IBM Corporation
Shared queues - benefits
14
Resilient: existing messages are available to apps,
and new messages can be put, for as long as one
queue manager is available
Scalable: throughput can push past the capacity of
a single queue manager
Simple: no need to balance messages, and
applications, across a set of private queues, or
worry about marooned messages Queue Manager
Coupling Facility
App App App
App App
Queue Manager
Queue Manager Queue Manager
© 2019 IBM Corporation
15
Achieving consistent
configuration
© 2019 IBM Corporation
Consistent configuration
16
A queue sharing group environment should consist
of a set of identically configured queue managers
Queue ManagerQueue ManagerQueue Manager
© 2019 IBM Corporation
Consistent configuration
17
A queue sharing group environment should consist
of a set of identically configured queue managers
Luckily this is easy to achieve with queue sharing
groups Coupling Facility
Queue Manager
Queue ManagerQueue Manager
© 2019 IBM Corporation
Consistent configuration - steps
18
When defining your logs, page sets, BSDS, etc. use
the same set of JCL for each queue manager,
ensuring that data set names contain the name of
both the queue sharing group and the queue
manager
The only thing you should be changing in the JCL
when moving to another queue manager is the
queue manager name
DEFINE CLUSTER
(NAME(MQM.QSG1.QM1.PS.PSID00)
RECORDS(1000 500)
LINEAR SHAREOPTIONS(2 3) )
DATA
(NAME(MQM.QSG1.QM1.PS.PSID00.DATA) )
© 2019 IBM Corporation
Consistent configuration - steps
19
Keep the JCL in version control, it makes it easier to
find, back up and track changes
Having the queue sharing group name in the data
set name makes it easy to apply consistent policies
for zHyperWrite, compression, and data set
encryption across the whole queue sharing group
DEFINE CLUSTER
(NAME(MQM.QSG1.QM1.PS.PSID00)
RECORDS(1000 500)
LINEAR SHAREOPTIONS(2 3) )
DATA
(NAME(MQM.QSG1.QM1.PS.PSID00.DATA) )
© 2019 IBM Corporation
ARVP
Consistent configuration - steps
20
Use a common source for the various CSQ6*
macros when building the system parameters for all
your queue managers
Keep the source in version control
Watch ARCPFX1 and ARCPFX2, in CSQ6ARVP,
which need to be different for each queue manager
SYSP LOGP
ARVP USGP
Queue Manager Queue ManagerQueue Manager
© 2019 IBM Corporation
Consistent configuration - steps
21
Use a common source for the CSQINP* datasets
you use to configure your queue managers
Keep the source in version control
Use shared queues instead of private queues
DEF QL(APP1.Q) QSGDISP(SHARED)
CFSTRUCT(APPSTRUC1)
APP1.Q
© 2019 IBM Corporation
Consistent configuration - steps
22
Define other object types to the queue sharing
group rather than to individual queue managers
This is done using the QSGDISP(GROUP) parameter
The definition of the object is then held in a shared
repository
Each queue manager caches a local definition Coupling Facility
DEF TOPIC(FRUIT) QSGDISP(GROUP)
TOPICSTR(‘FRUIT’)
Shared Repository
FruitFruitFruitFruit
Queue Manager
Queue ManagerQueue Manager
© 2019 IBM Corporation
Consistent configuration - steps
23
Define other object types to the queue sharing
group rather than to individual queue managers
This is done using the QSGDISP(GROUP) parameter
The definition of the object is then held in a shared
repository
Each queue manager caches a local definition
NB: Can’t do this with DEFINE SUB so use
CMDSCOPE(*) instead
Coupling Facility
DEF TOPIC(FRUIT) QSGDISP(GROUP)
TOPICSTR(‘FRUIT’)
Shared Repository
Fruit
Queue Manager
Queue ManagerQueue Manager
Fruit
Fruit
Fruit
© 2019 IBM Corporation
Consistent configuration - steps
24
When configuring security profiles use the queue
sharing group name in RACF profiles instead of the
name of the individual queue manager
RDEFINE MQQUEUE QSG1.APP1.Q
© 2019 IBM Corporation
25
Connectivity
© 2019 IBM Corporation
Connectivity
26
Apps should never specify a specific queue
manager name when connecting to MQ
Doing so requires a recompile if the queue manager
changes, making your environment brittle, and
making it hard to adopt technologies such as queue
sharing groups
MQ2
MQ1 MQ3
Coupling Facility
App App App
MQCONN(MQ1) MQCONN(MQ2) MQCONN(MQ3)
© 2019 IBM Corporation
LPAR
Local apps
27
Apps should connect to the queue sharing group
rather than to a specific queue manager
For apps which make cross-memory connections
you should ensure that there are at least two queue
managers in the queue sharing group available on
each LPAR, providing availability should one of the
queue managers fail
This capability is available for apps running in
batch, CICS and JEE environments
Coupling Facility
Shared repository
App App
Queue Manager
Queue ManagerQueue Manager
© 2019 IBM Corporation
Local apps – default queue manager
28
The following options are available to prevent
hardcoding of queue manager names for local apps
Apps running in batch environments can connect to
the default queue manager. The default queue
manager can be specified for each app using the
CSQBDEF macro
JMS apps can hold connection factory definitions in
JNDI allowing the definition to be changed without
changing the app
LPAR
Coupling Facility
Shared repository
App App
Queue Manager
Queue ManagerQueue Manager
MQCONN(“”)
CSQBDEFCSQBDEF
© 2019 IBM Corporation
Local apps – default queue manager
29
In CICS the MQCONN resource holds the name of
the queue manager or queue sharing group to
connect to so apps don’t need to specify it anyway
In IMS the CSQQDEFV module allows a default
queue manager to be specified, but this can’t be a
queue sharing group
LPAR
Coupling Facility
Shared repository
App App
Queue Manager
Queue ManagerQueue Manager
MQCONN(“”)
CSQBDEFCSQBDEF
© 2019 IBM Corporation
Remote apps
30
Apps should connect to the queue sharing group
rather than a specific queue manager
For apps which connect to MQ over a network
something is needed to spread connections across
the available queue managers
Several approaches are available:
-Sysplex Distributor
-A workload balancer / IP sprayer
-CCDTs
App App App App App
?
Coupling Facility
Queue Manager
Queue ManagerQueue Manager
© 2019 IBM Corporation
Sysplex Distributor
31
Sysplex Distributor allows each queue manager in
the queue sharing group to listen on the same IP
address and port
If multiple queue managers exist on the same LPAR
then they can use a shared port
Sysplex Distributor spreads connections across the
queue managers based on configured workload
management policies
Coupling Facility
App App App App App
Sysplex Distributor
Queue Manager Queue Manager
Shared port
LPAR
Queue Manager Queue Manager
Shared port
LPAR
© 2019 IBM Corporation
Sysplex Distributor
32
Sysplex Distributor relies on a “routing” network
stack on a single LPAR distributing the connections.
If the “routing” stack fails, the responsibility is
moved to another LPAR
This is transparent to existing connections!
Coupling Facility
App App App App App
Sysplex Distributor
Queue Manager Queue Manager
Shared port
LPAR
Queue Manager Queue Manager
Shared port
LPAR
© 2019 IBM Corporation
CCDT
33
CCDTs contain configuration information which is
used to define a client channel
MQ clients use this information to connect to a
single queue manager, or a group of queue
managers
App App App
{
“channel”:[
{
“name”:”TO.QSG1”,
”queueManager”:”QSG1”
},
{
“name”:”TO.QSG1”,
”queueManager”:”QSG1”
},
]
}
MQCONN(*QSG1)
Queue Manager
Coupling Facility
Queue Manager Queue Manager
Shared port
LPAR
Queue Manager Queue Manager
Shared port
LPAR
© 2019 IBM Corporation
CCDT
34
CCDTs also provide the ability to randomize where
connections are made
This provides the ability to spread work over a
queue sharing group
In MQ 9.1.2 this was made easier with JSON
format CCDTs as each queue manager can be
configured with the same server-connection
channel definition
App App App
{
“channel”:[
{
“name”:”TO.QSG1”,
”queueManager”:”QSG1”
},
{
“name”:”TO.QSG1”,
”queueManager”:”QSG1”
},
]
}
MQCONN(*QSG1)
Queue Manager
Coupling Facility
Queue Manager Queue Manager
Shared port
LPAR
Queue Manager Queue Manager
Shared port
LPAR
© 2019 IBM Corporation
37
Application considerations
© 2019 IBM Corporation
Application considerations
38
The MQ APIs are generally the same regardless of
whether you are connected to a single queue
manager, or a queue sharing group
However moving an app to using a queue sharing
group is typically not an isolated project, it is often
part of a wider effort to improve a system’s
resilience that includes other subsystems such as
CICS, Db2, IMS etc.
The main challenges are often affinities…
App
© 2019 IBM Corporation
Affinities
39
An affinity is a coupling between two otherwise
separate actions
For example if an app uses the information in one
message to generate some state which is stored in
local memory, and then updates that state using
the information in a second message there is an
affinity between the two messages
App
Queue Manager
20
10
x = 0x = 20
© 2019 IBM Corporation
Affinities
40
An affinity is a coupling between two otherwise
separate actions
For example if an app uses the information in one
message to generate some state which is stored in
local memory, and then updates that state using
the information in a second message there is an
affinity between the two messages
App
Queue Manager
20
10
x = 20
© 2019 IBM Corporation
Affinities
41
App
Queue Manager
20 10
x = 30
An affinity is a coupling between two otherwise
separate actions
For example if an app uses the information in one
message to generate some state which is stored in
local memory, and then updates that state using
the information in a second message there is an
affinity between the two messages
© 2019 IBM Corporation
Affinities
42
Affinities make it hard to use technologies like
shared queues as well as parallel sysplex in general
Affinities also cause challenges when using MQ
clusters too, so it’s a wider challenge!
App
Queue Manager
20 10
x = 30
© 2019 IBM Corporation
Affinities
43
In the previous example, what if the first and
second messages were got by different app
instances on different LPARs?
While this affinity can easily be solved, for example
by putting the state in the database, its better to try
and avoid affinities as much as possible
Where they are necessary assume that at some
point in the future your app is going to need to run
multiple (collaborating) instances across multiple
LPARs, and design your app with that in mind
App
Queue Manager
x = 20
20
App
10
x = 10
© 2019 IBM Corporation
Enforcing serialized processing
44
Ideally it would always be possible to have multiple
apps processing the messages from a given queue
as that gives the greatest ability to scale
However sometimes strict message ordering needs
to be maintained
A simple way of achieving this is to define the
queue with NOSHARE, or using the
MQOO_INPUT_EXCLUSIVE option
However this doesn’t guarantee strict message
ordering when getting messages under synch-point
as the exclusivity is only available until the app
closes the queue
It also doesn’t help if messages on the queue are
partitioned, perhaps by correlation id, or if multiple
queues are being used
App
Queue Manager
App
NOSHARE
MQRC_OBJECT_IN_USE
© 2019 IBM Corporation
Enforcing serialized processing
45
An alternative approach is to use connection tags
Each app type that needs serialization has its own
connection tag (an arbitrary byte string)
When the app connects in it passes a flag indicating
how it wants to be serialized:
MQCNO_SERIALIZE_CONN_TAG_QSG tag can’t be
in use at the same time anywhere in the queue
sharing group
MQCNO_RESTRICT_CONN_TAG_QSG tag can only
be used on different connections if each connection
comes from same address space
If the original app instance fails, the tag remains in
place until any associated units-of-work are
resolved, preserving message order
App App
CONNTAG=APP1
App App
CONNTAG=APP2
Coupling Facility
Queue Manager
Queue ManagerQueue Manager
© 2019 IBM Corporation
48
Resilience
© 2019 IBM Corporation
Resilient/Reliable Failover Capable Fault Tolerant Continuous Availability
Data
High
Availability
• Shared Queues – Queue managers
are connected via a Coupling Facility.
Application requests for a service are
held in the CF and available to all
connected queue managers. If an
individual queue manager is unavailable
for any reason, new and existing
messages are available to the rest of the
queue managers
Service High
Availability
• Clustering - Application requests for a
service are spread among a cluster of
queue managers. If a queue manager
fails, new requests are routed to
surviving queue managers allowing the
service to continue to be available,
eliminating SPoFs for message driven
services. Existing messages on the failed
queue manager aren't available until it is
back online
• Clustering - Application requests for a
service are spread among a cluster of
queue managers. If a queue manager
fails, new requests are routed to
surviving queue managers allowing the
service to continue to be available,
eliminating SPoFs for message driven
services. Existing messages on the failed
queue manager aren't available until it is
back online
Enhanced
Data
Recovery
• Data replication – MQ active log
datasets can be mirrored to a
secondary storage subsystem using
data replication. zHyperwrite support
improves performance
• Data replication – MQ active log datasets
can be mirrored to a secondary storage
subsystem using data replication.
zHyperwrite support improves
performance
• Data replication – MQ active log
datasets can be mirrored to a secondary
storage subsystem using data
replication. zHyperwrite support
improves performance
Data
Recovery
• Logging – MQ records all significant
changes to persistent data in a
recovery log. Dual logging offers
protection against data loss.
• Archiving – Logs automatically
archived to secondary storage (tape or
DASD)
• Logging – MQ records all significant
changes to persistent data in a
recovery log. Dual logging offers
protection against data loss.
• Archiving – Logs automatically
archived to secondary storage (tape or
DASD)
• Logging – MQ records all significant
changes to persistent data in a recovery
log. Dual logging offers protection
against data loss.
• Archiving – Logs automatically archived
to secondary storage (tape or DASD)
• Logging – MQ records all significant
changes to persistent data in a recovery
log. Dual logging offers protection
against data loss.
• Archiving – Logs automatically archived
to secondary storage (tape or DASD)
High Risk and Impact Medium Risk and Impact Low Risk and Impact Minimal Risk and Impact
IBM MQ for z/OS provides capabilities to ensure your connectivity never lets you down
© 2019 IBM Corporation
Coupling Facility
Queue Manager
Queue ManagerQueue Manager
Resilience to queue manager failure
50
Persistent and non-persistent messages on shared
queues are available via other queue managers in
the group if individual queue managers fail
App
If client apps are using automatic client reconnect
then the failure can be entirely transparent to them
Alternatively, applications can detect the
connection error and reconnect to the group and
carry on processing
© 2019 IBM Corporation
Resilience to queue manager failure
51
Persistent and non-persistent messages on shared
queues are available via other queue managers in
the group if individual queue managers fail
Coupling Facility
If client apps are using automatic client reconnect
then the failure can be entirely transparent to them
Alternatively, applications can detect the
connection error and reconnect to the group and
carry on processing
Note that non-persistent messages are not lost
even all queue managers in the group fail!
App AppApp
Coupling Facility
Queue Manager
Queue ManagerQueue Manager
© 2019 IBM Corporation
Transaction recovery
52
When apps fail, the queue manager and app
runtime environment cooperate to ensure that
inflight transactions are either committed, or rolled
back
This happens regardless of whether shared queues
are being used or not
Rolling back the transaction, if necessary, allows
other instances of the app to process the messages
Queue Manager Queue Manager
Coupling Facility
App
?
?
© 2019 IBM Corporation
Peer recovery
53
Queue Manager Queue Manager
Coupling Facility
App
This is achieved using peer recovery – other queue
managers in the group use information in the
coupling facility and the failed queue manager’s
logs to rollback, or commit messages as
appropriate allowing the app to carry on processing
If a queue manager fails while an app was using
shared queues the aim is for the app to be able to
carry on processing as quickly as possible
?
?
© 2019 IBM Corporation
Group UR
54
In some cases the app runtime environment (CICS
or WAS) own the transaction state and must
cooperate with MQ to correctly resolve the
transaction
Traditionally the queue manager that the app was
interacting with owned this information, which
meant it needed to be restarted to recover the
transaction
This can delay recovery
Queue Manager Queue Manager
Coupling Facility
?
?
WAS
App
© 2019 IBM Corporation
Group UR
55
Group units of recovery can be enabled on the
queue managers in the group
This allows transaction state to be owned by the
queue sharing group, instead of the individual
queue manager
In the event of a queue manager failure the app
runtime environment can then connect to another
queue manager in the group and resolve the
transaction
Allowing the app to carry on processing
Queue Manager Queue Manager
Coupling Facility
?
?
WAS
App
ALTER QMGR GROUPUR(ENABLED)
© 2019 IBM Corporation
Resilience to structure failure
56
The structures used to store shared queues are
highly resilient to failure as they run in a coupling
facility, and coupling facilities don’t contain any
application code
It is possible to increase this failure isolation by
using dedicated hardware for coupling facilities
Queue Manager Queue Manager
Coupling Facility
If a structure does fail then any non-persistent
messages stored in the structure are lost
Persistent messages can be restored from a backup
in a queue manager’s logs using the RECOVER
CFSTRUCT command, this can be done manually or
automatically by MQ
RECOVER CFSTRUCT
© 2019 IBM Corporation
Resilience to coupling facility failure
57
The network links between queue managers and
coupling facilities can fail, or indeed the coupling
facility itself can fail
A total failure of network links is treated the same
as a failure of a coupling facility by MQ
If this situation is detected then MQ will attempt to
reconnect to the coupling facility which might result
in an alternate coupling facility being used
As before, persistent messages can be restored
from a backup in a queue manager’s logs using the
RECOVER CFSTRUCT command, this can be done
manually or automatically by MQ
Queue Manager Queue Manager
Coupling Facility
RECOVER CFSTRUCT
Coupling Facility
Coupling Facility
© 2019 IBM Corporation
Resilience to coupling facility failure
58
The network links between queue managers and
coupling facilities can fail, or indeed the coupling
facility itself can fail
If some network links fail, and only a subset of
queue managers loose access to the coupling
facility the queue managers will request that the
contents of the shared queues are copied to a
coupling facility to which all queue managers can
access
In this case non-persistent and persistent
messages are preserved, and apps just experience
a brief delay while the messages are copied
Queue Manager Queue Manager
Coupling Facility
Coupling Facility
Coupling Facility
© 2019 IBM Corporation
Resilience to coupling facility failure - duplexing
59
z/OS also provide coupling facility duplexing where
each write operation to a primary coupling facility is
synchronously replicated to a backup
If the primary coupling facility fails, the backup
transparently becomes the primary without MQ, or
apps, being aware
Queue Manager Queue Manager
Coupling Facility
Coupling Facility
Coupling Facility
© 2019 IBM Corporation
Resilience to coupling facility failure - duplexing
60
z/OS also provide coupling facility duplexing where
each write operation to a primary coupling facility is
synchronously replicated to a backup
If the primary coupling facility fails the backup
transparently becomes the primary without MQ, or
apps, being aware
While providing an extremely high level of resilience
this approach needs to be balanced against the
higher CPU cost and extra latency it introduces on
every single write operation
In many cases the automatic recovery, and
connectivity loss tolerance, provided by MQ is
sufficient
Queue Manager Queue Manager
Coupling Facility
Coupling Facility
Coupling Facility
© 2019 IBM Corporation
Resilience to application failure
61
Queues are designed for temporary storage of data
being exchanged between apps, allowing the apps
to be decoupled and scale independently
Queue Manager
App App
© 2019 IBM Corporation
Resilience to application failure
62
Queues are designed for temporary storage of data
being exchanged between apps, allowing the apps
to be decoupled and scale independently
Queue Manager
App
Should a getting app fail the queue can act as a
buffer for messages sent by the putting app
However queue storage is finite and will eventually
fill up if the getting app isn’t started in time. This
can potentially lead, in the worst cases to a putting
app failure
Private queues can hold at most 64GB of message
data
Shared queues configured to offload data to SMDS
can hold much more data – many TBs, providing
extra time to resolve app outages, and a more
resilient solution
App
MQRC_STORAGE_MEDIUM_FULL
© 2019 IBM Corporation
Putting it all together
© 2019 IBM Corporation64
App
Bringing it all together
• Design your apps so they have minimal, or no, affinities
• Build a set of queue managers using a single
configuration template
• Create a queue sharing group and add the queue
managers to it
• Configure backup coupling facilities
• Define the necessary MQ objects to the queue sharing
group rather than individual queue managers, using
shared queues where necessary
• Ensure your queues and storage are sufficiently sized for
resilience in the case of app failure
• Use technology like Sysplex Distributor to provide a
resilient workload balancing layer
• Connect your apps
• Monitor your environment, including your apps, for failure
App
Queue Manager
Queue Manager Queue Manager
Coupling Facility
Sysplex Distributor
Backup
Coupling Facility
App App
Remember that equivalent steps need
to be taken for the rest of your
environment
© 2019 IBM Corporation
A comparison with
uniform clusters
© 2019 IBM Corporation
Uniform Cluster
66
App App
Uniform clusters – a recap
App App App App
amqsclm
amqsclm
amqsclm
decoupled
Introduced in MQ 9.1.2, and enhanced in later CD
releases, uniform clusters make it easier to build
scalable, fault tolerant solutions on distributed MQ
Uniform clusters build on the existing capabilities of
MQ clustering and CCDTs to spread work over a set
of identically configured queue managers
One significant benefit of uniform clusters,
compared with regular clusters, is that MQ works to
ensure that apps are spread over the available
queue managers in the cluster to prevent messages
building up when there is no connected app to
consume them
Uniform clusters are not available on z/OS use
queue sharing groups instead
© 2019 IBM Corporation67
A comparison
Ability to simply apply common configuration
across all queue managers at startup
Simple and efficient distribution of apps across
available queue managers
Automatic app rebalancing to ensure an even
spread of apps at all times
Ensuring all messages are processed
Capability
Queue sharing
groups
Uniform
clusters
Yes
Yes using Sysplex
Distributor, a CCDT or an IP
sprayer
No. However with shared
queues apps can access all
messages regardless of
where they are connected
Yes. With shared queues
apps can access all
messages regardless of
where they are connected to
Yes as of 9.1.4
Yes using JSON CCDTs
Yes
Yes using AMQSCLM and
automatic app rebalancing
© 2019 IBM Corporation68
A comparison
High availability
Scaling up
Capability
Queue sharing
groups
Uniform
clusters
Yes, queue sharing groups
provide a range of
capabilities to provide best
in class high availability of
messages regardless of
queue manager, hardware
or app failure
Queue managers can
easily be added to the
queue sharing group,
Sysplex Distributor ensures
an even spread of new
workload, existing
workload remains where it
is
Yes, uniform clusters
provide high availability of
the services using
clustered queues and can
be combined with
technologies such as
RDQM for queue manager
high availability
Queue managers can
easily be added to the
uniform cluster, automatic
app rebalancing ensure an
even spread of workload,
both new and existing
© 2019 IBM Corporation69
A comparison
Scaling down
Recommended app types
Capability
Queue sharing
groups
Uniform
clusters
Queue managers can
easily be removed from the
queue sharing group.
Shared queues removes
concerns regarding
draining queues and
Sysplex Distributor allows
apps to reconnect to
remaining queue managers
Almost all apps can exploit
queue sharing groups, but
care needs to be taken
regarding affinities
Messages need to be
drained from existing
queues before a queue
manager is removed from
the cluster. App
rebalancing ensures apps
are spread over remaining
queue managers
Many apps can exploit
uniform clusters but care is
required when apps have
affinities or use
message/correlation id to
locate specific reply
messages
70
-Why you need scalability and resilience
-Queue sharing groups
-Achieving consistent configuration
-Connectivity
-Application considerations
-Resilience
-Putting it all together
-A comparison with uniform clusters
Thank You
Matt Leming
Archiect, MQ for z/OS
lemingma@uk.ibm.com

More Related Content

What's hot

Where is My Message
Where is My MessageWhere is My Message
Where is My Message
Matt Leming
 
IBM MQ High Availability 2019
IBM MQ High Availability 2019IBM MQ High Availability 2019
IBM MQ High Availability 2019
David Ware
 
Where is my MQ message on z/OS?
Where is my MQ message on z/OS?Where is my MQ message on z/OS?
Where is my MQ message on z/OS?
Matt Leming
 
IBM MQ - What's new in 9.2
IBM MQ - What's new in 9.2IBM MQ - What's new in 9.2
IBM MQ - What's new in 9.2
David Ware
 
Clusters (Distributed computing)
Clusters (Distributed computing)Clusters (Distributed computing)
Clusters (Distributed computing)Sri Prasanna
 
IBM MQ V9 Overview
IBM MQ V9 OverviewIBM MQ V9 Overview
IBM MQ V9 Overview
MarkTaylorIBM
 
IBM WebSphere MQ: Using Publish/Subscribe in an MQ Network
IBM WebSphere MQ: Using Publish/Subscribe in an MQ NetworkIBM WebSphere MQ: Using Publish/Subscribe in an MQ Network
IBM WebSphere MQ: Using Publish/Subscribe in an MQ Network
David Ware
 
Designing IBM MQ deployments for the cloud generation
Designing IBM MQ deployments for the cloud generationDesigning IBM MQ deployments for the cloud generation
Designing IBM MQ deployments for the cloud generation
David Ware
 
HHM-3481: IBM MQ for z/OS: Enhancing Application and Messaging Connectivity ...
 HHM-3481: IBM MQ for z/OS: Enhancing Application and Messaging Connectivity ... HHM-3481: IBM MQ for z/OS: Enhancing Application and Messaging Connectivity ...
HHM-3481: IBM MQ for z/OS: Enhancing Application and Messaging Connectivity ...
Matt Leming
 
IBM MQ Update, including 9.1.2 CD
IBM MQ Update, including 9.1.2 CDIBM MQ Update, including 9.1.2 CD
IBM MQ Update, including 9.1.2 CD
David Ware
 
M14: MQ security deep dive ITC 2019
M14: MQ security deep dive ITC 2019M14: MQ security deep dive ITC 2019
M14: MQ security deep dive ITC 2019
Robert Parker
 
IBM MQ for z/OS The Latest and Greatest Enhancements
IBM MQ for z/OS The Latest and Greatest EnhancementsIBM MQ for z/OS The Latest and Greatest Enhancements
IBM MQ for z/OS The Latest and Greatest Enhancements
Pete Siddall
 
Building an Active-Active IBM MQ System
Building an Active-Active IBM MQ SystemBuilding an Active-Active IBM MQ System
Building an Active-Active IBM MQ System
matthew1001
 
Interconnect 2017: 6885 Deploying IBM MQ in the cloud
Interconnect 2017: 6885 Deploying IBM MQ in the cloudInterconnect 2017: 6885 Deploying IBM MQ in the cloud
Interconnect 2017: 6885 Deploying IBM MQ in the cloud
Robert Parker
 
IBM MQ CONNAUTH/CHLAUTH Doesn't Work Like You Think it Does (and if you aren'...
IBM MQ CONNAUTH/CHLAUTH Doesn't Work Like You Think it Does (and if you aren'...IBM MQ CONNAUTH/CHLAUTH Doesn't Work Like You Think it Does (and if you aren'...
IBM MQ CONNAUTH/CHLAUTH Doesn't Work Like You Think it Does (and if you aren'...
T.Rob Wyatt
 
IBM MQ: Managing Workloads, Scaling and Availability with MQ Clusters
IBM MQ: Managing Workloads, Scaling and Availability with MQ ClustersIBM MQ: Managing Workloads, Scaling and Availability with MQ Clusters
IBM MQ: Managing Workloads, Scaling and Availability with MQ Clusters
David Ware
 
MQ Infrastructure of Today and Tomorrow
MQ Infrastructure of Today and TomorrowMQ Infrastructure of Today and Tomorrow
MQ Infrastructure of Today and Tomorrow
Prolifics
 
Fault tolerant and scalable ibm mq
Fault tolerant and scalable ibm mqFault tolerant and scalable ibm mq
Fault tolerant and scalable ibm mq
David Ware
 
InterConnect 2016: IBM MQ self-service and as-a-service
InterConnect 2016: IBM MQ self-service and as-a-serviceInterConnect 2016: IBM MQ self-service and as-a-service
InterConnect 2016: IBM MQ self-service and as-a-service
David Ware
 
IBM MQ cloud architecture blueprint
IBM MQ cloud architecture blueprintIBM MQ cloud architecture blueprint
IBM MQ cloud architecture blueprint
Matt Roberts
 

What's hot (20)

Where is My Message
Where is My MessageWhere is My Message
Where is My Message
 
IBM MQ High Availability 2019
IBM MQ High Availability 2019IBM MQ High Availability 2019
IBM MQ High Availability 2019
 
Where is my MQ message on z/OS?
Where is my MQ message on z/OS?Where is my MQ message on z/OS?
Where is my MQ message on z/OS?
 
IBM MQ - What's new in 9.2
IBM MQ - What's new in 9.2IBM MQ - What's new in 9.2
IBM MQ - What's new in 9.2
 
Clusters (Distributed computing)
Clusters (Distributed computing)Clusters (Distributed computing)
Clusters (Distributed computing)
 
IBM MQ V9 Overview
IBM MQ V9 OverviewIBM MQ V9 Overview
IBM MQ V9 Overview
 
IBM WebSphere MQ: Using Publish/Subscribe in an MQ Network
IBM WebSphere MQ: Using Publish/Subscribe in an MQ NetworkIBM WebSphere MQ: Using Publish/Subscribe in an MQ Network
IBM WebSphere MQ: Using Publish/Subscribe in an MQ Network
 
Designing IBM MQ deployments for the cloud generation
Designing IBM MQ deployments for the cloud generationDesigning IBM MQ deployments for the cloud generation
Designing IBM MQ deployments for the cloud generation
 
HHM-3481: IBM MQ for z/OS: Enhancing Application and Messaging Connectivity ...
 HHM-3481: IBM MQ for z/OS: Enhancing Application and Messaging Connectivity ... HHM-3481: IBM MQ for z/OS: Enhancing Application and Messaging Connectivity ...
HHM-3481: IBM MQ for z/OS: Enhancing Application and Messaging Connectivity ...
 
IBM MQ Update, including 9.1.2 CD
IBM MQ Update, including 9.1.2 CDIBM MQ Update, including 9.1.2 CD
IBM MQ Update, including 9.1.2 CD
 
M14: MQ security deep dive ITC 2019
M14: MQ security deep dive ITC 2019M14: MQ security deep dive ITC 2019
M14: MQ security deep dive ITC 2019
 
IBM MQ for z/OS The Latest and Greatest Enhancements
IBM MQ for z/OS The Latest and Greatest EnhancementsIBM MQ for z/OS The Latest and Greatest Enhancements
IBM MQ for z/OS The Latest and Greatest Enhancements
 
Building an Active-Active IBM MQ System
Building an Active-Active IBM MQ SystemBuilding an Active-Active IBM MQ System
Building an Active-Active IBM MQ System
 
Interconnect 2017: 6885 Deploying IBM MQ in the cloud
Interconnect 2017: 6885 Deploying IBM MQ in the cloudInterconnect 2017: 6885 Deploying IBM MQ in the cloud
Interconnect 2017: 6885 Deploying IBM MQ in the cloud
 
IBM MQ CONNAUTH/CHLAUTH Doesn't Work Like You Think it Does (and if you aren'...
IBM MQ CONNAUTH/CHLAUTH Doesn't Work Like You Think it Does (and if you aren'...IBM MQ CONNAUTH/CHLAUTH Doesn't Work Like You Think it Does (and if you aren'...
IBM MQ CONNAUTH/CHLAUTH Doesn't Work Like You Think it Does (and if you aren'...
 
IBM MQ: Managing Workloads, Scaling and Availability with MQ Clusters
IBM MQ: Managing Workloads, Scaling and Availability with MQ ClustersIBM MQ: Managing Workloads, Scaling and Availability with MQ Clusters
IBM MQ: Managing Workloads, Scaling and Availability with MQ Clusters
 
MQ Infrastructure of Today and Tomorrow
MQ Infrastructure of Today and TomorrowMQ Infrastructure of Today and Tomorrow
MQ Infrastructure of Today and Tomorrow
 
Fault tolerant and scalable ibm mq
Fault tolerant and scalable ibm mqFault tolerant and scalable ibm mq
Fault tolerant and scalable ibm mq
 
InterConnect 2016: IBM MQ self-service and as-a-service
InterConnect 2016: IBM MQ self-service and as-a-serviceInterConnect 2016: IBM MQ self-service and as-a-service
InterConnect 2016: IBM MQ self-service and as-a-service
 
IBM MQ cloud architecture blueprint
IBM MQ cloud architecture blueprintIBM MQ cloud architecture blueprint
IBM MQ cloud architecture blueprint
 

Similar to Building a resilient and scalable solution with IBM MQ on z/OS

Configurability for Cloud-Native Applications: Observability and Control
Configurability for Cloud-Native Applications: Observability and ControlConfigurability for Cloud-Native Applications: Observability and Control
Configurability for Cloud-Native Applications: Observability and Control
Cognizant
 
MQ Guide France - What's new in ibm mq 9.1.4
MQ Guide France - What's new in ibm mq 9.1.4MQ Guide France - What's new in ibm mq 9.1.4
MQ Guide France - What's new in ibm mq 9.1.4
Robert Parker
 
20200113 - IBM Cloud Côte d'Azur - DeepDive Kubernetes
20200113 - IBM Cloud Côte d'Azur - DeepDive Kubernetes20200113 - IBM Cloud Côte d'Azur - DeepDive Kubernetes
20200113 - IBM Cloud Côte d'Azur - DeepDive Kubernetes
IBM France Lab
 
20190613 - IBM Cloud Côte d'Azur meetup - "Cloud & Containers"
20190613 - IBM Cloud Côte d'Azur meetup - "Cloud & Containers"20190613 - IBM Cloud Côte d'Azur meetup - "Cloud & Containers"
20190613 - IBM Cloud Côte d'Azur meetup - "Cloud & Containers"
IBM France Lab
 
Code One 2018 maven
Code One 2018   mavenCode One 2018   maven
Code One 2018 maven
Massimiliano Dessì
 
Breaking the Monolith road to containers.pdf
Breaking the Monolith road to containers.pdfBreaking the Monolith road to containers.pdf
Breaking the Monolith road to containers.pdf
Amazon Web Services
 
Breaking the Monolith road to containers.pdf
Breaking the Monolith road to containers.pdfBreaking the Monolith road to containers.pdf
Breaking the Monolith road to containers.pdf
Amazon Web Services
 
Savio Rodrigues - Cloud Enable Your Ent App - 11th September
Savio Rodrigues - Cloud Enable Your Ent App - 11th SeptemberSavio Rodrigues - Cloud Enable Your Ent App - 11th September
Savio Rodrigues - Cloud Enable Your Ent App - 11th September
IBM Systems UKI
 
Pivotal Container Service Overview
Pivotal Container Service Overview Pivotal Container Service Overview
Pivotal Container Service Overview
VMware Tanzu
 
Why containers
Why containersWhy containers
Why containers
Luca Ravazzolo
 
OSDC 2019 | Introducing Kudo – Kubernetes Operators the easy way by Matt Jarvis
OSDC 2019 | Introducing Kudo – Kubernetes Operators the easy way by Matt JarvisOSDC 2019 | Introducing Kudo – Kubernetes Operators the easy way by Matt Jarvis
OSDC 2019 | Introducing Kudo – Kubernetes Operators the easy way by Matt Jarvis
NETWAYS
 
M10: How to implement mq in a containerized architecture ITC 2019
M10: How to implement mq in a containerized architecture ITC 2019M10: How to implement mq in a containerized architecture ITC 2019
M10: How to implement mq in a containerized architecture ITC 2019
Robert Parker
 
Introduction to ibm cloud paks concept license and minimum config public
Introduction to ibm cloud paks concept license and minimum config publicIntroduction to ibm cloud paks concept license and minimum config public
Introduction to ibm cloud paks concept license and minimum config public
Petchpaitoon Krungwong
 
VMworld 2013: Protecting Enterprise Workloads Within a vCloud Service Provide...
VMworld 2013: Protecting Enterprise Workloads Within a vCloud Service Provide...VMworld 2013: Protecting Enterprise Workloads Within a vCloud Service Provide...
VMworld 2013: Protecting Enterprise Workloads Within a vCloud Service Provide...
VMworld
 
Characteristics of Remote Persistent Memory – Performance, Capacity, or Local...
Characteristics of Remote Persistent Memory – Performance, Capacity, or Local...Characteristics of Remote Persistent Memory – Performance, Capacity, or Local...
Characteristics of Remote Persistent Memory – Performance, Capacity, or Local...
inside-BigData.com
 
4156 Twist and cloud-how ibm customers make cics dance
4156 Twist and cloud-how ibm customers make cics dance4156 Twist and cloud-how ibm customers make cics dance
4156 Twist and cloud-how ibm customers make cics dance
nick_garrod
 
Introducing github.com/open-cluster-management – How to deliver apps across c...
Introducing github.com/open-cluster-management – How to deliver apps across c...Introducing github.com/open-cluster-management – How to deliver apps across c...
Introducing github.com/open-cluster-management – How to deliver apps across c...
Michael Elder
 
Future of Power: IBM PureFlex - Kim Mortensen
Future of Power: IBM PureFlex - Kim MortensenFuture of Power: IBM PureFlex - Kim Mortensen
Future of Power: IBM PureFlex - Kim Mortensen
IBM Danmark
 
Cloud-native Java EE-volution
Cloud-native Java EE-volutionCloud-native Java EE-volution
Cloud-native Java EE-volution
QAware GmbH
 
Creating Microservices Application with IBM Cloud Private (ICP) - ICP Archite...
Creating Microservices Application with IBM Cloud Private (ICP) - ICP Archite...Creating Microservices Application with IBM Cloud Private (ICP) - ICP Archite...
Creating Microservices Application with IBM Cloud Private (ICP) - ICP Archite...
PT Datacomm Diangraha
 

Similar to Building a resilient and scalable solution with IBM MQ on z/OS (20)

Configurability for Cloud-Native Applications: Observability and Control
Configurability for Cloud-Native Applications: Observability and ControlConfigurability for Cloud-Native Applications: Observability and Control
Configurability for Cloud-Native Applications: Observability and Control
 
MQ Guide France - What's new in ibm mq 9.1.4
MQ Guide France - What's new in ibm mq 9.1.4MQ Guide France - What's new in ibm mq 9.1.4
MQ Guide France - What's new in ibm mq 9.1.4
 
20200113 - IBM Cloud Côte d'Azur - DeepDive Kubernetes
20200113 - IBM Cloud Côte d'Azur - DeepDive Kubernetes20200113 - IBM Cloud Côte d'Azur - DeepDive Kubernetes
20200113 - IBM Cloud Côte d'Azur - DeepDive Kubernetes
 
20190613 - IBM Cloud Côte d'Azur meetup - "Cloud & Containers"
20190613 - IBM Cloud Côte d'Azur meetup - "Cloud & Containers"20190613 - IBM Cloud Côte d'Azur meetup - "Cloud & Containers"
20190613 - IBM Cloud Côte d'Azur meetup - "Cloud & Containers"
 
Code One 2018 maven
Code One 2018   mavenCode One 2018   maven
Code One 2018 maven
 
Breaking the Monolith road to containers.pdf
Breaking the Monolith road to containers.pdfBreaking the Monolith road to containers.pdf
Breaking the Monolith road to containers.pdf
 
Breaking the Monolith road to containers.pdf
Breaking the Monolith road to containers.pdfBreaking the Monolith road to containers.pdf
Breaking the Monolith road to containers.pdf
 
Savio Rodrigues - Cloud Enable Your Ent App - 11th September
Savio Rodrigues - Cloud Enable Your Ent App - 11th SeptemberSavio Rodrigues - Cloud Enable Your Ent App - 11th September
Savio Rodrigues - Cloud Enable Your Ent App - 11th September
 
Pivotal Container Service Overview
Pivotal Container Service Overview Pivotal Container Service Overview
Pivotal Container Service Overview
 
Why containers
Why containersWhy containers
Why containers
 
OSDC 2019 | Introducing Kudo – Kubernetes Operators the easy way by Matt Jarvis
OSDC 2019 | Introducing Kudo – Kubernetes Operators the easy way by Matt JarvisOSDC 2019 | Introducing Kudo – Kubernetes Operators the easy way by Matt Jarvis
OSDC 2019 | Introducing Kudo – Kubernetes Operators the easy way by Matt Jarvis
 
M10: How to implement mq in a containerized architecture ITC 2019
M10: How to implement mq in a containerized architecture ITC 2019M10: How to implement mq in a containerized architecture ITC 2019
M10: How to implement mq in a containerized architecture ITC 2019
 
Introduction to ibm cloud paks concept license and minimum config public
Introduction to ibm cloud paks concept license and minimum config publicIntroduction to ibm cloud paks concept license and minimum config public
Introduction to ibm cloud paks concept license and minimum config public
 
VMworld 2013: Protecting Enterprise Workloads Within a vCloud Service Provide...
VMworld 2013: Protecting Enterprise Workloads Within a vCloud Service Provide...VMworld 2013: Protecting Enterprise Workloads Within a vCloud Service Provide...
VMworld 2013: Protecting Enterprise Workloads Within a vCloud Service Provide...
 
Characteristics of Remote Persistent Memory – Performance, Capacity, or Local...
Characteristics of Remote Persistent Memory – Performance, Capacity, or Local...Characteristics of Remote Persistent Memory – Performance, Capacity, or Local...
Characteristics of Remote Persistent Memory – Performance, Capacity, or Local...
 
4156 Twist and cloud-how ibm customers make cics dance
4156 Twist and cloud-how ibm customers make cics dance4156 Twist and cloud-how ibm customers make cics dance
4156 Twist and cloud-how ibm customers make cics dance
 
Introducing github.com/open-cluster-management – How to deliver apps across c...
Introducing github.com/open-cluster-management – How to deliver apps across c...Introducing github.com/open-cluster-management – How to deliver apps across c...
Introducing github.com/open-cluster-management – How to deliver apps across c...
 
Future of Power: IBM PureFlex - Kim Mortensen
Future of Power: IBM PureFlex - Kim MortensenFuture of Power: IBM PureFlex - Kim Mortensen
Future of Power: IBM PureFlex - Kim Mortensen
 
Cloud-native Java EE-volution
Cloud-native Java EE-volutionCloud-native Java EE-volution
Cloud-native Java EE-volution
 
Creating Microservices Application with IBM Cloud Private (ICP) - ICP Archite...
Creating Microservices Application with IBM Cloud Private (ICP) - ICP Archite...Creating Microservices Application with IBM Cloud Private (ICP) - ICP Archite...
Creating Microservices Application with IBM Cloud Private (ICP) - ICP Archite...
 

More from Matt Leming

533-MigratingYourMQIApplicationsToJMS.pdf
533-MigratingYourMQIApplicationsToJMS.pdf533-MigratingYourMQIApplicationsToJMS.pdf
533-MigratingYourMQIApplicationsToJMS.pdf
Matt Leming
 
IBM MQ Whats new - up to 9.3.4.pptx
IBM MQ Whats new - up to 9.3.4.pptxIBM MQ Whats new - up to 9.3.4.pptx
IBM MQ Whats new - up to 9.3.4.pptx
Matt Leming
 
Going Deep with MQ
Going Deep with MQGoing Deep with MQ
Going Deep with MQ
Matt Leming
 
What's new with MQ on z/OS 9.3 and 9.3.1
What's new with MQ on z/OS 9.3 and 9.3.1What's new with MQ on z/OS 9.3 and 9.3.1
What's new with MQ on z/OS 9.3 and 9.3.1
Matt Leming
 
New Tools and Interfaces for Managing IBM MQ
New Tools and Interfaces for Managing IBM MQNew Tools and Interfaces for Managing IBM MQ
New Tools and Interfaces for Managing IBM MQ
Matt Leming
 
HHM-2833: Where is My Message?: Using IBM MQ Tools to Work Out What Applicati...
HHM-2833: Where is My Message?: Using IBM MQ Tools to Work Out What Applicati...HHM-2833: Where is My Message?: Using IBM MQ Tools to Work Out What Applicati...
HHM-2833: Where is My Message?: Using IBM MQ Tools to Work Out What Applicati...
Matt Leming
 
HHM-3540: The IBM MQ Light API: From Developer Laptop to Enterprise Data Cen...
 HHM-3540: The IBM MQ Light API: From Developer Laptop to Enterprise Data Cen... HHM-3540: The IBM MQ Light API: From Developer Laptop to Enterprise Data Cen...
HHM-3540: The IBM MQ Light API: From Developer Laptop to Enterprise Data Cen...
Matt Leming
 

More from Matt Leming (7)

533-MigratingYourMQIApplicationsToJMS.pdf
533-MigratingYourMQIApplicationsToJMS.pdf533-MigratingYourMQIApplicationsToJMS.pdf
533-MigratingYourMQIApplicationsToJMS.pdf
 
IBM MQ Whats new - up to 9.3.4.pptx
IBM MQ Whats new - up to 9.3.4.pptxIBM MQ Whats new - up to 9.3.4.pptx
IBM MQ Whats new - up to 9.3.4.pptx
 
Going Deep with MQ
Going Deep with MQGoing Deep with MQ
Going Deep with MQ
 
What's new with MQ on z/OS 9.3 and 9.3.1
What's new with MQ on z/OS 9.3 and 9.3.1What's new with MQ on z/OS 9.3 and 9.3.1
What's new with MQ on z/OS 9.3 and 9.3.1
 
New Tools and Interfaces for Managing IBM MQ
New Tools and Interfaces for Managing IBM MQNew Tools and Interfaces for Managing IBM MQ
New Tools and Interfaces for Managing IBM MQ
 
HHM-2833: Where is My Message?: Using IBM MQ Tools to Work Out What Applicati...
HHM-2833: Where is My Message?: Using IBM MQ Tools to Work Out What Applicati...HHM-2833: Where is My Message?: Using IBM MQ Tools to Work Out What Applicati...
HHM-2833: Where is My Message?: Using IBM MQ Tools to Work Out What Applicati...
 
HHM-3540: The IBM MQ Light API: From Developer Laptop to Enterprise Data Cen...
 HHM-3540: The IBM MQ Light API: From Developer Laptop to Enterprise Data Cen... HHM-3540: The IBM MQ Light API: From Developer Laptop to Enterprise Data Cen...
HHM-3540: The IBM MQ Light API: From Developer Laptop to Enterprise Data Cen...
 

Recently uploaded

Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
Tendenci - The Open Source AMS (Association Management Software)
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
Ortus Solutions, Corp
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 

Recently uploaded (20)

Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 

Building a resilient and scalable solution with IBM MQ on z/OS

  • 1. Building a resilient and scalable solution with IBM MQ on z/OS Matt Leming Architect, MQ on z/OS
  • 2. 2 -Why you need scalability and resilience -Queue sharing groups -Achieving consistent configuration -Connectivity -Application considerations -Resilience -Putting it all together -A comparison with uniform clusters
  • 3. © 2019 IBM Corporation3 App
  • 4. © 2019 IBM Corporation4 App App App App App App decoupled
  • 5. © 2019 IBM Corporation Queue Manager Queue Manager Queue Manager Queue Manager Queue Manager Queue Manager Queue Manager Queue Manager Queue Manager Queue Manager Queue Manager Queue Manager Queue Manager Queue Manager Queue Manager Queue Manager Scaling 5 Single Multiple Queue Manager Queue Manager Queue Manager Queue Manager Queue Manager Queue Manager Queue Manager Queue Manager Queue Manager Queue Manager x1x4 x1x2x3x4x5x6x7x8xn
  • 6. © 2019 IBM Corporation Fault Toleration 6 Queue Manager Single Queue Manager Queue Manager Queue Manager Queue Manager Multiple 100% 0% 100% 0% availabilityavailability
  • 7. © 2019 IBM Corporation Single vs. Multiple 7 Single o Simple o Invisible to applications o Limited by maximum system size o Liable to hit internal limits o Not all aspects scale linearly o Restart times can grow o Every outage is high impact Multiple o Unlimited by system size o All aspects scale linearly o More suited to cloud scaling o Reduced restart times o Enables rolling upgrades o Tolerate partial failures o Potentially more complicated o Needs to, and should be, planned for Queue Manager Queue Manager Queue Manager Queue Manager Queue Manager
  • 8. © 2019 IBM Corporation Queue Manager Queue Manager Queue Manager It’s not just the queue managers… 8 Client Client Client Step 1 Horizontally scale the application into multiple instances, all performing the same role A queue manager works better when there are multiple applications working in parallel Queue Manager Step 2 Horizontally scale the queue managers Create multiple queue managers with the ‘same’ configuration Distribute the application instances across the queue managers Client Client Client Client Client Client Queue Manager Queue Manager Queue Manager
  • 9. © 2019 IBM Corporation 9 Queue sharing groups
  • 10. © 2019 IBM Corporation Private queues – a recap 10 Private queues are defined to individual queue managers On z/OS messages are held in memory in buffer pools and where necessary stored on disk in a page set Persistent messages are logged Queue Manager Page set Logs Buffer pool
  • 11. © 2019 IBM Corporation Private queues – a recap 11 Messages can only be accessed by the owning queue manager If the queue manager fails messages are lost if non- persistent, or unavailable until the queue manager restarts if persistent On distributed MQ all queues are implicitly private… Queue Manager Page set Logs Buffer pool
  • 12. © 2019 IBM Corporation Shared queues 12 Shared queues are defined to a set of related queue managers – a queue sharing group Messages are stored in a coupling facility, in a memory structure called a list structure As before, persistent messages are logged The messages can be accessed by any queue manager in the group Queue Manager Queue Manager Queue Manager Queue Manager Coupling Facility
  • 13. © 2019 IBM Corporation Shared queues 13 Apps connect to the group rather than an individual queue manager If an individual queue manager in the group isn’t running messages in the shared queue are still available to apps via the remaining queue managers in the group Queue managers in a queue sharing group can also have private queues Queue Manager Coupling Facility App App App App App Queue Manager Queue Manager Queue Manager
  • 14. © 2019 IBM Corporation Shared queues - benefits 14 Resilient: existing messages are available to apps, and new messages can be put, for as long as one queue manager is available Scalable: throughput can push past the capacity of a single queue manager Simple: no need to balance messages, and applications, across a set of private queues, or worry about marooned messages Queue Manager Coupling Facility App App App App App Queue Manager Queue Manager Queue Manager
  • 15. © 2019 IBM Corporation 15 Achieving consistent configuration
  • 16. © 2019 IBM Corporation Consistent configuration 16 A queue sharing group environment should consist of a set of identically configured queue managers Queue ManagerQueue ManagerQueue Manager
  • 17. © 2019 IBM Corporation Consistent configuration 17 A queue sharing group environment should consist of a set of identically configured queue managers Luckily this is easy to achieve with queue sharing groups Coupling Facility Queue Manager Queue ManagerQueue Manager
  • 18. © 2019 IBM Corporation Consistent configuration - steps 18 When defining your logs, page sets, BSDS, etc. use the same set of JCL for each queue manager, ensuring that data set names contain the name of both the queue sharing group and the queue manager The only thing you should be changing in the JCL when moving to another queue manager is the queue manager name DEFINE CLUSTER (NAME(MQM.QSG1.QM1.PS.PSID00) RECORDS(1000 500) LINEAR SHAREOPTIONS(2 3) ) DATA (NAME(MQM.QSG1.QM1.PS.PSID00.DATA) )
  • 19. © 2019 IBM Corporation Consistent configuration - steps 19 Keep the JCL in version control, it makes it easier to find, back up and track changes Having the queue sharing group name in the data set name makes it easy to apply consistent policies for zHyperWrite, compression, and data set encryption across the whole queue sharing group DEFINE CLUSTER (NAME(MQM.QSG1.QM1.PS.PSID00) RECORDS(1000 500) LINEAR SHAREOPTIONS(2 3) ) DATA (NAME(MQM.QSG1.QM1.PS.PSID00.DATA) )
  • 20. © 2019 IBM Corporation ARVP Consistent configuration - steps 20 Use a common source for the various CSQ6* macros when building the system parameters for all your queue managers Keep the source in version control Watch ARCPFX1 and ARCPFX2, in CSQ6ARVP, which need to be different for each queue manager SYSP LOGP ARVP USGP Queue Manager Queue ManagerQueue Manager
  • 21. © 2019 IBM Corporation Consistent configuration - steps 21 Use a common source for the CSQINP* datasets you use to configure your queue managers Keep the source in version control Use shared queues instead of private queues DEF QL(APP1.Q) QSGDISP(SHARED) CFSTRUCT(APPSTRUC1) APP1.Q
  • 22. © 2019 IBM Corporation Consistent configuration - steps 22 Define other object types to the queue sharing group rather than to individual queue managers This is done using the QSGDISP(GROUP) parameter The definition of the object is then held in a shared repository Each queue manager caches a local definition Coupling Facility DEF TOPIC(FRUIT) QSGDISP(GROUP) TOPICSTR(‘FRUIT’) Shared Repository FruitFruitFruitFruit Queue Manager Queue ManagerQueue Manager
  • 23. © 2019 IBM Corporation Consistent configuration - steps 23 Define other object types to the queue sharing group rather than to individual queue managers This is done using the QSGDISP(GROUP) parameter The definition of the object is then held in a shared repository Each queue manager caches a local definition NB: Can’t do this with DEFINE SUB so use CMDSCOPE(*) instead Coupling Facility DEF TOPIC(FRUIT) QSGDISP(GROUP) TOPICSTR(‘FRUIT’) Shared Repository Fruit Queue Manager Queue ManagerQueue Manager Fruit Fruit Fruit
  • 24. © 2019 IBM Corporation Consistent configuration - steps 24 When configuring security profiles use the queue sharing group name in RACF profiles instead of the name of the individual queue manager RDEFINE MQQUEUE QSG1.APP1.Q
  • 25. © 2019 IBM Corporation 25 Connectivity
  • 26. © 2019 IBM Corporation Connectivity 26 Apps should never specify a specific queue manager name when connecting to MQ Doing so requires a recompile if the queue manager changes, making your environment brittle, and making it hard to adopt technologies such as queue sharing groups MQ2 MQ1 MQ3 Coupling Facility App App App MQCONN(MQ1) MQCONN(MQ2) MQCONN(MQ3)
  • 27. © 2019 IBM Corporation LPAR Local apps 27 Apps should connect to the queue sharing group rather than to a specific queue manager For apps which make cross-memory connections you should ensure that there are at least two queue managers in the queue sharing group available on each LPAR, providing availability should one of the queue managers fail This capability is available for apps running in batch, CICS and JEE environments Coupling Facility Shared repository App App Queue Manager Queue ManagerQueue Manager
  • 28. © 2019 IBM Corporation Local apps – default queue manager 28 The following options are available to prevent hardcoding of queue manager names for local apps Apps running in batch environments can connect to the default queue manager. The default queue manager can be specified for each app using the CSQBDEF macro JMS apps can hold connection factory definitions in JNDI allowing the definition to be changed without changing the app LPAR Coupling Facility Shared repository App App Queue Manager Queue ManagerQueue Manager MQCONN(“”) CSQBDEFCSQBDEF
  • 29. © 2019 IBM Corporation Local apps – default queue manager 29 In CICS the MQCONN resource holds the name of the queue manager or queue sharing group to connect to so apps don’t need to specify it anyway In IMS the CSQQDEFV module allows a default queue manager to be specified, but this can’t be a queue sharing group LPAR Coupling Facility Shared repository App App Queue Manager Queue ManagerQueue Manager MQCONN(“”) CSQBDEFCSQBDEF
  • 30. © 2019 IBM Corporation Remote apps 30 Apps should connect to the queue sharing group rather than a specific queue manager For apps which connect to MQ over a network something is needed to spread connections across the available queue managers Several approaches are available: -Sysplex Distributor -A workload balancer / IP sprayer -CCDTs App App App App App ? Coupling Facility Queue Manager Queue ManagerQueue Manager
  • 31. © 2019 IBM Corporation Sysplex Distributor 31 Sysplex Distributor allows each queue manager in the queue sharing group to listen on the same IP address and port If multiple queue managers exist on the same LPAR then they can use a shared port Sysplex Distributor spreads connections across the queue managers based on configured workload management policies Coupling Facility App App App App App Sysplex Distributor Queue Manager Queue Manager Shared port LPAR Queue Manager Queue Manager Shared port LPAR
  • 32. © 2019 IBM Corporation Sysplex Distributor 32 Sysplex Distributor relies on a “routing” network stack on a single LPAR distributing the connections. If the “routing” stack fails, the responsibility is moved to another LPAR This is transparent to existing connections! Coupling Facility App App App App App Sysplex Distributor Queue Manager Queue Manager Shared port LPAR Queue Manager Queue Manager Shared port LPAR
  • 33. © 2019 IBM Corporation CCDT 33 CCDTs contain configuration information which is used to define a client channel MQ clients use this information to connect to a single queue manager, or a group of queue managers App App App { “channel”:[ { “name”:”TO.QSG1”, ”queueManager”:”QSG1” }, { “name”:”TO.QSG1”, ”queueManager”:”QSG1” }, ] } MQCONN(*QSG1) Queue Manager Coupling Facility Queue Manager Queue Manager Shared port LPAR Queue Manager Queue Manager Shared port LPAR
  • 34. © 2019 IBM Corporation CCDT 34 CCDTs also provide the ability to randomize where connections are made This provides the ability to spread work over a queue sharing group In MQ 9.1.2 this was made easier with JSON format CCDTs as each queue manager can be configured with the same server-connection channel definition App App App { “channel”:[ { “name”:”TO.QSG1”, ”queueManager”:”QSG1” }, { “name”:”TO.QSG1”, ”queueManager”:”QSG1” }, ] } MQCONN(*QSG1) Queue Manager Coupling Facility Queue Manager Queue Manager Shared port LPAR Queue Manager Queue Manager Shared port LPAR
  • 35. © 2019 IBM Corporation 37 Application considerations
  • 36. © 2019 IBM Corporation Application considerations 38 The MQ APIs are generally the same regardless of whether you are connected to a single queue manager, or a queue sharing group However moving an app to using a queue sharing group is typically not an isolated project, it is often part of a wider effort to improve a system’s resilience that includes other subsystems such as CICS, Db2, IMS etc. The main challenges are often affinities… App
  • 37. © 2019 IBM Corporation Affinities 39 An affinity is a coupling between two otherwise separate actions For example if an app uses the information in one message to generate some state which is stored in local memory, and then updates that state using the information in a second message there is an affinity between the two messages App Queue Manager 20 10 x = 0x = 20
  • 38. © 2019 IBM Corporation Affinities 40 An affinity is a coupling between two otherwise separate actions For example if an app uses the information in one message to generate some state which is stored in local memory, and then updates that state using the information in a second message there is an affinity between the two messages App Queue Manager 20 10 x = 20
  • 39. © 2019 IBM Corporation Affinities 41 App Queue Manager 20 10 x = 30 An affinity is a coupling between two otherwise separate actions For example if an app uses the information in one message to generate some state which is stored in local memory, and then updates that state using the information in a second message there is an affinity between the two messages
  • 40. © 2019 IBM Corporation Affinities 42 Affinities make it hard to use technologies like shared queues as well as parallel sysplex in general Affinities also cause challenges when using MQ clusters too, so it’s a wider challenge! App Queue Manager 20 10 x = 30
  • 41. © 2019 IBM Corporation Affinities 43 In the previous example, what if the first and second messages were got by different app instances on different LPARs? While this affinity can easily be solved, for example by putting the state in the database, its better to try and avoid affinities as much as possible Where they are necessary assume that at some point in the future your app is going to need to run multiple (collaborating) instances across multiple LPARs, and design your app with that in mind App Queue Manager x = 20 20 App 10 x = 10
  • 42. © 2019 IBM Corporation Enforcing serialized processing 44 Ideally it would always be possible to have multiple apps processing the messages from a given queue as that gives the greatest ability to scale However sometimes strict message ordering needs to be maintained A simple way of achieving this is to define the queue with NOSHARE, or using the MQOO_INPUT_EXCLUSIVE option However this doesn’t guarantee strict message ordering when getting messages under synch-point as the exclusivity is only available until the app closes the queue It also doesn’t help if messages on the queue are partitioned, perhaps by correlation id, or if multiple queues are being used App Queue Manager App NOSHARE MQRC_OBJECT_IN_USE
  • 43. © 2019 IBM Corporation Enforcing serialized processing 45 An alternative approach is to use connection tags Each app type that needs serialization has its own connection tag (an arbitrary byte string) When the app connects in it passes a flag indicating how it wants to be serialized: MQCNO_SERIALIZE_CONN_TAG_QSG tag can’t be in use at the same time anywhere in the queue sharing group MQCNO_RESTRICT_CONN_TAG_QSG tag can only be used on different connections if each connection comes from same address space If the original app instance fails, the tag remains in place until any associated units-of-work are resolved, preserving message order App App CONNTAG=APP1 App App CONNTAG=APP2 Coupling Facility Queue Manager Queue ManagerQueue Manager
  • 44. © 2019 IBM Corporation 48 Resilience
  • 45. © 2019 IBM Corporation Resilient/Reliable Failover Capable Fault Tolerant Continuous Availability Data High Availability • Shared Queues – Queue managers are connected via a Coupling Facility. Application requests for a service are held in the CF and available to all connected queue managers. If an individual queue manager is unavailable for any reason, new and existing messages are available to the rest of the queue managers Service High Availability • Clustering - Application requests for a service are spread among a cluster of queue managers. If a queue manager fails, new requests are routed to surviving queue managers allowing the service to continue to be available, eliminating SPoFs for message driven services. Existing messages on the failed queue manager aren't available until it is back online • Clustering - Application requests for a service are spread among a cluster of queue managers. If a queue manager fails, new requests are routed to surviving queue managers allowing the service to continue to be available, eliminating SPoFs for message driven services. Existing messages on the failed queue manager aren't available until it is back online Enhanced Data Recovery • Data replication – MQ active log datasets can be mirrored to a secondary storage subsystem using data replication. zHyperwrite support improves performance • Data replication – MQ active log datasets can be mirrored to a secondary storage subsystem using data replication. zHyperwrite support improves performance • Data replication – MQ active log datasets can be mirrored to a secondary storage subsystem using data replication. zHyperwrite support improves performance Data Recovery • Logging – MQ records all significant changes to persistent data in a recovery log. Dual logging offers protection against data loss. • Archiving – Logs automatically archived to secondary storage (tape or DASD) • Logging – MQ records all significant changes to persistent data in a recovery log. Dual logging offers protection against data loss. • Archiving – Logs automatically archived to secondary storage (tape or DASD) • Logging – MQ records all significant changes to persistent data in a recovery log. Dual logging offers protection against data loss. • Archiving – Logs automatically archived to secondary storage (tape or DASD) • Logging – MQ records all significant changes to persistent data in a recovery log. Dual logging offers protection against data loss. • Archiving – Logs automatically archived to secondary storage (tape or DASD) High Risk and Impact Medium Risk and Impact Low Risk and Impact Minimal Risk and Impact IBM MQ for z/OS provides capabilities to ensure your connectivity never lets you down
  • 46. © 2019 IBM Corporation Coupling Facility Queue Manager Queue ManagerQueue Manager Resilience to queue manager failure 50 Persistent and non-persistent messages on shared queues are available via other queue managers in the group if individual queue managers fail App If client apps are using automatic client reconnect then the failure can be entirely transparent to them Alternatively, applications can detect the connection error and reconnect to the group and carry on processing
  • 47. © 2019 IBM Corporation Resilience to queue manager failure 51 Persistent and non-persistent messages on shared queues are available via other queue managers in the group if individual queue managers fail Coupling Facility If client apps are using automatic client reconnect then the failure can be entirely transparent to them Alternatively, applications can detect the connection error and reconnect to the group and carry on processing Note that non-persistent messages are not lost even all queue managers in the group fail! App AppApp Coupling Facility Queue Manager Queue ManagerQueue Manager
  • 48. © 2019 IBM Corporation Transaction recovery 52 When apps fail, the queue manager and app runtime environment cooperate to ensure that inflight transactions are either committed, or rolled back This happens regardless of whether shared queues are being used or not Rolling back the transaction, if necessary, allows other instances of the app to process the messages Queue Manager Queue Manager Coupling Facility App ? ?
  • 49. © 2019 IBM Corporation Peer recovery 53 Queue Manager Queue Manager Coupling Facility App This is achieved using peer recovery – other queue managers in the group use information in the coupling facility and the failed queue manager’s logs to rollback, or commit messages as appropriate allowing the app to carry on processing If a queue manager fails while an app was using shared queues the aim is for the app to be able to carry on processing as quickly as possible ? ?
  • 50. © 2019 IBM Corporation Group UR 54 In some cases the app runtime environment (CICS or WAS) own the transaction state and must cooperate with MQ to correctly resolve the transaction Traditionally the queue manager that the app was interacting with owned this information, which meant it needed to be restarted to recover the transaction This can delay recovery Queue Manager Queue Manager Coupling Facility ? ? WAS App
  • 51. © 2019 IBM Corporation Group UR 55 Group units of recovery can be enabled on the queue managers in the group This allows transaction state to be owned by the queue sharing group, instead of the individual queue manager In the event of a queue manager failure the app runtime environment can then connect to another queue manager in the group and resolve the transaction Allowing the app to carry on processing Queue Manager Queue Manager Coupling Facility ? ? WAS App ALTER QMGR GROUPUR(ENABLED)
  • 52. © 2019 IBM Corporation Resilience to structure failure 56 The structures used to store shared queues are highly resilient to failure as they run in a coupling facility, and coupling facilities don’t contain any application code It is possible to increase this failure isolation by using dedicated hardware for coupling facilities Queue Manager Queue Manager Coupling Facility If a structure does fail then any non-persistent messages stored in the structure are lost Persistent messages can be restored from a backup in a queue manager’s logs using the RECOVER CFSTRUCT command, this can be done manually or automatically by MQ RECOVER CFSTRUCT
  • 53. © 2019 IBM Corporation Resilience to coupling facility failure 57 The network links between queue managers and coupling facilities can fail, or indeed the coupling facility itself can fail A total failure of network links is treated the same as a failure of a coupling facility by MQ If this situation is detected then MQ will attempt to reconnect to the coupling facility which might result in an alternate coupling facility being used As before, persistent messages can be restored from a backup in a queue manager’s logs using the RECOVER CFSTRUCT command, this can be done manually or automatically by MQ Queue Manager Queue Manager Coupling Facility RECOVER CFSTRUCT Coupling Facility Coupling Facility
  • 54. © 2019 IBM Corporation Resilience to coupling facility failure 58 The network links between queue managers and coupling facilities can fail, or indeed the coupling facility itself can fail If some network links fail, and only a subset of queue managers loose access to the coupling facility the queue managers will request that the contents of the shared queues are copied to a coupling facility to which all queue managers can access In this case non-persistent and persistent messages are preserved, and apps just experience a brief delay while the messages are copied Queue Manager Queue Manager Coupling Facility Coupling Facility Coupling Facility
  • 55. © 2019 IBM Corporation Resilience to coupling facility failure - duplexing 59 z/OS also provide coupling facility duplexing where each write operation to a primary coupling facility is synchronously replicated to a backup If the primary coupling facility fails, the backup transparently becomes the primary without MQ, or apps, being aware Queue Manager Queue Manager Coupling Facility Coupling Facility Coupling Facility
  • 56. © 2019 IBM Corporation Resilience to coupling facility failure - duplexing 60 z/OS also provide coupling facility duplexing where each write operation to a primary coupling facility is synchronously replicated to a backup If the primary coupling facility fails the backup transparently becomes the primary without MQ, or apps, being aware While providing an extremely high level of resilience this approach needs to be balanced against the higher CPU cost and extra latency it introduces on every single write operation In many cases the automatic recovery, and connectivity loss tolerance, provided by MQ is sufficient Queue Manager Queue Manager Coupling Facility Coupling Facility Coupling Facility
  • 57. © 2019 IBM Corporation Resilience to application failure 61 Queues are designed for temporary storage of data being exchanged between apps, allowing the apps to be decoupled and scale independently Queue Manager App App
  • 58. © 2019 IBM Corporation Resilience to application failure 62 Queues are designed for temporary storage of data being exchanged between apps, allowing the apps to be decoupled and scale independently Queue Manager App Should a getting app fail the queue can act as a buffer for messages sent by the putting app However queue storage is finite and will eventually fill up if the getting app isn’t started in time. This can potentially lead, in the worst cases to a putting app failure Private queues can hold at most 64GB of message data Shared queues configured to offload data to SMDS can hold much more data – many TBs, providing extra time to resolve app outages, and a more resilient solution App MQRC_STORAGE_MEDIUM_FULL
  • 59. © 2019 IBM Corporation Putting it all together
  • 60. © 2019 IBM Corporation64 App Bringing it all together • Design your apps so they have minimal, or no, affinities • Build a set of queue managers using a single configuration template • Create a queue sharing group and add the queue managers to it • Configure backup coupling facilities • Define the necessary MQ objects to the queue sharing group rather than individual queue managers, using shared queues where necessary • Ensure your queues and storage are sufficiently sized for resilience in the case of app failure • Use technology like Sysplex Distributor to provide a resilient workload balancing layer • Connect your apps • Monitor your environment, including your apps, for failure App Queue Manager Queue Manager Queue Manager Coupling Facility Sysplex Distributor Backup Coupling Facility App App Remember that equivalent steps need to be taken for the rest of your environment
  • 61. © 2019 IBM Corporation A comparison with uniform clusters
  • 62. © 2019 IBM Corporation Uniform Cluster 66 App App Uniform clusters – a recap App App App App amqsclm amqsclm amqsclm decoupled Introduced in MQ 9.1.2, and enhanced in later CD releases, uniform clusters make it easier to build scalable, fault tolerant solutions on distributed MQ Uniform clusters build on the existing capabilities of MQ clustering and CCDTs to spread work over a set of identically configured queue managers One significant benefit of uniform clusters, compared with regular clusters, is that MQ works to ensure that apps are spread over the available queue managers in the cluster to prevent messages building up when there is no connected app to consume them Uniform clusters are not available on z/OS use queue sharing groups instead
  • 63. © 2019 IBM Corporation67 A comparison Ability to simply apply common configuration across all queue managers at startup Simple and efficient distribution of apps across available queue managers Automatic app rebalancing to ensure an even spread of apps at all times Ensuring all messages are processed Capability Queue sharing groups Uniform clusters Yes Yes using Sysplex Distributor, a CCDT or an IP sprayer No. However with shared queues apps can access all messages regardless of where they are connected Yes. With shared queues apps can access all messages regardless of where they are connected to Yes as of 9.1.4 Yes using JSON CCDTs Yes Yes using AMQSCLM and automatic app rebalancing
  • 64. © 2019 IBM Corporation68 A comparison High availability Scaling up Capability Queue sharing groups Uniform clusters Yes, queue sharing groups provide a range of capabilities to provide best in class high availability of messages regardless of queue manager, hardware or app failure Queue managers can easily be added to the queue sharing group, Sysplex Distributor ensures an even spread of new workload, existing workload remains where it is Yes, uniform clusters provide high availability of the services using clustered queues and can be combined with technologies such as RDQM for queue manager high availability Queue managers can easily be added to the uniform cluster, automatic app rebalancing ensure an even spread of workload, both new and existing
  • 65. © 2019 IBM Corporation69 A comparison Scaling down Recommended app types Capability Queue sharing groups Uniform clusters Queue managers can easily be removed from the queue sharing group. Shared queues removes concerns regarding draining queues and Sysplex Distributor allows apps to reconnect to remaining queue managers Almost all apps can exploit queue sharing groups, but care needs to be taken regarding affinities Messages need to be drained from existing queues before a queue manager is removed from the cluster. App rebalancing ensures apps are spread over remaining queue managers Many apps can exploit uniform clusters but care is required when apps have affinities or use message/correlation id to locate specific reply messages
  • 66. 70 -Why you need scalability and resilience -Queue sharing groups -Achieving consistent configuration -Connectivity -Application considerations -Resilience -Putting it all together -A comparison with uniform clusters
  • 67. Thank You Matt Leming Archiect, MQ for z/OS lemingma@uk.ibm.com