我正在尝试使用 Consul 从使用 spotify 的 dnsjava 在默认 Debian 服务器上运行的 Java 应用程序进行服务发现
我知道 Consul DNS 在端口 8600 上侦听查询(https://www.consul.io/docs/agent/dns.html)。
但是默认情况下 DNS 侦听端口 53,因此需要将查询转发给 Consul。我使用 IPTables 进行了此转发 - 但我不知道这是否是正确的方法。它确实可以使用 dig,但我不知道副作用可能是什么。作为应用程序开发人员,我不一定有权更新 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
我知道 Spring 有 consul 集成和服务发现,但我不想要它附带的所有包袱,而且它似乎使用 http api 来做服务查找