If you want failure resilience, you can build several servers, where each can server any clients, and put the data in some SAN or shared DB cluster. But if the clients connect directly to one server, and that server fails, then they get a network error. You can solve that by putting a load-balancer in front of them, either software base in a PC, or specialized hardware. In that case, the death of the individual server does not have to cause a network error in the client.
But then the load-balancer itself could die. So you're not really any better than before, right?
If I assume the DC makes sure the packets get safely to the switch(s) on which my servers are, is there any way to route traffic on one IP such that a hardware failure doesn't cause a lost connection? And could this be done without specialized hardware? Or am I missing some reason why it's not possible?
For the sake of the argument, we'll assume the (non-web) tragic is broken into messages, and that the same messages can be buffered and replayed safely, for every message that was received but wasn't acked by the failing server.