Консульский поиск Java DNS SRV

Я пытаюсь использовать Consul для обнаружения служб из приложения Java, запущенного на сервере Debian по умолчанию, с использованием spotify dnsjava

Я знаю, что Consul DNS прослушивает порт 8600 для запросов (https://www.consul.io/docs/agent/dns.html).

Однако DNS по умолчанию прослушивает порт 53, поэтому запросы необходимо перенаправлять в Consul. Я проделал эту пересылку с помощью IPTables, но не знаю, правильный ли это подход. Однако он работает с использованием dig, но я не знаю, какие могут быть побочные эффекты. Как разработчик приложения, мне не обязательно иметь доступ к обновлению iptables и установке дополнительных пакетов.

У меня есть служба, которую я называю бапи

sudo apt-get install dnsutils

sudo iptables -t nat -A PREROUTING -p udp -m udp --dport 53 -j REDIRECT --to-ports 8600

sudo iptables -t nat -A PREROUTING -p tcp -m tcp --dport 53 -j REDIRECT --to-ports 8600

sudo iptables -t nat -A OUTPUT -d localhost -p udp -m udp --dport 53 -j REDIRECT --to-ports 8600

sudo iptables -t nat -A OUTPUT -d localhost -p tcp -m tcp --dport 53 -j REDIRECT --to-ports 8600

dig @127.0.0.1 -p 8600 bapi.service.consul. SRV

dig @127.0.0.1 -p 8600 bapi-stub-node.node.consul. ANY

dig @127.0.0.1 -p 53 bapi.service.consul. SRV

dig @127.0.0.1 -p 53 bapi-stub-node.node.consul. ANY

Это приложение пытается найти DNS из Java-приложения, но оно не работает, я не знаю почему.

https://github.com/tonymurphy/srv-discovery

Я знаю, что в Spring есть интеграция с консулом и обнаружение сервисов, но мне не нужен весь багаж, который идет с ним, и, похоже, он использует http api для поиска сервисов.


person Tony Murphy    schedule 25.08.2016    source источник


Ответы (1)


Есть 2 подхода:

  1. Используйте переадресацию портов, например таблицы ip (которые вы использовали), dnsmasq и т. Д. Например, установка dnsmasq с использованием вашего диспетчера пакетов debian будет: apt-get install dnsmasq, а затем: echo "server=/consul/127.0.0.1#8600" > /etc/dnsmasq.d/10-consul

  2. Заставьте консула прослушивать порт 53 с помощью конфигурации port.dns (https://www.consul.io/docs/agent/options.html).

Я предпочитаю выполнять переадресацию портов, поскольку для прослушивания портов с низким уровнем требуются разрешения root, а предоставление разрешения root консулу может быть не очень хорошей идеей. С другой стороны, установка dnsmasq или другого решения - это просто еще одна зависимость вашей системы.

В любом случае, вы должны выбрать между ними, и вам нужны права root для обоих подходов (попросите своих системных администраторов поддержать вас).

Вы можете прочитать об этом здесь: https://www.consul.io/docs/guides/forwarding.html

person Ofer Eliassaf    schedule 25.08.2016