我正在使用NPM的request软件包来处理服务之间的一些内部通信。我还将DNS服务器设置为正确的服务器(使用Hashicorp Consul作为我的SD和DNS)。
我可以在本地计算机(正在运行服务的地方)上挖到领事DNS服务器,并且能够获得正确的响应(IP和端口号)。
我如何在app.js文件中设置DNS6
dns.setServers([ `${config.consul.host}:8600` ]);
设置与app.js不同的文件
options = {
baseUrl: `http://auth.service.consul`,
json: { '': '' },
headers: { authorization: '' }
};
与上述选项相同的文件
request.post(req.path, options, (error, response, body) => {
console.log(error);
if (error) throw error;
res.status(response.statusCode).json(body);
});
错误消息:
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:56:26)
errno: 'ENOTFOUND',
code: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: 'auth.service.consul',
host: 'auth.service.consul',
port: 80 }
使用Consul作为我的DNS服务器时,我希望能够向“身份验证”服务发出请求。我目前有一个非常骇人听闻的方法,但是我真的很想使用DNS。
我确实找到了这个,但是它与axios包有关,而不是我要使用的请求,即使它产生了相同的错误,解决方案也无济于事。 Consul service discovery with DNS on Nodejs
答案 0 :(得分:0)
您可能遇到鸡肉和鸡蛋问题。尝试将${config.consul.host}
解析为一个IP地址,然后使用该IP地址调用dns.setServers
。