Under the hood of amazee.io’s Raspberry Pi cluster

As technology becomes more complex, many people just stop paying attention how systems are built and simply use the tools. It’s all magic after all, right?

Well, we wanted to lift the curtain and reveal the magic of the amazee.io, and do it plainly, because nobody should need a technical degree to understand how their hosting is handled.

Our team spent a lot of 2016 traveling to camps and conferences with the standard “camp table” setup. With a long lineup of 2017 on the horizon, we wanted to be able to share something more tangible than a screen with a fancy network diagram. We wanted to demonstrate a complex system which can handle failover and recovery visually. We also joked that someday we will run our largest system on a credit card size computer.

Well… the joke’s on us now.

Michael and I sat down and discussed what we could do to demonstrate the amazee.io cluster and we arrived at the conclusion — we could just set up our cluster on a bunch of Raspberry Pi.

Not sure if it would work, an order was made, a package arrived, and we started to tinker.

ARM-Challenges

After a few hours of hard work, we got the basic components running. We were actually astonished that many parts of the cluster just worked. The processor of these small computers is based on ARM architecture rather than the usual x86 architecture, so we prepared ourselves for long hours of troubleshooting to figure out how to make it work.

A fair amount of time went into figuring out how to get the database part of our cluster running, which makes sense, because nobody else was (seemed to be?) running a MariaDB Galera Cluster with MaxScale on a multitude of Raspberry Pi that we could learn from. After twisting some lines of source-code around, we got the database cluster up and running. Happiness is running hand-compiled code successfully.

It’s all about the packaging.

While we had the technology was up and running, the presentation was still a bit rough. If you like open circuitry and messy cables, you would’ve loved it. For presenting a state-of-the-art cluster system like we intended, we needed to tidy it up a bit.

To display the computer’s activity, we bought this 5-inch display screen, which you can connect to the Raspberry Pi directly via HDMI, meaning you don’t need to install a driver. The display has also a micro-USB port, which powers both the display and your Raspberry Pi.

To complete the setup, we found the 3D designs for a suitable case on Thingiverse which allowed us to mount 5-inch HDMI screens and the Raspberry Pi in one neat, compact package.

If you plan to 3D print your cases, make sure you add a bit of wiggle room for the display. Too tight, and you’ll need to break out a file like we did.

If you want to get really fancy, splurge on a 7-inch display screen and a nice stand like this one from PiHut and you’ll have everything you need, no 3D printing required. We use the 7-inch display in our setup to illustrate a client’s computer accessing a website hosted on the amazee.io cluster.

Demoing the cluster

We demoed the Raspberry Pi cluster for the first time at Drupal Mountain Camp, then again at DrupalCon Baltimore to much delight. People love the blinking lights and seem to have a lot of fun pulling out and re-inserting cables, watching the failover in action.