Flask consul 和 consul DNS
Flask consul and consul DNS
我正在尝试学习使用 Flask 和 consul。
这是我的 /etc/consul.d/consul.json
{
"data_dir": "/opt/consul/data",
"server": 是的,
"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 agent -config-dir=/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(端口=5000,线程=假,调试=真)
看起来 consul 和 flask script 正在相互通信。
烧瓶调试得到:
127.0.0.1 - - [15/Nov/2018 08:38:27] "GET /healthcheck HTTP/1.1" 200 -
我的问题是 consul 将生成的我的烧瓶脚本的 FQDN?
我试过了
dig @127.0.0.1 -p 8600 webapp.bino.inc
,领事调试说:
2018/11/15 08:41:29 [WARN] dns: QName invalid: webapp.
尝试过
dig @127.0.0.1 -p 8600 webserver.bino.inc
,领事调试说:
2018/11/15 08:43:37 [WARN] dns: QName invalid: webserver.
此致
-比诺-
通过 DNS 接口在 Consul 中查询注册服务需要服务 FQDN 的特定结构,如本 link 中所述,用于标准查找 (Conusl DNS stadard lookup)
向 Consul 注册的服务的 FQDN 必须采用以下格式:
<service>.service[.datacenter].<domain>
其中 <service>
是您在 Consul 注册的服务的名称,在您的例子中是 webapp
或 webserver
。 <domain>
是在您的 consul.json
中定义的 consul 域。 [datacenter]
是可选的,Consul服务器会return为其所属的datacenter服务。由于您尚未在 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
查询应该看起来像这样,并且应该 return 与上面的响应相同,因为您是 运行 单 DC 单节点 Consul 集群:
dig @127.0.0.1 -p 8600 webserver.service.dc1.bino.inc
希望对您的问题有所帮助。
我正在尝试学习使用 Flask 和 consul。
这是我的 /etc/consul.d/consul.json
{ "data_dir": "/opt/consul/data", "server": 是的, "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 agent -config-dir=/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(端口=5000,线程=假,调试=真)
看起来 consul 和 flask script 正在相互通信。 烧瓶调试得到:
127.0.0.1 - - [15/Nov/2018 08:38:27] "GET /healthcheck HTTP/1.1" 200 -
我的问题是 consul 将生成的我的烧瓶脚本的 FQDN?
我试过了
dig @127.0.0.1 -p 8600 webapp.bino.inc
,领事调试说:
2018/11/15 08:41:29 [WARN] dns: QName invalid: webapp.
尝试过
dig @127.0.0.1 -p 8600 webserver.bino.inc
,领事调试说:
2018/11/15 08:43:37 [WARN] dns: QName invalid: webserver.
此致 -比诺-
通过 DNS 接口在 Consul 中查询注册服务需要服务 FQDN 的特定结构,如本 link 中所述,用于标准查找 (Conusl DNS stadard lookup)
向 Consul 注册的服务的 FQDN 必须采用以下格式:
<service>.service[.datacenter].<domain>
其中 <service>
是您在 Consul 注册的服务的名称,在您的例子中是 webapp
或 webserver
。 <domain>
是在您的 consul.json
中定义的 consul 域。 [datacenter]
是可选的,Consul服务器会return为其所属的datacenter服务。由于您尚未在 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
查询应该看起来像这样,并且应该 return 与上面的响应相同,因为您是 运行 单 DC 单节点 Consul 集群:
dig @127.0.0.1 -p 8600 webserver.service.dc1.bino.inc
希望对您的问题有所帮助。