All Projects → rcarmo → Raspi Cluster

rcarmo / Raspi Cluster

Licence: other
Notes and scripts for setting up (yet another) Raspberry Pi computing cluster

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Raspi Cluster

Swarmlet
A self-hosted, open-source Platform as a Service that enables easy swarm deployments, load balancing, automatic SSL, metrics, analytics and more.
Stars: ✭ 373 (+58.72%)
Mutual labels:  cluster, swarm
Turing Pi Cluster
Turing Pi cluster configuration for Raspberry Pi Compute Modules
Stars: ✭ 233 (-0.85%)
Mutual labels:  raspberry-pi, cluster
Picluster
A Simplified Docker Swarm or Kubernetes Alternative to Container Scheduling and Orchestration
Stars: ✭ 390 (+65.96%)
Mutual labels:  raspberry-pi, cluster
clusterplex
ClusterPlex is basically an extended version of Plex, which supports distributed Workers across a cluster to handle transcoding requests.
Stars: ✭ 123 (-47.66%)
Mutual labels:  cluster, swarm
Ansible Rpi K8s Cluster
Deploy Raspberry Pi Kubernetes cluster using Ansible
Stars: ✭ 131 (-44.26%)
Mutual labels:  raspberry-pi, cluster
Awesome Raspberry Pi
curated list of projects with raspberry pi
Stars: ✭ 309 (+31.49%)
Mutual labels:  raspberry-pi, cluster
Amp
** THIS PROJECT IS STOPPED ** An open source CaaS for Docker, batteries included.
Stars: ✭ 74 (-68.51%)
Mutual labels:  cluster, swarm
deploykit
A toolkit for creating and managing declarative, self-healing infrastructure.
Stars: ✭ 2,246 (+855.74%)
Mutual labels:  cluster, swarm
Coinboot
A framework for diskless computing
Stars: ✭ 131 (-44.26%)
Mutual labels:  raspberry-pi, cluster
Miniswarm
Docker Swarm cluster in one command
Stars: ✭ 130 (-44.68%)
Mutual labels:  cluster, swarm
docker-system-prune
Docker system prune automatically
Stars: ✭ 20 (-91.49%)
Mutual labels:  cluster, swarm
Ansible Kubernetes Openshift Pi3
Ansible playbooks for setting up a Kubernetes Raspberry Pi 3 cluster
Stars: ✭ 189 (-19.57%)
Mutual labels:  raspberry-pi, cluster
Terraform Digitalocean Docker Swarm Mode
Terraform module for provisioning a Docker Swarm mode cluster on DigitalOcean
Stars: ✭ 59 (-74.89%)
Mutual labels:  cluster, swarm
Raspberry Pi Dramble
Raspberry Pi Kubernetes cluster that runs HA/HP Drupal 8
Stars: ✭ 1,317 (+460.43%)
Mutual labels:  raspberry-pi, cluster
Docker Blinkt Workshop
Get into physical computing with Docker and Raspberry Pi
Stars: ✭ 151 (-35.74%)
Mutual labels:  raspberry-pi, swarm
Deploykit
A toolkit for creating and managing declarative, self-healing infrastructure.
Stars: ✭ 2,237 (+851.91%)
Mutual labels:  cluster, swarm
Haven Platform
Haven is an open source Docker container management system. It integrates container, application, cluster, image, and registry management in one single place.
Stars: ✭ 223 (-5.11%)
Mutual labels:  swarm
Magicmirror
MagicMirror² is an open source modular smart mirror platform. With a growing list of installable modules, the MagicMirror² allows you to convert your hallway or bathroom mirror into your personal assistant.
Stars: ✭ 15,705 (+6582.98%)
Mutual labels:  raspberry-pi
Reading And Comprehense Redis Cluster
分布式NOSQL redis源码阅读中文分析注释,带详尽注释以及相关流程调用注释,提出改造点,redis cluster集群功能、节点扩容、槽位迁移、failover故障切换、一致性选举完整分析,对理解redis源码很有帮助,解决了source insight中文注释乱码问题,更新完毕(redis源码学习交流QQ群:568892619)
Stars: ✭ 224 (-4.68%)
Mutual labels:  cluster
Orac
Orac : virtual modular synth
Stars: ✭ 224 (-4.68%)
Mutual labels:  raspberry-pi

raspi-cluster (now with Kubernetes thanks to k3s!)

Pi 2

What?

A while ago I decided to build a small cluster of Raspberry Pi boards. I've since upgraded to Pi 2 boards, and this repository is used for versioning design notes, configuration files and sundry.

Why?

I wanted something challenging to do in terms of distributed processing, and lacked dedicated hardware to do it. There's a lot to be learned even from simple, unsophisticated solutions, and virtual machines can only do so much.

How?

The cluster consists of five nodes: a master and four slaves. The master acts as a gateway, DHCP and NFS server and the slave nodes get their IP address and /srv/jobs directory from it.

All slave nodes are identical -- completely identical, except for hostname and MAC address, and there is no need to log in and configure things manually for each node.

Here's a few more shots of the original version, with the 5-port PSU and the old Model B boards:

Cabled Power cords First assembly

In retrospect I probably ought to have gone for longer USB cables and moved all of the cabling to the USB side (since it leaves the SD card slot clear), but I also need to be able to see the activity lights, and the Pi isn't exactly designed for easy stacking.

A larger cluster is certainly feasible, but 5 boards is as much as I can power with the PSU I have.

Hardware

This is a partial list of the stuff I'm using (Amazon UK affiliate links):

Software

As a base OS, this cluster spent most of its useful life using the Ubuntu 16.04 official image for the Pi 2, which worked much better than Raspbian for running Swarm, Docker or Spark (nevertheless, the configuration files in this repo should work in both systems).

Up to the point where I had unfettered access to public cloud resources as part of my work, the cluster ran a mix of Docker Swarm and the occasional Clojure program using Hazelcast atop JDK 1.8, as well as Jupyter, which runs very nicely indeed and provided me with an agnostic, notebook-oriented front-end.

Earlier (back in the Rev 1 days) I had set up Disco on it and intended to fiddle with MPI, but now I have plenty more ways to parallelize things.

It's a bit ironic to do some kinds of processing on merely 5GB of aggregated RAM, but my interest was in the algorithms themselves and I never planned on doing something silly like tackling the next Netflix Prize with this -- besides, running things on low-end hardware is often the only way to do proper optimization, and I like the extra challenges.

List of packages involved so far:

  • k3s, which is the latest addition and has rendered pretty much everything else below obsolete. See the k3s folder for a simple Makefile to install it and keep it running.
  • etcd, which I was using to store (and distribute) configurations across nodes
  • Docker, which ships with Ubuntu 14.04 and makes it a lot easier to build and tear down environments. Currently trying to get 1.7 to build so I can use swarm and other niceties.
  • OpenVSwitch, which I'm using for playing around with network topologies
  • Jupyter, which provides me with a nice web front-end and basic Python parallel computing.
  • Spark, which has mostly replaced Disco for map/reduce jobs.
  • Dash, a real-time status dashboard (rewritten in Go, available under the dashboard folder here, and still being worked on)
  • A custom daemon that sends out a JSON-formatted multicast packet with system load, CPU usage and RAM statistics (written in raw C, available in tools)
  • ElasticSearch, which I'm using for storing metrics.
  • Oracle JDK 8
  • leiningen (which fetches Hazelcast and other dependencies for me, via this library)
  • Nightcode as a development environment (LightTable doesn't run on ARM, and a lot of my hobby coding these days is actually done on an ODROID)
  • distcc for building binaries slightly faster
  • dnsmasq for DHCP and DNS service

This repository also ships with a very simple monitoring dashboard that looks like this:

Updated dashboard

But isn't the Raspberry Pi slow?

Well spotted, young person. It was, and the Pi 2, despite being a marked improvement, isn't exactly a supercomputer. But it's also cheap, and beggars can't be choosers.

Nevertheless, the current configuration provides me with 20 ARMv7 cores clocked at 1GHz, and that's nothing to sneeze at.

But I'm open to sponsoring so that I can upgrade this to have at least twice as many boards, or move to a set of beefier ARM64 boards. The NVIDIA Jetson, in particular, would be great, but five of them aren't easy to come by.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].