Consul
Consul is a swiss-army-knife for distributed systems. It includes:
- Service discovery;
- Failure detection;
- Key/Value storage;
- Distributed events, execution and locks.
One of the instalations I track more closely is from Datadog. They are reasonably big (1000+ node cluster) and they have been doing this since Consul 0.4.x, so lot’s of experience there. Also, they created a bunch of small tools that really make it simple to use Consul in production.
Articles
- Consul at Datadog;
- Consul as a Docker Service: uses Docker Swarm. Uses a overlay network, I would suggest
--net=host
plus dummy interface.
Presentations
Tools
- git2consul: Node-based, keep your configurations on git and push them to Consul;
- kvexpress: react to Consul KV changes, allows you to get stuff out of Consul, and put it in a file. Supports consul-template and friends, useful with watches. See also kvexpress - transporting configuration through Consul;
- sifter: protection against empty/blank events. This will allow your event handlers to fire only when they really need to.