2016-08-25 5 views
0

Ich versuche, Konsul verwenden Service-Discovery von einer Java-Anwendung auf einem Standard-Debian-Server ausgeführt zu tun Spotify dnsjava mitConsul Java DNS-SRV-Lookup

weiß ich Consul DNS lauscht auf Port 8600 für Abfragen (https://www.consul.io/docs/agent/dns.html).

Das DNS hört jedoch Port 53 standardmäßig ab, daher müssen Abfragen an Consul weitergeleitet werden. Ich habe diese Weiterleitung mit IPTables durchgeführt - aber ich weiß nicht, ob dies der richtige Ansatz ist. Es funktioniert jedoch mit Dig, aber ich weiß nicht, was die Nebenwirkungen sein könnten. Als Anwendungsentwickler, habe ich nicht unbedingt Zugang iptables zu aktualisieren und zusätzliche Pakete installieren

Ich habe einen Dienst nenne ich 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 

Diese Anwendung DNS aus einer Java-Anwendung zum Nachschlagen versucht, aber es nicht funktioniert, weiß ich nicht, warum

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

ich weiß Frühling Konsul Integration und Service Discovery hat, aber ich will nicht das ganze Gepäck, das mit ihm kommt, und es scheint zu verwenden http api bis d o Service-Lookups

Antwort

0

Es gibt zwei Ansätze:

  1. Verwenden Port-Forwarding wie IP-Tabellen (das u verwendet wird), dnsmasq, etc .. Zum Beispiel der Installation von dnsmasq Ihren Debian-Paket-Manager wird sein: apt-get install dnsmasq und dann: echo "server=/consul/127.0.0.1#8600" > /etc/dnsmasq.d/10-consul

  2. Machen Konsul mithilfe der port.dns Config (https://www.consul.io/docs/agent/options.html)

  3. 0 auf Port 53 hören

Ich bevorzuge Portweiterleitung, da das Abhören von niedrigen Ports Root-Berechtigungen erfordert und die Erteilung der Consul-Root-Berechtigung möglicherweise keine gute Idee ist. Auf der anderen Seite ist die Installation von Dnsmasq oder einer anderen Lösung nur eine weitere Abhängigkeit von Ihrem System.

Wie auch immer, Sie müssen zwischen ihnen wählen, und Sie benötigen root-Berechtigung für beide Ansätze (bitten Sie Ihre Systemadministratoren, Sie zu unterstützen).

Sie können alles darüber lesen Sie hier: https://www.consul.io/docs/guides/forwarding.html

Verwandte Themen