I'm developing a server application that accepts incoming connections and works with client applications. The customer wants to have two machines working: in case one goes offline, the second will back it up. The administrator of the machine (whom I almost don't interact with) came up with the load-balancing solution: there will be two identical server machines, each running the server process independently, and there will also be a load-balancer machine which will scatter incoming connections between the two working machines.
I have to note here that I'm not very familiar with the topic. I think, that load balancing makes sense with the website (which is also part of the setup that my server is a part of), but my server is not request-based: it maintains sessions and associated data in its heap memory and exchanges session- and state-specific data with the clients (who stay connected all the time). So if one machine goes down and the balancer switches the client to the other machine, that other machine will not be able to continue working with that client without the missing runtime data.
But the administrator told me that it is possible to have a synchronization between machines such that two processes running on two different machines will somehow have the same data without me having to implement anything. That seems to be a fascinating technology and I would like to get familiar with it, but I couldn't find which packages can do that or even how that technology is called. I encountered references to Linux HA several times, but I'm not sure that's what I'm looking for.
The OS is Linux-based, but I am more interested in general concepts rather than installing something myself, so packages or manuals for any system would be of interest.