我正在努力学习与烧瓶和领事一起玩。
这是我的/etc/consul.d/consul.json
{“data_dir”:“/ opt / consul / data”,“server”:true,“bind_addr”:“0.0.0.0”,“bootstrap_expect”:1,“ui”:true,“domain”:“bino.inc “,”client_addr“:”0.0.0.0“,”node_name“:”node01“}
运行/ usr / bin / consul agent -config-dir = / etc / consul.d /
用dig @ 127.0.0.1 -p 8600 node01.node.bino.inc测试并得到;;答案部分:node01.node.bino.inc。 0 IN 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(port = 5000,threaded = False,debug = True)
看起来像领事和烧瓶脚本相互沟通。烧瓶调试得到:
127.0.0.1 - - [15 / Nov / 2018 08:38:27]“GET / healthcheck HTTP / 1.1”200 -
我的问题是consul将生成的烧瓶脚本的FQDN?
我试过了
你@ 127.0.0.1 -p 8600 webapp.bino.inc
和领事调试说:
2018/11/15 08:41:29 [警告] dns:QName无效:webapp。
试过
你@ 127.0.0.1 -p 8600 webserver.bino.inc
,领事调试说:
2018/11/15 08:43:37 [警告] dns:QName无效:网络服务器。
真诚的-bino-
通过DNS接口查询Consul中的注册服务需要服务FQDN的特定结构,如此链接中所述的标准查找(qazxsw poi)
在Consul注册的服务的FQDN必须采用以下形式:
Conusl DNS stadard lookup
其中<service>.service[.datacenter].<domain>
是您在Consul注册的服务的名称,在您的情况下<service>
或webapp
。 webserver
是你的<domain>
中定义的consul域。 consul.json
是可选的,Consul服务器将返回它所属的数据中心的服务。既然你没有在[datacenter]
中定义它,那就是consul.json
。
所以你的dc1
查询应该如下所示:
dig
要么
dig @127.0.0.1 -p 8600 webapp.service.bino.inc
您可以尝试将数据中心添加到FQDN。您的dig @127.0.0.1 -p 8600 webserver.service.bino.inc
查询应如下所示,并且在运行单个DC单节点Consul集群时应返回与上述相同的响应:
dig
我希望这有助于解决您的问题。