My home cluster


It took me a long time to decide on a home network architecture that was both scalable, usable and practical. When I say scalable I mean, horizontally (adding more resources). When I mention usable, I mean I want the technology to be a go-to environment, one that I always want to use and am willing to recommend. And when i talk about practical I mean it's open source, cheap and reliable. The cluster should also be secure and easy to backup.

The host

Taking some of these things into consideration, my first draft of this architecture was to run Windows Server 2012 with the hyper-v feature. Then using the hyper-v feature I tried running things like CentOS-7-min as a guest. I quickly found out that hyper-v doesn't allow you to port the virtual machine image easily. After discovering this I changed my mind to run windows 8.1 with VirtualBox. I have 12 GB of RAM, 1.2 TB storage and an AMD FX processor in my machine so I am able to have many machines at once. Despite many colleagues disliking Windows 8, I actually like it. I could have selected another host OS like CentOS-7-full but I went with Windows. Besides as a student at CSU we get basically any Windows software for free.

The guests

I have a VM as a template for all my different needs. For example I have a VM with ubuntu server 14 (which is CLI only), and it only has the OS installed and the updates from when I installed it (along with the server software i chose to install like MySQL and apache). Basically I can turn it on and then point to it on a web browser in my home and see the apache welcome page. Then from this template I clone it in order to make production or development environments. This way I can blow up an entire machine, delete it and then just clone again when I want a fresh one. I't pretty sweet. In addition to my ubuntu machine I have another ubuntu machine with a python, django and postgreSQL stack setup on it. This one is mostly for experimentation. A third one I have is a CentOS min template that I use for things like running hadoop clusters or mysql clusters.

Final thoughts

I think once a developer gets to a certain point they should look into virtualization - for everything! It truly is amazing to spin up a machine, alter it into an oblivion and then just delete it if you break everything. For example you can see what happens when you run "sudo rm -r /". Warning - do not run this on your home machine! VirtualBox is really cool because now it enables you to do open source development easily because now you can get a project's environment up and running in like 5 minutes by using things like vagrant. Also VirtualBox allows you to save VM images in different formats so you can port a VM to your friends VMware setup. At the very least having a home cluster has saved me money on cloud services (domain name required), allows for some cool development environments and taught me a bunch!

Let me know what stacks or configurations you use in the comments!