我已经安装了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 -----------------------------
你可以试试这个方法:
检查客户端机器上的名称服务器(例如:cat /etc/resolv.conf – 取决于您的机器configuration)
将领事服务器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。
重新加载或重新启动所有consul服务器上的consul服务 – 现在consul正在侦听端口53作为dns服务器
更改您的客户端计算机上的名称服务器以使用服务器IP。 确保你的客户机使用新的地址(你可以重新启动客户机)
现在在客户端机器上,您可以使用所有域名,包括consul's,例如:dig web.service.consul dig google.com
对于在领事服务器上的相同的行为,你也必须更改名字服务器来提交IP地址。
我不是领事专家,但我知道你正在使用TCP端口8600.那么你能否确认你已经检查过你的AWS安全规则设置中是否打开了端口8600?
只有consul失败或任何其他协议失败,即ssh。