Multi-instance queue managers and high availability
MQIPT can be used with multi-instance queue managers in high availability environments.
MQIPT has no persistent state and so there is no benefit in failing over MQIPT to another system. Instead, have multiple instances of MQIPT with identical mqipt.conf configuration files running on different systems. Monitor each instance of MQIPT for availability and restart it (on the same system) if necessary. This provides a set of identical MQIPT instances that can be used to route connections. We must then ensure that IBM MQ can route connections to MQIPT and that MQIPT can forward those connections to the destination queue manager.
Outbound IBM MQ channels can be directed to an available MQIPT instance in various ways, for example:- Use a load balancer or high availability router, such as the IBM Network Dispatcher from the WebSphere Edge Components product.
- Specify multiple connection names in the IBM MQ channel definition using a comma-separated list. IBM MQ then tries to connect to each MQIPT address in turn until it finds an available MQIPT instance.
We must also direct connections from MQIPT to the destination queue manager. If the high-availability configuration ensures that the IP address fails over with the destination queue manager, then no special MQIPT configuration is required: specify the destination IP address in the Destination route property and allow the failover operation to move the IP address with the queue manager.
However, if the IP address of the queue manager changes after a failover then we must arrange for MQIPT to forward the connection to the correct destination. This could be done in one of several ways:- Write a routing exit that checks which IP address and port number are accessible, and then override the route destination for each connection. Some sample routing exits are provided with MQIPT; they can be adapted for this purpose.
- Use a high availability load balancer to redirect the connection.
- Define multiple MQIPT routes, one for each IP address and port where the queue manager might be running. Then direct the IBM MQ connections to the various MQIPT routes, for example by listing all of the route IP addresses and port numbers in a comma-separated list in the connection name of the outbound channel.
It is also important to tune all of the end-to-end components on the network path:
- Connection attempts to unavailable systems must fail promptly
so that reconnect attempts can move on to the first available destination.
For MQIPT SSL routes, tune the SSLClientConnectTimeout route property to ensure prompt connection failure for unavailable destinations. Refer to the IBM MQ documentation for details of IBM MQ tuning parameters. Also, consult your operating system documentation for details of TCP/IP tuning for the operating system. In all cases, failed connection attempts should quickly return a network failure (for example, a TCP reset packet), or should time out without undue delay.
- Active connections to a failed system must be severed promptly
so that new connections can be established.
We should also consider the impact of a failover at a time when connections are actively using MQIPT. It is likely that network connections will be severed during a failover. For client applications, we can use the IBM MQ automatic client reconnection feature to re-establish severed connections. For message channels, we can specify a short retry interval so that the channel reconnects promptly. Consult the IBM MQ documentation for more information about automatic client reconnection and message channel retry configuration.
Parent topic: IBM MQ Internet Pass-Thru