The first thing many people don’t understand on Amazon AWS EC2 ELBs is that ELB’s do NOT have master slave failover. They use round robin DNS failover which when an ip fails, it will use the next ip in the list of ips. I have read that takes anywhere around 30 seconds sometimes which some people do not like. I don’t know the exact details and it obviously depends on every clients/browser’s implementation. I am unaware of any browser specification saying what the timeouts need to be. For developer libraries like java’s http client, the timeout is customizable so each app may have a different failover time.
That said, it is very easy to reproduce what amazon does(almost) and install haproxy on 3 or 4 nodes and install your own DNS server(like bind9 on linux) and have it dish out round robin ips. You may not have the cool feature of the ELB where it checks the cpu or the number of sessions to each server(I am not sure which it uses exactly and need to do a bit more research there when I get a chance), BUT you will have round robin DNS and many load balancers just like the “EC2 with no VPC” has but you will have the nice VPC setup with NAT.
I am not sure if virtual ips will work on amazon but you could try that if you want a failover of 1 to 5 seconds and you just configure your heartbeat so that the other linux will take over the failed machine’s ip address. You would definitely have to use VPC for something like this and failover would be much faster than the ELB’s if it did happen to work. If you do happen to try this, PLEASE let me know!! I would love to hear if this works or does not work. There is this great article on setting up virtual ips