【问题标题】:Consul Java DNS SRV LookupConsul Java DNS SRV 查找
【发布时间】:2023-03-20 23:40:01
【问题描述】:

我正在尝试使用 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 来做服务查找

【问题讨论】:

    标签: java dns consul service-discovery srv


    【解决方案1】:

    有两种方法:

    1. 使用端口转发,如 ip 表(你使用的)、dnsmasq 等。 例如,使用你的 debian 包管理器安装 dnsmasq 将是: apt-get install dnsmasq 然后: echo "server=/consul/127.0.0.1#8600" > /etc/dnsmasq.d/10-consul

    2. 使用 port.dns 配置让 consul 监听 53 端口 (https://www.consul.io/docs/agent/options.html)

    我更喜欢做端口转发,因为监听低端口需要 root 权限,给 consul root 权限可能不是一个好主意。另一方面,安装 dnsmasq 或其他解决方案只是您系统的另一个依赖项。

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

    您可以在此处阅读所有相关信息: https://www.consul.io/docs/guides/forwarding.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-27
      • 2014-09-17
      • 1970-01-01
      相关资源
      最近更新 更多