Recently, I’ve completed construction of a 40-node computing cluster based on the Raspberry Pi single board computer. Below is a quick overview video, showing the finished product.
And here’s another one showing a few of the basics about how the case works.
In the practical sense, this is a supercomputer which has been scaled down to the point where the entire system is about as fast as a nice desktop system. Most of the resources available to individual nodes have been proportionally scaled. I believe this will make it an ideal testbed for distributed software.
My goals for this project were as follows:
- Build a model supercomputer, which structurally mimics a modern supercomputer.
- All hardware required for the cluster to operate is housed in a case no larger than a full tower.
- Parts that are likely to fail should be easy to replace.
- It should be space-efficient, energy-efficient, economically-efficient, and well-constructed.
- Ideally, it should be visually pleasing.
I feel I have met these goals with my design.
Here are the specifications of the final system:
- 40 cores Broadcom BCM2835 @700 MHz
- 20 GB total distributed RAM
- 5 TB disk storage – upgradeable to 12 TB
- ~440 GB flash storage
- Internal 10/100 network connects individual nodes
- Internal wireless N network can be configured as an access point or bridge.
- External ports: four 10/100 LAN and one gigabit LAN (internal network), 1 router uplink
- Case has a mostly toolless design, facilitating easy hot-swapping of parts
- Outer dimenions: 9.9″ x 15.5″ x 21.8″.
- Approximate system cost of $3,000. (The first one cost slightly more.)
Why Build It?
I needed a computing cluster that I could use for testing distributed software. Since I don’t have free access to a traditional supercomputer, I decided to build my own. Originally, I planned to create it as part of my MSCE thesis, but ended up with a different project for that. As a consequence, I pursued this as a personal project instead.
Since I was making a significant investment in this, I wanted it to be something I would be proud to show people for the next several years.
Design and Build Process
I made the choice early in the planning process for this project that no more than one expensive piece of specialty equipment should be required for its construction. This maximizes the chance that any given maker will have access to the required equipment. As I’m a member of Dallas Makerspace, I have access to CNC laser cutter through my membership, which I used extensively during the build process. A laser cutter with at least an 18″x24″ bed would be required for recreating this cluster case.
Complete plans for this project can be found through the following links:
- What You Need
- Circuit Boards
- Power Cards
- Raspberry Pi Cards
- Router Card
- Ethernet Switch Cards
- Case Central Structure
- Case Side Panels
- Fan and Filter Harness
- Ethernet Jack Mounts
- Hard Drive Array
- Ethernet Cables
- Power Cables
- Final Assembly
- Moving Forward
During this project, I acquired/improved the following skills:
- Process design: Learned to better organize design tasks for an efficient design process
- Working with constraints: Learned to better work with strict design constraints
- Manufacture of product requires access to only one specialty tool – a CNC laser cutter with a 2′x2′ bed
- End product dimensions were limited to the size of a full tower case
- Prototyping: Gained additional experience in masking/etching printed circuits
- Tried 2 new masking techniques
- Made my own etchant for the first time
- Equipment: Gained a great deal of skill in the operation of a CNC laser cutter
- I had no prior experience. Now I’m one of the top resources for laser cutter knowledge at Dallas Makerspace.
Now that the hardware is finished, I’ll be installing some common software packages for distributed computing, in order to evaluate their potential and train myself on them. This will include as many of the packages that run on top of Apache Mesos as possible (e.g. MPI and Hadoop). In the future, I will be writing my own distributed applications, which may include my own cluster management software and some form of reality simulation engine.