[V9.1.2 Mar 2019][UNIX, Linux, Windows, IBM i]

Uniform clusters

The objective of a uniform cluster deployment is that applications can be designed for scale and availability, and can connect to any of the queue managers within the uniform cluster. This removes any dependency on a specific queue manager, resulting in better availability and workload balancing of messaging traffic. [z/OS]Uniform clusters are not available on IBM® MQ for z/OS®; queue sharing groups provide many of the capabilities of a uniform cluster.

Uniform clusters are a specific pattern of an IBM MQ cluster that provides a highly available and horizontally scaled small collection of queue managers. These queue managers are configured almost identically, so that an application can interact with them as a single group. This makes it easier to ensure each queue manager in the cluster is being used, by automatically ensuring application instances are spread evenly across the queue managers.

Uniform clusters remove some of the manual steps an administrator has to go through to create and administer a group of independent, interconnected queue managers. They move some client connection logic from the client to the queue manager, where information about levels of application activity can inform decisions at the clients, as to which queue managers they should connect to.

[V9.1.4 Dec 2019][UNIX, Linux, Windows, IBM i]You can simplify both initial creation of a uniform cluster, and subsequently keeping the configuration between the uniform cluster members identical, by using the automatic configuration and automatic clustering support. When using this capability, one configuration file describes the cluster and another represents the MQSC configuration to apply to all queue managers in the uniform cluster. On each queue manager restart, the configuration is reapplied and the cluster automatically forms. See Creating a uniform cluster from IBM MQ 9.1.4 for more details on using this feature.

To take full advantage of a uniform cluster, each application should also be scaled into multiple matching instances, preferably with at least as many instances as there are queue managers, if not many more.

An IBM MQ cluster, of whatever size, provides multiple capabilities:
  • A directory of all clustering resources, discoverable by any member in a cluster
  • Automatic channel creation and connectivity
  • Horizontal scaling across multiple matching queues, using message workload balancing
  • Dynamic message routing, based on availability
Uniform clusters use IBM MQ clustering for communication between queue managers, and balancing of workload between queues. However they differ from typical IBM MQ clusters in the following ways:
  • Uniform clusters typically have a smaller number of queue managers in the cluster. You should not create a uniform cluster with greater than 10 queue managers.
  • Every member of the cluster has near-identical configuration.
  • The cluster is typically used by a single application, or group of related applications.
  • The number of application instances connecting to the cluster should be greater than, or equal to, the number of queue managers.

    There should be a good balance between the putting and getting applications.

In a uniform cluster pattern, all queue managers in the cluster offer the same messaging services. For example, you might configure all cluster members to have the same local queues defined, and allow client applications to connect to any member of the cluster. You might also have the same server connection channels defined, and possibly the same authority records, channel authentication rules, and so on. However, members of the cluster can still have some differences in objects and configuration. For example, some applications might create temporary dynamic queues while they are connected to a queue manager. Also, some configuration updates might be rolled out across the members over a period of time; for example, new or updated certificates. As with regular IBM MQ clusters, two of the queue managers will require additional configuration to make them full repository queue managers.

The following diagram shows that the queue managers have similar configurations. They define the same queue called Q1 and the same server connection channel SVRCONN1.

Diagram representing various common configurations for three queue managers; either a common queue or a common channel.

Note that, for multiple queue managers with identical server connection channel names to work with a single client-channel definition table (CCDT), you must use the updated CCDT format introduced in IBM MQ 9.1.2. See client channel definition table in JSON format.

Applications names and application instances

An application name is displayed as the APPLTAG attribute of the DISPLAY CONN(*) TYPE CONN command. From IBM MQ 9.1.2, there is a change to the way in which the application name is set.

[V9.1.3 Jul 2019]From IBM MQ 9.1.3, an instance of an application is a set of closely related connections that provide one unit of execution for that application. Typically, this is a single operating system process, which can have a number of threads and associated IBM MQ connections.

For more information about application name and application instances, see Application development concepts.

Non-reconnectable clients

By definition, a non-reconnectable client cannot be reconnected to a different queue manager. Only reconnectable clients can be moved in order to achieve an even workload distribution. However, there might still be a good reason to connect a non-reconnectable client into a uniform cluster: For example, because the client creates some form of persistent state, and some other mechanism is used to ensure that there are instances of the application running in each of the queue managers.

Locally bound applications

Uniform clusters are expected to have IBM MQ applications connecting as client applications, rather than locally bound applications. Locally bound applications are not prevented from connecting to uniform cluster members, but uniform clusters cannot achieve even workload distribution with locally bound applications, because they cannot connect to any other member of the cluster.