Consul is a tool for service discovery and configuration. Consul is distributed, highly available, and extremely scalable.
Consul provides several key features:
Service Discovery - Consul makes it simple for services to register themselves and to discover other services via a DNS or HTTP interface. External services such as SaaS providers can be registered as well.
Health Checking - Health Checking enables Consul to quickly alert operators about any issues in a cluster. The integration with service discovery prevents routing traffic to unhealthy hosts and enables service level circuit breakers.
Key/Value Storage - A flexible key/value store enables storing dynamic configuration, feature flagging, coordination, leader election and more. The simple HTTP API makes it easy to use anywhere.
Multi-Datacenter - Consul is built to be datacenter aware, and can support any number of regions without complex configuration.
Service Segmentation - Consul Connect enables secure service-to-service communication with automatic TLS encryption and identity-based authorization.
Consul runs on Linux, Mac OS X, FreeBSD, Solaris, and Windows. A commercial version called Consul Enterprise is also available.
Please note: We take Consul's security and our users' trust very seriously. If you believe you have found a security issue in Consul, please responsibly disclose by contacting us at firstname.lastname@example.org.
An extensive quick start is viewable on the Consul website:
Full, comprehensive documentation is viewable on the Consul website:
Next, clone this repository into
then just type
make. In a few moments, you'll have a working
$ make ... $ bin/consul ...
make will build all os/architecture combinations. Set the environment variable
CONSUL_DEV=1 to build it just for your local machine's os/architecture, or use
make will also place a copy of the binary in the first part of your
You can run tests by typing
make test. The test suite may fail if
over-parallelized, so if you are seeing stochastic failures try
GOTEST_FLAGS="-p 2 -parallel 2" make test.
If you make any changes to the code, run
make format in order to automatically
format the code according to Go standards.