我正在尝试学习玩烧瓶和领事。

这是我的/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中注册的服务的名称,在您的情况下为webappwebserver<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/

10-12 20:13