So I've recently played around with Juju, and I see quite a bit of potential. But there are a few things I don't exactly understand. Most notably, I'm not sure of the purpose of the "bootstrapping instance" (aka "bootstrapping node" or machine “0”).
Using the example from the user tutorial:
$ bin/juju status
machines:
0: {dns-name: ec2-50-16-61-111.compute-1.amazonaws.com, instance-id: i-2a702745}
1: {dns-name: ec2-50-16-117-185.compute-1.amazonaws.com, instance-id: i-227e294d}
2: {dns-name: ec2-184-72-156-54.compute-1.amazonaws.com, instance-id: i-9c7e29f3}
services:
mysql:
formula: local:mysql-11
relations: {}
units:
mysql/0:
machine: 1
relations: {}
state: started
wordpress:
formula: local:wordpress-29
relations: {}
units:
wordpress/0:
machine: 2
relations: {}
state: started
Machine 1 is the mysql instance, and machine 2 is the wordpress instance. What exactly is machine 0 up to?
The bootstrap instance runs two critical pieces of the infrastructure: Zookeeper and the provisioning agent. Here is the architecture overview:
Right now this is actually a single point of failure.. though that will be solved in the near term by expanding the "bootstrap" service to 2 units either on demand, or in response to deploying a second machine. Luckily, Zookeeper is designed for high availability and the provision agent will use Zookeeper for coordination so its not a complex problem to solve, just one that needs to be solved before Juju is ready for real production usage.