In this lesson, we’ve covered the core tasks for service registration and discovery with Consul. By understanding these five areas, you’ll be able to register, monitor, and query services reliably.Documentation Index
Fetch the complete documentation index at: https://notes.kodekloud.com/llms.txt
Use this file to discover all available pages before exploring further.
1. Interpreting a Service Registration
Every service registration file or API call includes several fields that tell Consul how to manage your service:- ID: A unique identifier (defaults to the service name if not set).
- Name: Logical service name used for discovery.
- Tags: Custom labels for grouping or routing.
- Port: Listening port of your service.
- Address: Optional IP address (otherwise uses the agent’s IP).
- Checks: Health check definitions (see next section).
A well-structured registration makes automated tooling and monitoring far easier to implement.
2. Registering a Service
You have three primary options to register a new service:| Method | Description | Example |
|---|---|---|
| HTTP API | Send a PUT request to the local Consul agent. | curl --request PUT --data @svc.json http://localhost:8500/v1/agent/service/register |
| Config Directory File | Drop a JSON or HCL file into /etc/consul.d/ and reload the agent. | /etc/consul.d/my-service.hcl then consul reload |
| Direct CLI Config Reference | Point the agent to a specific file and trigger a reload. | consul agent -config-file=/path/to/service.json |
After adding or modifying a file in the config directory, always run
consul reload to apply changes without downtime.3. Adding Health Checks
Health checks ensure Consul only routes traffic to healthy instances. Common check types:- HTTP
- TCP
- Script
4. Querying the Service Catalog
Verify your services and their health status using:| Interface | Command / Query | Notes |
|---|---|---|
| DNS | dig @127.0.0.1 -p 8600 web.service.consul SRV | Native DNS lookup for service discovery |
| HTTP API | curl http://localhost:8500/v1/catalog/service/web | Detailed JSON output, including node info |
| Web UI | Browse http://localhost:8500/ui/services | Interactive view of all registered services |
5. Prepared Queries & Failover
Prepared queries let you define advanced routing and failover rules:- Create a Prepared Query
- Define Failover Strategy
Include multiple service pools with weights or priorities. - Execute via API or DNS
- HTTP:
GET /v1/query/{query_id}/execute - DNS:
dig @127.0.0.1 -p 8600 {query_name}.query.consul SRV
- HTTP: