For a project I have the task of planning a high availability setup for a web shop and CMS system. However, of course the project is on a tight budget. So a high end solution might not be in the budget.
There will be two machines running web server (CMS, shop), one machine running the database, and one machine for running a fax server needed for delivering orders to partners. All systems run Linux. All of these components need to be highly available and should support transparent fail over.
To reduce hardware costs I think about a virtualized environment. There is a lot of information out there, but I do not know exactly were to start. It seems obvious that at least to servers are needed as host for the virtual machines, so that there is no single point of failure.
Which is the best way to go to support high availability?
The first question is which virtualization solution is the best in this situation. There needs to be some kind of management interface. There need to be a way to move a running virtual machine from one host to another, so maintenance of the host can be done. There need to be some kind of mechanism, so that virtual machines are still available if one host fails. Could you advice on a valid solution here?
A shared file storage seems to be prerequisite of high availability in most cases (expect VMware vSphere which is rather expensive). However, would rather put more money in the virtual machine hosts than to add another two servers to the setup to provide a redundant NFS file store. Is there a possibility to get along with only the two virtual machine hosts? A solution might be two use these two as NFS hosts also. Is there much of a performance penalty to do this?
EDIT: I aim at a 99,9% availability. However, no 24/7 availability is required as there are regular business hours, which gives some space to maneuver. The period of availability which has to be in some way guranteed is between 10am to midnight.