可以以编程方式解析特定的IP地址以加载平衡的域名?

时间:2013-02-14 14:40:15

标签: java dns dnsjava

我们的环境设置了多个apache httpd,它们作为各种后端java服务器(主要是tomcat服务器)的反向代理。

我们想写一个脚本来点击每个单独的IP地址并检查有效的http响应。

httpd设置为使用虚拟主机,因此为了验证完整的http / html响应,我们需要向域名发送http请求。换句话说,将http请求直接发送到特定的ip地址将导致来自apache的不正确的html http响应。

因此,总而言之,我们有多个httpd监听多个ip地址。例如:

my.domain.com负载平衡:

192.168.11.1 192.168.11.2

我们可以以编程方式更新每个IP地址的主机文件,然后请求域名并检查每个单独的IP地址。

但是,有没有办法向域发出http请求并让它解析为特定的ip地址而不使用hosts文件?也许有一个java lib可以通过编程方式完成这类工作?

1 个答案:

答案 0 :(得分:0)

更新:本文非常好地解释了如何设置可以编程方式控制的dns:http://rkuzmik.blogspot.com/2006/08/local-managed-dns-java_11.html。我实现了sun.net.spi.nameservice.NameServicesun.net.spi.nameservice.NameServiceDescriptor,并且能够以这种方式指定自定义dns条目。

需要注意的一点是,InetAddress会积极地缓存域名/ IP地址。换句话说,例如,为InetAddress解析为my.domain.com创建127.0.0.1对象后,由于InetAddress,在程序运行时很难或无法更改它缓存。

我认为你也可以使用它(这似乎是我使用的太阳物的包装物):

http://www.xbill.org/dnsjava/dnsjava-current/doc/org/xbill/DNS/spi/DNSJavaNameService.html