从远程使用DNS访问领事

我已经安装了EC2 aws领事。

我有3个服务器consul = 11.XX.XX.1,11.XX.XX.2,11.XX.XX.3。

我有1个客户的consul = 11.XX.XX.4

下面是configuration文件/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 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 @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. 检查客户端机器上的名称服务器(例如:cat /etc/resolv.conf – 取决于您的机器configuration)

  2. 将领事服务器configuration更改为:

     {  
         “bootstrap”:false,  
         “server”:true,  
         “datacenter”:“abc”,  
         “advertise_addr”:“11.XX.XX.1”,  
         “data_dir”:“/ var / consul”,  
         “log_level”:“INFO”,  
         “enable_syslog”:true,  
         “地址”:{  
         “http”:“0.0.0.0”  
         },  
         “start_join”:[“11.XX.XX.2”,“11.XX.XX.3”],  
         “recursors”:[“xxx.xxx.xxx.xxx”,“xxx.xxx.xxx.xxx”],  
         “ports”:{  
             “dns”:53  
         }  
     }

其中recursion是来自点1的DNS服务器IP。

  1. 重新加载或重新启动所有consul服务器上的consul服务 – 现在consul正在侦听端口53作为dns服务器

  2. 更改您的客户端计算机上的名称服务器以使用服务器IP。 确保你的客户机使用新的地址(你可以重新启动客户机)

现在在客户端机器上,您可以使用所有域名,包括consul's,例如:dig web.service.consul dig google.com

对于在领事服务器上的相同的行为,你也必须更改名字服务器来提交IP地址。

我不是领事专家,但我知道你正在使用TCP端口8600.那么你能否确认你已经检查过你的AWS安全规则设置中是否打开了端口8600?

只有consul失败或任何其他协议失败,即ssh。