GithubHelp home page GithubHelp logo

dnlsur / pi-akka-cluster Goto Github PK

View Code? Open in Web Editor NEW

This project forked from eloots/pi-akka-cluster

0.0 0.0 0.0 61.11 MB

License: Apache License 2.0

Scala 80.61% Shell 2.17% Java 12.01% HTML 0.35% JavaScript 2.32% C 2.27% SWIG 0.27%

pi-akka-cluster's Introduction

Raspberry Pi - Kubernetes Cluster

Description

This code is used on a Raspberry-Pi based Akka Cluster to visually demonstrate cluster formation, split-brain occurrence and Split Brain Resolver.

Each node is equipped with an 10-LED RGB strip where different LED's are used to show each node's state (Joining, Up, Weakly-up, Unreachable, Leaving, Exiting and Down/Removed). In addition, it shows if a node has a so-called leader role and whether a node is running an Akka Cluster Singleton (if one is created on the cluster).

In addition to 10-LED Cluster there is also OLED display based cluster. Instructions for display assembly can be found here

In the last series of exercises, we deploy an actor based application (a Sudoku Solver) on the cluster and add monitoring (Cinnamon/Prometheus/Grafana) and tracing to the set-up (Open-tracing/Zipkin).

Maintainers & Changelog

Removed the changelog & list of maintainers. Git history contains this information.

Instructions

Preparing your laptop for a Raspberry-Pi based Akka Cluster workshop

Detailed instructions can be found here.

Building your own 5-node Raspberry-Pi based Akka Cluster

If you want to build your own physical cluster, you may want to have a look at the BOM here.

Pi-Hypriot installation instructions

The easiest and fastest way to flash a Hypriot OS instance that is ready to use for the Akka Cluster software can be found here.

Display version instructions are a little different and available here

Travel router configuration

In some cases it can be handy to use a so-called travel router which allows you to connect to a Wifi network on location, and still get access to a physical network with a fixed IP network address. This is because, currently, all nodes have statically configured IP addresses.

Details on how to configure such a (TP-Link TL-WR802N) router can be found here.

Build your own Akka-Cluster on Raspberry Pi

  • A bill of material can be found here
  • A custom 10-LED strip that can be directly plugged on a Raspberry Pi board's GPIO connector can now be bought from Lightbend! You can buy them in a pack of 5 here.
  • A schematic of the LED strip can be found here

Instructions for Display assembly are available here

Running 64-bit Ubuntu

Ubuntu has a 64-bit ARM version with built-in cloud-init support. As such, you can flash 64-bit capable boards (Raspberry Pi 3 or 4) with this operating system. The akka-pi-os-dhcp-64.yml cloud-init file has the required modifications to flash a card for that version of the OS on ARM, with the most important difference with the akka-pi-os-dhcp-32.yml being a 64-bit binary for the installation progress tracker.

This has been verified on a RPi4. A slightly modified version of the Hypriot flash utility is required though.

flash -n node-1 -u akka-pi-os-dhcp-64.yml \\n   http://cdimage.ubuntu.com/releases/20.04/release/ubuntu-20.04.2-preinstalled-server-arm64+raspi.img.xz

pi-akka-cluster's People

Contributors

agolubev avatar bantonsson avatar eloots avatar kikiya avatar manuelbernhardt avatar meszarosotto avatar pvangeel avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.