我正在尝试学习玩烧瓶和领事。
这是我的/etc/consul.d/consul.json
{
“ data_dir”:“ / opt / consul / data”,
“服务器”:是的,
“ bind_addr”:“ 0.0.0.0”,
“ bootstrap_expect”:1
“ ui”:是的,
“ domain”:“ bino.inc”,
“ client_addr”:“ 0.0.0.0”,
“ node_name”:“ node01”
}
使用/ usr / bin / consul代理-config-dir = / etc / consul.d /运行
用dig @ 127.0.0.1 -p 8600 node01.node.bino.inc测试并得到
;;解答部分:
node01.node.bino.inc。 0在A 192.168.1.5中
我只是从https://github.com/vsudilov/flask-consulate复制示例
对其做一个小的更改:
# Register Consul service:
consul.register_service(
address='127.0.0.1',
name='webapp',
interval='10s',
tags=['master', ],
port=5000,
httpcheck='http://localhost:5000/healthcheck'
)
consul.app.run(端口= 5000,线程= False,调试= True)
看起来像领事和长颈鹿脚本互相交流。
烧瓶调试得到了:
127.0.0.1--[15 / Nov / 2018 08:38:27]“ GET / healthcheck HTTP / 1.1” 200-
我的问题是领事将生成的烧瓶脚本的FQDN吗?
我试过了
挖@ 127.0.0.1 -p 8600 webapp.bino.inc
和领事调试说:
2018/11/15 08:41:29 [WARN] DNS:QName无效:webapp。
尝试过
挖@ 127.0.0.1 -p 8600 webserver.bino.inc
,领事调试说:
2018/11/15 08:43:37 [WARN] DNS:QName无效:Web服务器。
真诚的
-比诺-
最佳答案
通过DNS接口在Consul中查询已注册的服务需要特定的服务FQDN结构,如本链接中的标准查找(Conusl DNS stadard lookup)所述
在Consul注册的服务的FQDN必须采用以下格式:
<service>.service[.datacenter].<domain>
其中
<service>
是在Consul中注册的服务的名称,在您的情况下为webapp
或webserver
。 <domain>
是您的consul.json
中定义的领事域。 [datacenter]
是可选的,Consul服务器将为其所属的数据中心返回服务。由于您尚未在consul.json
中定义它,因此它是dc1
。因此,您的
dig
查询应如下所示:dig @127.0.0.1 -p 8600 webapp.service.bino.inc
要么
dig @127.0.0.1 -p 8600 webserver.service.bino.inc
(可选)您可以尝试将数据中心添加到FQDN。您的
dig
查询应如下所示,并在运行单个DC单节点Consul群集时应返回与上述相同的响应:dig @127.0.0.1 -p 8600 webserver.service.dc1.bino.inc
我希望这有助于解决您的问题。
关于python - flask 领事和领事DNS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53311302/