Project Titanicarus: Part 2 – Building the Servers

You will remember that each island in the design requires 9 servers. All servers are going to run Ubuntu, with the exception of the load balancers (Zen Loadbalancer Distro) and the firewall which I’ll be using PFSense for as it has a bunch of pre-built bells & whistles and a simple GUI to drive it with.

Here’s a copy of the island design to refresh your mind:

Single Island Design

Resource Allocation

So lets get our hands dirty.. You’re going to need 9 machines per island, I’ve got limited hardware so I’m going to be spinning up a bunch of virtual machines over a few physical servers. If you’ve got too much hardware sitting around, feel free to use actual hardware.

Load Balancers & Firewall

Disk: 16Gb (Thin Provisioned)
RAM: 
256Mb
Network Cards: 2 (1 x Internet, 1 x Internal)

The Load Balancers & Firewalls require very little disk space, RAM or CPU unless you’re doing complicated things which we are not doing here.

App Servers

Disk: 20Gb (Thin Provisioned)
RAM: 
1Gb
Network Cards: 1 (MTU 9000)

App servers need a little more disk space as they are going to have a bunch of applications running locally on them and will be logging locally until I have time to setup a centralised syslog solution. Application data is going to be stored on a replicated backend filesystem so application data does not need to be stored locally. App servers only have a single network card in them, I may look at putting a second in later if traffic to the filers begins to require it. I have enabled Jumbo Frames on the App Servers so they can transfer data as quickly as possible to and from the Filers.

MySQL Servers

Disk: 40Gb (Thick Provisioned)
RAM: 
1Gb
Network Cards: 1

MySQL servers I have allocated 40Gig Drives and 1 Gig of RAM per server. The RAM allocation may grow depending on how the databases I’m using grow. MySQL servers only have one Network card in them, they are storing all data locally and only need the network to talk to the app servers.

Filers

Disk: 50Gb (Thick Provisioned)
RAM: 
1Gb
Network Cards: 1 (MTU 9000)

For the Filers I have allocated 50Gig Disks and 1 Gig of RAM per box. I have also spent a bit of time allocating IO’s to these boxes so they have the highest priority over all disks in the array. These boxes are going to hold all the web and mail content in my cluster, having good disk performance is critical to everything else working well. The filers only get a single network card each, but they are setup to enable jumbo (9000 MTU) frames to enable fastest possible transfer speeds to the app servers.

Operating System

I’m using Ubuntu 12.04 on everything but the firewalls and load balancers. I’m not going to go into how to install Ubuntu as there are plenty of great howto’s already available. You just need a basic install on each box plus open-vm-tools because I’m running on VMware ESXi.

Each server role has been assigned 10 IP addresses:

Role IP Range
Networking Devices 10.0.0.0 – 10.0.0.9
Filers 10.0.0.10 -10.0.0.19
App Servers 10.0.0.20 – 10.0.0.29
MySQL Servers 10.0.0.30 – 10.0.0.39

Each server gets a single 10.x.x.x IP address, the firewalls and load balancers will also get public IP’s on their external interfaces. Once you’ve got the ubuntu servers installed, you’re going to start to want internet access for them and thats where the firewall from next weeks article comes in.

Last updated by at .