cancel
Showing results for 
Search instead for 
Did you mean: 

"Load balancing" with HL7

Ryan_Wakefield
World-Class Innovator
World-Class Innovator

I have recently been researching in to trying to find a way to make our system a little more High availability. And one of the things that I have been trying to research into doing is figuring out a way to load balance hour hl7 sender, receiver, and processor servers. Right now we currently have our Cloverleaf integration engine pointing straight to one of the two servers that can receive and process the hl7 messages. However, if that server that is currently set up to receive and process those messages goes down, then we have to start the services on the other server that can receive and process these messages as well as have our team that manages the Cloverleaf engine change the pointer that they are sending to to the new server.

Now I understand that you can put a true load balancer in front of the web servers as well as the application servers. However, I know you can't put a true load balancer in front of the hl7 receiving servers as that would mean that it could send to either or of the two or more servers. So I was hoping to find a way to set up a single point in front of these two servers where it would work more like a passive active pointer than an active-active pointer.

Has anyone done this type of configuration or setup or have any recommendations on how to potentially achieve this? I am open to any and all suggestions.

7

3 REPLIES 3

Scott_Adair
Champ in-the-making
Champ in-the-making

I don't have experience with this in Cloverleaf-OnBase, but I use the Corepoint Interface Engine, and it seems like a viable solution would be including the failover logic into your interface. For instance, you could setup the two endpoints for OnBase and two endpoints in your interface engine, then have your interface logic use a try/catch to verify that the endpoint is up. If the try fails, send to the secondary. If the secondary also fails, just hold the message on the queue and throw an alert. If Cloverleaf supports logic for connection level events (eg, losing its peer as opposed to receiving a message), then you could trigger that logic off of a loss of the peer and store the result for the message processing logic.

That's not a bad idea, but that puts all the load on the engine. I was hoping there might be a way where you can have one one central point to connect to and that central point manages the connections to the true endpoints. I am very open to looking at any possibility right now. 😞

I agree that it's nice to have a true active/passive setup, but putting a balancer in between also creates another point of failure. Some questions to get a better understanding of your setup:
1) Are you sending acknowledgements back to Cloverleaf for incoming messages?
- If yes, does Cloverleaf support custom response/timeout handling?
2) Are you keeping the connection alive, or do you connect-send-ack-disconnect?
- If the connection stays alive, a drop could signal the need for failover. If not, you could likely swap peers between messages without issue.
3) How often does your primary receiver go down? Is this downtime mostly scheduled or unscheduled?
- Are you solving a persistent issue or an occasional one? And how much time/effort is worth it?
Getting started

Find what you came for

We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.