I know many variants of this question has been asked already, but I still can't find a good answer to my needs.
What I want to do is setup a few (2 at minimum) VPS's to host my web apps on. I'd like to provide some load balancing (which is pretty easy achievable with let's say Varnish), and relatively high availability - which is my problem.
Using the load balancer (which I'd need to host on one of VPS's) introduces a single point of failure, which almost as bad as having just one machine to serve the content.
http://i.stack.imgur.com/lFafj.png
And AFAIK DNS round-robin method not only is a bad idea for load-balancing, but also does not provide a fail-over mechanism. If one of servers goes down, some people (with cached DNS IP) will still try to connect to the unavailable server. And forget short TTL - this is not the correct solution.
http://i.stack.imgur.com/mTLRf.png
One very important thing to consider: I want to have my VPS's divided across many datacenters, so if electricity or ISP fails in one datacenter, the website won't go down.
The only 2 solutions I can think of is either rely on dns round robin (and in case of server failure at least serve the content to some percentage of users untill recovery), or buy a dedicated server in a datacenter well prepared for blackout and equipped with several internet connections (which is insanely expensive compared to renting even 10 VPS's).
So the question is: What is the correct way to avoid single point of failure while having several load balanced VPS's?
Please excuse the images. They're just as-basic-as-possible examples of what I meant.