Registering Services from agent
一个服务可以通过提供两种方式来注册服务:
- service definition:JSON 格式,常见的定义方式.
- HTTP API
service definition
此种方式,我们需要事先创建一个目录用于存储服务定义文件,consule 启动加载配置目录中的所有配置文件。在 Unix 系统上,一个常见约定是将目录命名为 /etc/consul.d。
创建配置目录
# mkdir /etc/consul.d
- 定义服务
# echo '{"service": {"name": "i4-jrocket2", "tags": ["i4-docker"], "port": 8080}}' | sudo tee /etc/consul.d/i4-jrocket2.json
- 启动 consul
# consul agent -dev -config-dir=/etc/consul.d -bind=192.168.104.2 -client=192.168.104.2
Querying Services
- DNS 接口查询
# dig @192.168.104.2 -p 8600 i4-jrocket2.service.consul SRV | sed -n '/;; ANSWER/ {N;N;N;N;p}';;
ANSWER SECTION:
i4-jrocket2.service.consul. 0 IN SRV 1 1 8080 i4-jrocket2-104-02-1.node.dc1.consul. ;; ADDITIONAL SECTION:
i4-jrocket2-104-02-1.node.dc1.consul. 0 IN A 192.168.104.2
- HTTP API 接口查询
# curl http://192.168.104.2:8500/v1/catalog/service/i4-jrocket2
[{
"Node": "i4-jrocket2-104-02-1",
"Address": "192.168.104.2",
"TaggedAddresses": {
"lan": "192.168.104.2",
"wan": "192.168.104.2"
},
"ServiceID": "i4-jrocket2",
"ServiceName": "i4-jrocket2",
"ServiceTags": [
"i4-docker"
],
"ServiceAddress": "",
"ServicePort": 8080,
"ServiceEnableTagOverride": false,
"CreateIndex": 6,
"ModifyIndex": 6
}]
Updating Services from agent
可以通过更改配置文件并向 agent 发送 SIGHUP 来更新服务定义。 这允许您更新服务,而不会出现任何停机或不可用的服务查询。或者,HTTP API 可用于动态添加,删除 和修改服务。
#注册更新
curl -X PUT -d '{"Datacenter": "dc1", "Node": "s2", "Address": "10.120.184.216", "Service": {"Service": "uniqush", "tags": ["test","to test2connect"], "Port": 30121}}' http://127.0.0.1:8500/v1/catalog/register