将DNS链接到consul节点

时间:2016-01-15 19:51:30

标签: consul

我正在尝试使用“使用Docker”(第11章)中的示例设置一个consul代理。该示例建议运行此命令以设置其中一个consul节点:

docker run -d --name consul -h consul-1 \
         -p 8300:8300 -p 8301:8301 -p 8301:8301/udp \
         -p 8302:8302/udp -p 8400:8400 -p 8500:8500 \
         -p 172.17.42.1:53:8600/udp \
         gliderlabs/consul agent -data-dir /data -server \
                    -client 0.0.0.0 \
                    -advertise $HOSTA -bootstrap-expect 2

我假设-p 172.17.42.1:53:8600/upp行使用为作者工作的IP地址将容器的DNS服务与consul节点链接起来。我应该在这里使用什么IP地址?

2 个答案:

答案 0 :(得分:1)

看起来172.17.42.1是docker 1.8在容器连接到主机时使用的默认桥接地址。这在1.9中有所改变,对我来说似乎是172.17.0.1 - 虽然我不知道这是否有保障。

答案 1 :(得分:0)

您似乎正在运行示例设置,因此如果将其公开给localhost 127.0.0.1则更好。这是一个DNS服务,只要您使用正确的DNS端口发出dig命令,它就会起作用。例如,以下将对端口8600执行:

dig @127.0.0.1 -p 8600 stackoverflow.service.consul

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.55.amzn1 <<>> @127.0.0.1 -p 53 tracker.service.consul
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57167
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;stackoverflow.service.consul.      IN  A

;; ANSWER SECTION:
stackoverflow.service.consul.   0   IN  A   10.X.X.X

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Jul  7 11:29:01 2017
;; MSG SIZE  rcvd: 56

如果您希望它在默认DNS端口上工作,以便可以直接处理查询。您可以使用dnsmaq或以下链接中列出的任何方法进行DNS转发:

https://www.consul.io/docs/guides/forwarding.html