2016-08-25 41 views
0

我试图用领事使用Spotify的dnsjava领事Java的DNS SRV查找

我知道领事DNS上监听查询(https://www.consul.io/docs/agent/dns.html)端口8600做从默认Debian的服务器上运行的Java应用程序服务发现。

默认情况下,DNS在端口53上侦听,因此需要将查询转发给Consul。我使用IPTables进行了这种转发 - 但我不知道这是否正确。它使用挖掘工作,但我不知道副作用可能是什么。作为一个应用程序开发人员,我不一定有机会获得更新iptables和安装额外的软件包

我有一个服务我称之为BAPI

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 

此应用程序试图从一个Java应用程序查找DNS,但它不工作,我不知道为什么

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

我知道春天有领事集成与服务的发现,但我不希望所有随之而来的行李,和它似乎使用http api到d O服务查找

回答

0

有2种方法:

  1. 使用端口转发,如IP表(,美使用)的dnsmasq等。 例如,使用Debian的软件包管理器将安装的dnsmasq: 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权限,并且给予consul root权限可能不是个好主意。另一方面,安装dnsmasq或其他解决方案只是您的系统的另一个依赖项。

无论如何,您必须在它们之间进行选择,并且您需要两种方法的root权限(要求系统管理员支持您)。

您可以在这里阅读所有内容: https://www.consul.io/docs/guides/forwarding.html