I'm looking to get some discussion, links, and opinions on the subject of availability.
In some cases, an application inside the OS may be designed to provide some kind of failover and high availability to another instance of that application on another system, without using something like HA at the virtualization layer.
The application components which are distrubuted among different systems can respond to an application outage caused by OS, physical server, or hypervisor issues by itself.
Then there is the option of using something like HA, to provide that high availability without relying on the application to failover.
What are the technical factors that determine when availability should be provided at the application layer and when it should be designed into the virtualization layer? I'm concerned with factors that are technical and not financial at this point.
TheVMinator wrote:
What are the technical factors that determine when availability should be provided at the application layer and when it should be designed into the virtualization layer? I'm concerned with factors that are technical and not financial at this point.
I think it really comes down to application performance + SLA's - can your application go down at all or do you need to maintain very high levels of uptime?
- If your application requires, or at least can benefit from multiple CPU's and warrants that configuration then FT, at least for now, is not an option so you would have to use some other method of HA - could be built into the applicaiton or just simply running multiple instances behind a load balancer which can detect application outages and not send traffic to that guest. This would permit, at least at some level depending on your application stack (web, app, db?), application availability even if a guest is not available.
- If your application is not critical - to you AND your company/users, you could just rely on HA assuming everyone understands there may be breif outages if HA has to kick in and restart that guest on another host.
I think for ultimate availability, you would need to rely on several layers of HA (not just talking vSphere HA) - vSphere, load balancing, built-in application awareness.
Great input. Thanks. So in no case would we really say that high availability at the virtualization layer is a hinderance? Is there any case in which you would not want high availability at the virtualization layer?
TheVMinator wrote:
Great input. Thanks. So in no case would we really say that high availability at the virtualization layer is a hinderance? Is there any case in which you would not want high availability at the virtualization layer?
I would certainly say it's been a frustration.
I've been through several proposals involving application layer fault tolerance, and someone always replies with "but VMware has FT, and that's cheaper and better".
In general, I would propose that if you can't accept the downtime associated with HA's failover time (which realistically, I've experienced is quicker than the time it takes for someone to get on the phone and log a fault), you would be unlikely to accept the risk involved in the application layer failure that FT doesn't help with.
Edit: This is a reference to FT. In no case would I find HA to be a hinderance.
Good points. If application HA is needed, FT is somewhat redundant, and won't work on a VM with more than 1 vCPU, and FT doesn't help if the application fails as opposed to the host.
I'm sure there are apps in the world that couldn't survive vSphere HA events which is where the in app monitoring/health checks come into play so it can self repair, or get assistance from a monitoring solution that can trigger tasks to remedy an outage.