Building a Docker v1.12 Swarm cluster on ARM

Post on 16-Jan-2017

1.110 views 1 download

Transcript of Building a Docker v1.12 Swarm cluster on ARM

Dieter Reuter @quintus23mSenior Consultant, SEAL SystemsStefan Scherer @stefschererSoftware Engineer, SEAL Systems

Building a Docker Swarm on ARM

HardwarePi’sSwitchPower supply

Agenda

SoftwareSD card imageflash tooldocker-machine

Demodocker-compose

• Education• Learning cloud principles• Hands-on cluster

Why?

Build Hardware

Parts list

For a four node swarm.

• 4x Raspberry Pi 2/3• 5 port switch with 5V• 6x USB power supply• 20x Distant bolts 2.5mm• 4x micro USB cable• 1x 5.5mm barrel USB• 4x flat patch cable• 4x Micro SD cards

Build Hardware

HypriotOSGet started with Docker on ARM in 5 minutes

For Linux and Mac

Small helper script to do all these in just one command:

• Download the SD card image• Uncompress it• Set hostname for device• Optionally set WiFi config

Flash HypriotOS

Flash HypriotOS

$ flash \ --hostname swarm01 \ --ssid wifipsk \ --password wifipwd \ https://downloads.hypriot.com/hypriotos-rpi-v0.8.0.img.zip

# repeat for swarm02..swarm04

Find your Pi

$ ping swarm01.local

Add your SSH key

$ ssh-keygen -R swarm01.local

$ ssh-copy-id pirate@swarm01.local

# repeat for swarm02..swarm04

… some plumbing code

$ export TOKEN=$(for i in $(seq 1 32); do echo -n $(echo \ "obase=16; $(($RANDOM % 16))" | bc); done; echo)

$ function getip() { (traceroute $1 2>&1 | head -n 1 | \ cut -d\( -f 2 | cut -d\) -f 1) }

Create Docker Swarm manager v1.11

$ docker-machine create -d generic \ --engine-storage-driver=overlay --swarm --swarm-master \ --swarm-image hypriot/rpi-swarm:latest \ --swarm-discovery="token://$TOKEN" \ --generic-ip-address=$(getip swarm01.local) \ swarm01

Create Docker Swarm nodes v1.11

$ docker-machine create -d generic \ --engine-storage-driver=overlay --swarm \ --swarm-image hypriot/rpi-swarm:latest \ --swarm-discovery="token://$TOKEN" \ --generic-ip-address=$(getip swarm02.local) \ swarm02

# repeat for swarm03..swarm04

Demo Time

Create Docker Swarm manager v1.12

$ ssh pirate@swarm01.local docker swarm init

Create Docker Swarm nodes v1.12

$ export MASTER=$(getip swarm01.local)

$ ssh pirate@swarm02.local docker swarm join $MASTER:2377

$ ssh pirate@swarm03.local docker swarm join $MASTER:2377

$ ssh pirate@swarm04.local docker swarm join $MASTER:2377

Control your Docker Swarm

$ ssh pirate@swarm01.local

$ docker info

$ docker node ls

Running our first Swarm service

$ docker service create --name ping \ hypriot/rpi-alpine-scratch ping 8.8.8.8

$ docker service ls

$ docker service tasks ping

Scale our Swarm service

$ docker service update ping --replicas 10 # or$ docker service scale ping=10

$ docker service tasks ping

• Self made cluster• Pico Cluster• BitScope Blade

Your ideas?

Examples

• http://blog.hypriot.com• http://picocluster.com• http://bitscope.com/product/blade

Further Links

Thank you!@quintus23m@stefscherer

@HypriotTweets