1

I have just set up a bunch of VMs at home and am looking for some interesting things to play around with. I was just wondering what kind of random stuff can one experiment with with such a set up? I'm not looking to set up stand-alone servers but I am thinking of experimenting with inter-machine stuff.

As an example, I have got a single VM exposed to the outside world with a reverse proxy running on it that points to other VMs. Also, all these VMs are running Debian and I have one VM running as a local apt cache to the rest of the VMs.

Are there some sort of distributed or cluster or some other interesting thing to play with? VMs are supposed to be fun!

5 Answers 5

9

I know what I would do with a bunch of VMs (XKCD #350):

Viruses so far have been really disappointing on the 'disable the internet' front, and time is running out.  When Linux/Mac win in a decade or so the game will be over.

1
  • +1 for including an xkcd strip!
    – sybreon
    Sep 10, 2009 at 9:36
6
  • Look at Hadoop, HBase or any of the other distributed datastores, like Facebook's Cassandra. Hadoop is a clone of Google's Map/Reduce infrastructure. Mmmmm parallel processing.

  • You could play with replicated databases; slony on PostgreSQL or native replication in MySQL.

  • Load balancing and clustering with keepalived, varnish or nginx.

  • Configuration management with Puppet or chef.

  • Learn how to write sessionless web applications, so you can cluster them easily.

  • Provision new servers quickly. Useful for testing applications.

  • You could try load-testing an application.

If you work in a development shop, all these skills could be useful.

2
  • I recentrly did in my lab a high available environnement with 4 vms : 2 load balancers plugged on two chrooted Apaches + a mysql replication that was exciting
    – Razique
    Sep 4, 2009 at 8:00
  • 1
    Worth playing with networks as well. Install OpenBSD/Linux + Quagga on a few of them, and have a play with OSPF/BGP.
    – Cian
    Sep 4, 2009 at 8:16
2
  • Learn Erlang, Clojure, Scala, or some other language that's aimed at distributed, reliable systems.
  • Try setting up a high availability cluster for various services. Basically, follow the guides on linux-ha.org to set up DRBD, Heartbeat, STONITH, etc.

Either way, take advantage of your VMs to actually torture test the setups. Pull VMs offline and bring them back and see what happens. Do your worst to try to get yourself into a split-brain situation. See if you can figure out how to fix it. See what happens (ie, what kinds of errors occur) if more nodes go offline than your setup is supposed to be able to handle.

1

Write your own BOTnet

You can learn a lot about distributed computing doing this. Plus, it makes it easy to maintain all those virtual boxes.

This kind of knowledge is great for your career... these kind of skills are strongly in demand.

0

On my VM's I mainly test clustering, high availability, fail over e.t.c.

Then try removing nodes, breaking it... adding extras, re syncing and so on

This sort of thing intrests me and before virtualisation, it was almost impossible (well very expensive) to test. Now you can do this on a single box!

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