Consul makes it simple for services to register themselves and to discover other services via a DNS or HTTP interface. Register external services such as SaaS providers, as well.
Pairing service discovery with health checking prevents routing requests to unhealthy hosts, and enables services to easily provide circuit breakers.
Consul scales to multiple datacenters out of the box, with no complicated configuration. Look up services in other datacenters, or keep the request local.
Flexible key/value store for dynamic configuration, feature flagging, coordination, leader election and more. Long poll for near-instant notification of configuration changes.
Look up services using Consul's built-in DNS server. Support existing infrastructure without any code change.
admin@hashicorp: dig web-frontend.service.consul. ANY
; <<>> DiG 9.8.3-P1 <<>> web-frontend.service.consul. ANY
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29981
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;web-frontend.service.consul. IN ANY
;; ANSWER SECTION:
web-frontend.service.consul. 0 IN A 10.0.3.83
web-frontend.service.consul. 0 IN A 10.0.1.109
admin@hashicorp:
Consul provides a flexible, hierarchical key/value store accessible via a simple HTTP API. This data is replicated across multiple servers and is highly available. Other HTTP APIs let you long poll for changes to a key.
admin@hashicorp: curl -X PUT -d 'bar' http://localhost:8500/v1/kv/foo
true
admin@hashicorp: curl http://localhost:8500/v1/kv/foo
[
{
"CreateIndex": 100,
"ModifyIndex": 200,
"Key": "foo",
"Flags": 0,
"Value": "bar"
}
]
admin@hashicorp: