2016-08-25 69 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