After much reading, thinking, testing and looping all over again, I am arriving to an architecture that seems to work pretty well for my needs. Those needs are a personal server to host a few personal and test websites and support the basic needs of a geeky household: mail server, web server, DNS, music server, backup server,…
I was looking for a solution that would give me flexibility for future upgradings and maximum security. As I was not sure about how many servers I would have at my disposal (they are limited by my income and my girl-friend comments) it would have to be flexible with hardware needs. Those included the processor and RAM limits but also the hard drive limits.
After much though, I went to a Linux-VServer solution. This means I took an Ubuntu server distribution and added a VServer kernel. This allows me to
create as many virtual servers as I feel the need to, thus effectively isolating one server from the other and increasing security and mobility.
On top of that I went for an LVM2 formatted partition. With that I’m able to add an unlimited number of hard drives and resize the different partition sizes as I whish and need.
The advantages of this architecture are many:
- Need a bit more for logs keeping? No worries, just resize.
- What about this backup server that is missing some disk space? Buy a 200Gb hard drive, plug it in and give an extra 50Gb for backups.
- Is your server getting a bit old? Buy a new one, and move the more resource demanding virtual servers to the new one, leaving some on the old server (virtual servers are just too easy to move around).
The first difficult decision I had to make was which one of the many virtualization solutions to choose. There is indeed VMware, Xen, Virtuozzo and many others I have forgotten now besides the VServer project. My needs were simple: I needed something aimed at the X86 that gave me Linux virtualization and minimum overhead. After studying the different options, I left aside the more hardware-expensive but famous packages like VMware and Xen for something that offered a Linux only virtualization. Linux-VServer shares the same kernel among all instances, while allowing the installation of different Linux-only distributions. For my needs it was just perfect.
Then came the more network-design specific questions.
I started to distribute IP addresses among servers depending of their role:
- 192.168.1.1-9: Those IPs are for proper hardware. my router and my different servers (the ones you can touch
) are all under this range. - 192.168.1.10-19: I keep here all my virtual servers.
- 192.168.1.20-29: I have under those IPs my test servers. When I want to play with an idea, test a new tool or a new concept, I just create a new server and implement it.
- 192.168.1.30-39: And finally, all my personal computers are here (laptops mainly).
I decided to separate as much as possible the tasks. So I created the following servers:
- Bind, DynDNS and DHCP: The DNS server is for LAN use, and the DynDNS allows me to update the different domains I have (3 at the moment). The DHCP server is there for my personal laptops, allowing me to have ‘pseudo’-static IP addresses, while allowing friends when necessary.
- Apache: Is where I run my websites.
- SVN: All my different svn repositories are here. Each time I start a new project or I have a new client, I make a new one. This allows me to have a cleanly differentiated development cycle for each project.
- Music: where I use a daapd server to, well, serve my music inside my LAN.
- Mail: that will host the SMTP server, as well as the POP and IMAP servers. Not implemented yet.
- Database: MySQL server is running here, as will PostgreSQL and other databases if needed at any moment. I haven’t decided yet where the pgpmyadmin will run though.
- Backups: My different computers need backup, and a lot of space!
And that’s it right now.
Of course this schema can accept some improvements. For example, right now all the web sites are on the same virtual server, but I intend in the future to install each server in a different CServer instance. As my router has limited NAT capabilities I will need to install a reverse proxy in one of the servers. This will imply that I will have to create an IP range specifically for the different web servers (maybe the 192.168.1.40-49 range?).
Furthermore, so many VServers imply, no matter how little overhead VServer has, a lot of RAM. As my sites run mainly under Django, I will have to find a lighter web server, maybe lighttpd.
My backup server could perfectly accept a more automatic backup strategy. I am fond of a pull backup where the client would not have to think about anything, but it is very difficult to implement. I am looking at flexbackup and seems to be attractive indeed!
To complete this backup strategy, I am loking for a friend that will accept a “backup exchange”. Right now, I do backup the files of my server into an external hard drive. But this is not good enough. With an exchange, I could do a complete backup of my files in a different geographic place, thus minimizing the chance of data loss due to an accident at my home (fire, thief,…), though I think I will not be able to think about that in such moments
Did I over-engineer it? Did I make the right choices? Will it be as easy to migrate as I hope? Only time will tell if I am right or wrong.
Update (31 Dec 2006): My network has changed a bit. I have added a reverse proxy, Nginx.

Entries
Yesterday was Adrián’s graduation day. Adrián is my only brother. Not so long ago he was 1m tall and now he’s graduating…
Someone contacted me concerning a
Para todos los amantes de la comida japonesa en Madrid, he conseguido encontrar unas buenas direcciones de restaurantes japoneses en Madrid. Direcciones de calidad y autenticidad.
En mi trabajo tengo un punto de vista privilegiado sobre las diferentes actuaciones de las Administraciones con respecto al
I have a friend that is trying to convince me to create something on Internet with him. Anything. But quickly. He has seen the trajectory of the
A cooperation between Nestlé and Coca-Cola has just released
Fuí a ver ayer la película de los Borgia. La verdad es que no estaba muy entusiasmado, pero finalmente me lo pasé bién.
Leo hoy en
I’ve closed my
Recent Comments