服务注册与发现
Consul提供了HTTP和DNS接口,用于注册服务和查询服务信息。服务可以在启动时通过HTTP接口向Consul注册,也可以通过配置文件或命令行参数指定注册信息。以下是一些常用的命令:
consul catalog services
: 列出所有已注册的服务。consul catalog nodes
: 列出所有已注册的节点。consul catalog service
: 列出指定服务的所有实例。consul agent -config-dir
: 通过配置文件注册服务。
以下是一个示例:
代码语言:javascript复制$ consul agent -dev
$ curl http://localhost:8500/v1/agent/service/register -d '{
"name": "web",
"address": "localhost",
"port": 8080,
"check": {
"http": "http://localhost:8080/health",
"interval": "10s"
}
}'
$ consul catalog services
{
"web": []
}
$ consul catalog service web
[
{
"ID": "web-a63c9b48-ba12-7a81-0d11-7c98689da77a",
"Node": "dev",
"Address": "127.0.0.1",
"Datacenter": "dc1",
"ServiceID": "web",
"ServiceName": "web",
"ServiceTags": null,
"ServiceAddress": "localhost",
"ServicePort": 8080,
"ServiceEnableTagOverride": false,
"CreateIndex": 16,
"ModifyIndex": 16,
"ServiceMeta": null,
"ServiceWeigh": 1
}
]
这个示例演示了如何注册一个名为web的服务,指定地址为localhost,端口为8080,并且配置健康检查接口。然后列出了所有已注册的服务,发现web服务已经注册成功。最后列出了web服务的所有实例,其中只有一个实例。
健康检查
Consul的健康检查可以用于确保服务的可用性和稳定性。健康检查可以定期检查服务的状态,如果发现异常情况,Consul将自动剔除该服务实例,保证其他客户端不会继续访问异常实例。以下是一些常用的命令:
consul monitor
: 监控所有健康检查。consul watch
: 监控指定服务的健康检查。
以下是一个示例:
代码语言:javascript复制$ consul agent -dev
$ curl http://localhost:8500/v1/agent/check/register -d '{
"name": "web",
"http": "http://localhost:8080/health",
"interval": "10s",
"timeout": "1s"
}'
$ consul monitor
这个示例演示了如何注册一个名为web的健康检查,每10秒钟检查一次,超时时间为1秒钟。然后通过监控命令查看所有健康检查的状态。