Consul的使用三之service查詢


DNS Interface

DNS接口是Consul中主要的查詢接口之一,另一個是HTTP接口, HTTP接口查詢請查閱https://www.consul.io/api/catalog.html#list-services。Consul默認在8600端口監聽DNS查詢。

要使用DNS接口, 有幾種方法可以實現:

一是使用指定的DNS解析庫, 然后指向Consul;

二是把Consul設置為節點的DNS服務器, 並且提供recursors配置項, 這樣非Consul的查詢也能被解析;

最后一種方法是從已有的DNS服務器上把所有consul.為域名的請求轉發到consul agent上。

查詢的示例方法:

dig @127.0.0.1 -p 8600 redis.service.dc1.consul. ANY

查詢redis服務器地址

 

通常情況下, 有兩種類型的查詢: node lookupsservice lookupsnode lookups指定的查詢一個節點的ip地址, 而service lookups則是查詢一個服務的ip地址。

 

節點查詢

查詢一個節點的命令格式為:

<node>.node[.datacenter].<domain>

[datacenter]可選, 默認為當前agent所在的data center。

對於一個node lookups, consul返回值包含A記錄, AAAA記錄以及TXT記錄。

A記錄返回ipv4地址, AAAA記錄返回ipv6地址, TXT記錄會匹配節點的元數據信息node_meta, 如果節點的元數據key以rfc1035-開頭, 則只會返回節點的元數據信息。

 

服務查詢

service lookups用來查詢服務的提供者, consul提供兩種方法, 一種是標准查詢, 一種是嚴格遵循RFC 2782規范的查詢。

默認情況下, SRV權重為1, 但是可以通過service definition中的Weights屬性配置。

 

Standard Lookup

格式:

[tag.]<service>.service[.datacenter].<domain>

tag是可選的, 過濾節點, datacenter可選, 默認是agent所處的數據中心。

標准服務查詢支持A記錄和SRV記錄, SRV記錄也會返回服務注冊的端口地址。SRV記錄默認不返回, 除非是命令中指定, 如:

dig @127.0.0.1 -p 8600 consul.service.consul SRV

; <<>> DiG 9.8.3-P1 <<>> @127.0.0.1 -p 8600 consul.service.consul ANY
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50483
;; flags: qr aa rd; QUERY: 1, ANSWER: 3, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;consul.service.consul.     IN SRV

;; ANSWER SECTION:
consul.service.consul. 0   IN SRV 1 1 8300 foobar.node.dc1.consul.

;; ADDITIONAL SECTION:
foobar.node.dc1.consul. 0   IN A   10.1.10.12

 

RFC 2782 Lookup

格式為:

_<service>._<protocol>[.service][.datacenter][.domain]

RFC 2782格式要求service和protocol以_為前綴,防止DNS記錄沖突。protocol可以為service中的任何tag, 如果沒有tag, 則應該使用tpc, tag的作用和上面的一樣, 用來過濾service節點, 如果是tcp, 則不過濾。

 

Prepared Query Lookups
<query or name>.query[.datacenter].<domain>

執行一個已保存的查詢語句

 

Connect-Capable Service Lookups
<service>.connect.<domain>

查看支持connect的service, connect可以用來加密連接, 以及授權。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM