3

I'm currently in charge of 2 really big servers (128GB Ram & 32 8-code Xeon CPU each) at my university running Ubuntu 12.04. Students are suppose to use them for big data analysis. We want every user to be able to use all resources, however, things is getting a bit messy. Users can install whatever they like at their home directories (e.g. Tomcat) but they're starting to complain about issues like ports being taken by others.

Someone suggested we do some sort of virtualization (e.g. LXC) and give users access to containers. Other say we do somthing like AWS and make users create the resources they need for their work.

Any suggestions?

4 Answers 4

4

Virtualization is a great way to give everyone their own "sandbox". LXC definitely is an option but you could also just use VMWare ESXi or Citrix XenServer. Both have commercial variations but they also have single-server free licenses.

The reason using ESXi or XenServer might work better is the ease of being able to take snapshots or cloning systems. So if someone wants to try something, you can take a snapshot, let them install whatever and (after it breaks everything), rollback.

1
  • 1
    XenServer is basically fully free now and there is a project where users can self-service.
    – ETL
    Mar 9, 2014 at 21:53
3

If you choose to do virtualization, I would advise you to stick with KVM and virt-manager for easy creation / management of your VMs. KVM is a first class citizen on Ubuntu, performance is great (phoronix benchmarks show KVM performing better than Xen on Ubuntu 12.04), support is great, it just works and is very reliable.

OpenStack is a great piece of software, but adds lots of complexities you may not want to deal with now.

If you follow this route, a few tips that have worked for me: 1. Use the virtio devices for network and disk on your VMs; 2. Plan your networking well, I would say maintain the host as the gateway, DHCP server and firewall for all VMs, use Shorewall to handle the task; 3. Build and configure a base VM with ubuntu server using the virtual kernel (apt-get install linux-virtual) and keep it untouched. Everytime you need to setup a new VM for a student all you have to do is clone this base install, change /etc/hostname and /etc/hosts to give the VM a unique name and off you go.

I suggest you just give KVM and virt-manager a quick try before you embark on a full new installation of VMWare, XenServer or whatever which will take hours of work. You can test KVM+virt-manager in a few minutes changing almost nothing on your current ubuntu set-up, it is the easiest way to try virtualization and if you do not like it you will still have your servers running just like they always did.

1

LXC or Docker would be a good starting point. Unlike OpenStack, VMware or Xen/KVM you won't need to build a massive amount of infrastructure around it, i.e. its not a massive project.

And it will achieve the goal of having a separate TCP/IP stack per user so they won't port conflict.

You can template Docker machines so some of the comments in other answers are false.

AWS is a shout too but there are cost implications and you'll have two redundant bits of hardware so I'd cover that off first.

1

Sounds like you might want to consider having a look at Openstack. I know there's an Ubuntu implementation of it over at Ubuntu | Openstack

I don't know much about the Ubuntu version, but certainly the RHEL offering should allow you to allow students to spin up their own instances of applications that they need, all handily jailed and with their resource usage controlled by cgroups, etc. It will also allow students to interact with the service via a browser, and will force them to choose services from a predetermined set of offerings rather than letting them hack up their own versions.

Hope this helps, drew

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .