用于远程访问consul的DNS配置

时间:2016-12-30 08:31:00

标签: amazon-ec2 dns consul

我在AWS EC2上安装了consul,有3台服务器和1个客户端。

服务器IP = 11.XX.XX.1,11.XX.XX.2,11.XX.XX.3。 客户IP = 11.XX.XX.4

consul config:/etc/consul.d/server/config.json

{
    "bootstrap": false,
    "server": true,
    "datacenter": "abc",
    "advertise_addr": "11.XX.XX.1",
    "data_dir": "/var/consul",
    "log_level": "INFO",
    "enable_syslog": true,
    "addresses": {
    "http": "0.0.0.0"
    },
    "start_join": ["11.XX.XX.2", "11.XX.XX.3"]
}
服务器上输出

netstat

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:8400          0.0.0.0:*               LISTEN      29720/consul    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1006/sshd       
tcp        0      0 127.0.0.1:8600          0.0.0.0:*               LISTEN      29720/consul    
tcp6       0      0 :::8301                 :::*                    LISTEN      29720/consul    
tcp6       0      0 :::8302                 :::*                    LISTEN      29720/consul    
tcp6       0      0 :::8500                 :::*                    LISTEN      29720/consul    
tcp6       0      0 :::22                   :::*                    LISTEN      1006/sshd       
tcp6       0      0 :::8300                 :::*                    LISTEN      29720/consul 

curl在远程计算机上工作正常,但dig仅在本地计算机上运行。

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

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

;; ANSWER SECTION:
web.service.consul. 0   IN  A   11.XX.XX.4

;; Query time: 0 msec
;; SERVER: 127.0.0.1#8600(127.0.0.1)
;; WHEN: Fri Dec 30 08:21:41 UTC 2016
;; MSG SIZE  rcvd: 52

dig无法从远程计算机上运行:

dig @11.XX.XX.1 -p 8600 web.service.consul

; <<>> DiG 9.9.5-3ubuntu0.6-Ubuntu <<>> @11.XX.XX.1 -p 8600 web.service.consul
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached
-----------------------------

如何让它发挥作用?

1 个答案:

答案 0 :(得分:0)

默认情况下,consul仅侦听实例回送设备上的DNS连接。最佳实践要求您在任何希望使用consul DNS的远程计算机上安装客户端。这并不总是实用的。

我见过人们通过Consul配置JSON在所有接口上公开DNS(consul端口8600),如下所示:

test1.py

您还可以使用JSON中的client_addr字段公开侦听环回的所有端口,或者通过以下命令行传递它:

{
   "server": true,
   "addresses": {
     "dns": "0.0.0.0"
   }
}

还有更多控件和旋钮可供调整(参见文档):

https://www.consul.io/docs/agent/options.html