Tried Consul before, getting it running in a handful of AWS instances. But what I really wanted to do was to get it running on my laptop… maybe in a couple of Docker containers. Also wanted to learn autopilot. The terminology is a little confusing… still not sure the difference between ContainerPilot and Autopilot but they are definitely related. Seems like ContainerPilot is some helper agent that runs inside the container for the specific purpose of making it easier to communicate within the Triton ecosystem. I’m only playing on my laptop for now, so I won’t need that at the moment.
All the heavy lifting already done: https://github.com/autopilotpattern/consul
git clone https://github.com/autopilotpattern/consul
Read the readme a few times, it’s easy to miss but there’s a hint about how to run it locally.
After a few tries with the ordering of arguments, this worked:
docker-compose -f local-compose.yml up
It comes up and the log suggests it’s trying to look for other consul servers and keeps spamming this over and over:
consul_1 | 2017-12-22T08:04:22.211017624Z 2017/12/22 08:04:22 [ERR] agent: failed to sync changes: No cluster leader consul_1 | 2017-12-22T08:04:24.935820859Z 2017-12-22 08:04:24 containerpilot: No peers in raft consul_1 | 2017-12-22T08:04:24.968092389Z 2017/12/22 08:04:24 [INFO] agent: (LAN) joining: [consul] consul_1 | 2017-12-22T08:04:24.971486223Z 2017/12/22 08:04:24 [INFO] agent: (LAN) joined: 1 Err: <nil> consul_1 | 2017-12-22T08:04:24.972290759Z Successfully joined cluster by contacting 1 nodes. consul_1 | 2017-12-22T08:04:30.043010739Z 2017/12/22 08:04:30 [ERR] agent: Coordinate update error: No cluster leader consul_1 | 2017-12-22T08:04:32.15633869Z 2017/12/22 08:04:32 [ERR] agent: failed to sync changes: No cluster leader consul_1 | 2017-12-22T08:04:34.921874517Z 2017-12-22 08:04:34 containerpilot: No peers in raft consul_1 | 2017-12-22T08:04:34.95462677Z 2017/12/22 08:04:34 [INFO] agent: (LAN) joining: [consul] consul_1 | 2017-12-22T08:04:34.956292474Z 2017/12/22 08:04:34 [INFO] agent: (LAN) joined: 1 Err: <nil> consul_1 | 2017-12-22T08:04:34.957329632Z Successfully joined cluster by contacting 1 nodes.
Ah no problem I’ll just scale consul=3 and it should work.
First Control-C to get out and bring it down nicely to remove any vestigial networking.
$ docker-compose -f local-compose.yml down Stopping consul_consul_1 ... done Removing consul_consul_1 ... done Removing network consul_default
docker-compose -f local-compose.yml up --scale consul=3
All 3 consul containers come up, they start finding each other and fully happy and ready to go.