Jak se služba A dozví, kde běží služba B? Hardcoded IP? Load balancer? Consul od HashiCorp přináší elegantní řešení: service discovery s health checking, KV store a DNS interface v jednom.
Registrace a health checks¶
{
"service": {
"name": "user-api",
"port": 8080,
"tags": ["v2", "production"],
"check": {
"http": "http://localhost:8080/health",
"interval": "10s"
}
}
}
DNS interface: user-api.service.consul vrátí IP zdravých instancí.
Jakákoliv aplikace s DNS to může používat bez integrace.
Consul vs. etcd vs. ZooKeeper¶
etcd: pure KV, bez service discovery. ZooKeeper: robustní, ale komplexní. Consul: nejkompletnější řešení — SD + health checks + KV + DNS.
Service discovery je prerekvizita mikroslužeb¶
Consul je aktuálně nejlepší volba. Nasazení za den, provoz bezproblémový.