DNS配置,用于远程访问领域



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

服务器ips = 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
-----------------------------

如何使其工作?

默认领事仅在实例循环设备上倾听DNS连接。最佳实践要求您将客户端安装在任何远程机器上,希望消耗领事DNS。这并不总是实用的。

我已经看到人们通过领事配置在所有接口上暴露了DNS(领事端口8600)。

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

您还可以通过JSON中的客户端_ADDR字段在loopback上播放所有端口,也可以通过命令行通过以下方式传递。

consul agent -client 0.0.0.0

有更多的控件和旋钮可供调整(请参阅文档):

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

最新更新