Connecting servers to each other with cluster connections

One important part of setting up a high-availability cluster of IBM UrbanCode Deploy servers is making sure that the agents can connect to the servers. If you’ve got four servers, how does an agent know which server to connect to? Part of that task, of course, is getting your failover connections set up properly. Another part is getting cluster connections configured between the servers.

Cluster connections, formerly known as network relays, open a port for Java Message Service communication between servers. These connections allow the servers to accept incoming JMS connections from agents and route the agent communications to the appropriate server. That way, each agent connects to the server that is running workflows on that agent.

For a while I thought that every server had to have a cluster connection to every other server, but I was wrong. Because the servers share the connections, you need only one cluster connection to each server in the cluster, including the server on which you create the connections. So if I’ve got four servers, I go to Settings > Network on one of those servers and create entries for each server. Those four connections look like this:

Those four cluster connections create links from each server to each other server. Here’s what the topology looks like when that’s all set up. The diagram shows two agents that connect to a cluster of four servers. The four servers are connected by four (total) cluster connections, even though it looks like more connections than that on the diagram.

This is part of why you don’t need to (and shouldn’t) route the JMS connections (default ports 7918 and 7916) through a load balancer. The servers create a JMS mesh that shares this information between them. JMS connections are long lived and have state information that isn’t visible to load balancers, so in this case load balancers don’t work well with JMS, anyway. However, the HTTP traffic from agents and users to the servers should be routed through a load balancer.