I maintain the servers for a big webproject (java + postgres + some tools around) which is currently hosted on three machines:
- Machine: Mailserver (postfix), Ad-Server (lighttpd + php + openx)
- Machine: Tomcat + Servlet
- Machine: PostgreSQL-Server, static content (via lighttpd)
All machines run Debian Stable and are connected via a VPN (openvpn). As the hardware is very old (AMD Athlon 3000+ and 2GB RAM on each) its time for a change.
These servers should now be replaced by one big machine (16GB Ram, big Intel CPU's supporting VT, 5 IP's).
The question now is: Should I still seperate the differents tasks using Virtual Machines or should I simply put everything on the machine as usual. Where are the pros and cons?
I thought of the following:
Pro Virtualization:
- Security: As the vm's are seperated you cant take the whole machine (hopefully)
Con Virtualization:
- Performance: There is a performance loss
- Work: Every maintaince-work has to be done several times for every vm
- Communication: Communcation of the different vm (Servlet do Database) gets more complicated.
- Hard Memory Limits: I have to assign static resources (like Memory) to each machine. This can be a con if say my db-server needs more ram for 30 seconds (than it got assigned) and there would be more ram available on other machines. With no virtualization this wouldn't be a problem.
Thanks for any hints.