我们的环境设置了多个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可以通过编程方式完成这类工作?
答案 0 :(得分:0)
更新:本文非常好地解释了如何设置可以编程方式控制的dns:http://rkuzmik.blogspot.com/2006/08/local-managed-dns-java_11.html。我实现了sun.net.spi.nameservice.NameService
和sun.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