Я пытаюсь использовать 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 для поиска сервисов.