Невозможно связаться с сервисом через DNS - PullRequest
0 голосов
/ 08 июня 2019

Я использую пакет request от NPM для обработки некоторой внутренней связи между службами.Я также установил правильный DNS-сервер (используя Hashicorp Consul в качестве SD и DNS).

Я могу выполнить раскопки на своей локальной машине (где работают службы) на DNS-сервере consul иЯ могу получить правильный ответ (IP и номер порта.

Как настроить DNS в моем файле app.js6

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 }

Я хочу иметь возможность отправлять запросы в службу 'auth'при использовании Consul в качестве моего DNS-сервера. В настоящее время у меня есть очень хакерский способ сделать это, но я действительно хотел бы использовать DNS.

Я нашел это, но это относится к пакету axios, а не к тому запросу, которым я являюсьпытаясь использовать, даже если он выдает ту же ошибку, решение там не помогло. Обнаружение службы Consul с DNS на Nodejs

1 Ответ

0 голосов
/ 09 июня 2019

У вас могут быть проблемы с курицей и яйцом.Попробуйте преобразовать ${config.consul.host} в IP-адрес и затем наберите dns.setServers с этим IP-адресом.

...