Seeking advice: To virtualize or not?

dashmug asked:

I am a newbie system admin and I’m going to be administering a server for our intranet. I come from a PHP/Ruby/Python developer background.

This server will serve as the host for several “technology stacks”. One developer requires the usual LAMP stack, and then the Python and Ruby devs want to use Django and Rails respectively with the PostgreSQL DB. We might also add NodeJS and MongoDB in the future.

My concern is that there are too many services which I have to support on the admin side. These are only for our intranet so our traffic is not much. But I fear that if one service becomes troublesome, the others might also suffer.

Now I cannot use several separate servers due to budget constraints so I’m thinking of using virtualization technologies such as Virtualbox.

Am I correct in thinking that it will be much easier to let the developers use one VM for each stack they need? Or, should I just setup all services on that one server to avoid the virtualization overhead?

For virtualization, which software is better but at the same time easy to use for a newbie admin like me? I’ve used Virtualbox and Parallels on the Mac as a developer but not as an admin.

Update:

Further research led me to the concept of “containers”. It’s all new to me and I’m still reading more about it. I can’t say anything about it yet but I’m reading this two articles about it:

  1. Containers—Not Virtual Machines—Are the Future Cloud
  2. Containers vs. Hypervisors: Choosing the Best Virtualization Technology

My answer:


You’re quite right to think about virtualization; it would almost certainly be best to keep all of these distinct applications/services separated from each other.

I probably wouldn’t use VirtualBox for production, though; despite Oracle’s claims to the contrary it’s not particularly well suited for this due to its lack of well-developed management tools. I’d look at KVM/OpenStack (requires your time) or VMware vSphere (requires some time and your money) virtualization solutions first.

You might even go a step further and implement your own private OpenShift PaaS or something along those lines.

As for container-based virtualization, you basically have two choices: OpenVZ or LXC. The former can work well in some contexts, but it is difficult to manage well, and most OpenVZ installations I’ve seen are pretty nightmarish. And LXC is too immature to be useful in most situations right now. I wouldn’t necessarily base a new project on either of them right now, though hopefully LXC will be more usable by mere mortals in a year or two. (Note that OpenShift uses tightly controlled LXC containers.)


View the full question and answer on Server Fault.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.