如何在go go应用程序中阅读consul SRV记录?

ben*_*rtz 7 dns go consul

我正在尝试实现服务发现的领事,我遇到两件事:连接到自定义DNS服务器,并格式化我的net.LookupSRV()请求.

这是我试图在我的应用程序中查找的内容:

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

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> @127.0.0.1 -p 8600 serviceb.service.consul SRV
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4511
;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 2
;; WARNING: recursion requested but not available

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

;; ANSWER SECTION:
serviceb.service.consul. 0  IN  SRV 1 1 80 az1-serviceb1.node.dc1.consul.
serviceb.service.consul. 0  IN  SRV 1 1 80 az2-serviceb2.node.dc1.consul.

;; ADDITIONAL SECTION:
az1-serviceb1.node.dc1.consul. 0 IN A   10.6.41.22
az2-serviceb2.node.dc1.consul. 0 IN A   10.6.41.20

;; Query time: 6 msec
;; SERVER: 127.0.0.1#8600(127.0.0.1)
;; WHEN: Fri May 16 15:09:28 2014
;; MSG SIZE  rcvd: 275
Run Code Online (Sandbox Code Playgroud)

这是相关的代码.(我知道这是错的,但只是这样你才能看到我想要做的事情)

cname, addrs, err := net.LookupSRV("serviceb", "service", "consul")
log.Printf("%+v %+v %+v", cname, addrs, err)
Run Code Online (Sandbox Code Playgroud)

和输出:

2014/05/16 15:24:31  [] lookup _serviceb._service.consul: no such host
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激!谢谢

kos*_*tix 4

尝试使用更锋利的工具,例如github.com/miekg/dns包。上次我看到它时,它几乎允许控制客户端设置的每一个部分来进行 DNS 解析。