问题:Flask 领事和领事 DNS

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

这是我的 /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 代理 -config-diru003d/etc/consul.d/ 运行

用 dig @127.0.0.1 -p 8600 node01.node.bino.inc 测试并得到 ;;答案部分:node01.node.bino.inc。 0 在 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(端口u003d5000,线程u003d假,调试u003d真)

看起来领事和烧瓶脚本相互交流。烧瓶调试得到:

127.0.0.1 - - [2018 年 11 月 15 日 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 [WARN] dns:QName 无效:webapp.

试过了

你@127.0.0.1 -p 8600 webserver.bino.inc

,领事调试说:

2018/11/15 08:43:37 [WARN] dns:QName 无效:网络服务器。

真诚的-比诺-

解答

通过 DNS 接口查询在 Consul 中注册的服务需要服务 FQDN 的特定结构,如此链接中所述用于标准查找(Conusl DNS 标准查找)

在 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

我希望这有助于解决您的问题。

Logo

更多推荐