2017-01-16 70 views
3

服务器我使用如下主机连接到服务器从客户端的IP地址: -的Java:落后DNS负载均衡

HttpPost post = new HttpPost(serverUrl); 
    post.setEntity(new StringEntity(jsonRequestString, ContentType.APPLICATION_JSON)); 
    HttpResponse response = httpClient.execute(post); 
    int ret = response.getStatusLine().getStatusCode(); 

我使用org.apache.http.*包。现在,服务器位于DNS负载均衡器后面,并具有绑定到主机名的8个唯一IP地址。但是我相信JVM的一次运行中的所有请求都会转到相同的IP地址。

  1. 有没有办法打印DNS解析后返回的实际IP?
  2. JVM是否执行本地DNS缓存?

编辑:

设置networkaddress.cache.ttlnetworkaddress.cache.negative.ttl为0时不能正常工作。要么我没有设置它们是正确的。

public static void main(String[] args) throws Exception { 
    java.security.Security.setProperty("networkaddress.cache.ttl", "0"); // no 
    // cache 
    java.security.Security.setProperty("networkaddress.cache.negative.ttl", "0"); // no 
    while (true) { 
     System.out.println(InetAddress.getByName("google.com")); 
     Thread.sleep(100); 
    } 

}

输出:

google.com/216.58.197.78 
google.com/216.58.197.78 
google.com/216.58.197.78 
google.com/216.58.197.78 
google.com/216.58.197.78 
google.com/216.58.197.78 
google.com/216.58.197.78 
google.com/216.58.197.78 
google.com/216.58.197.78 
google.com/216.58.197.78 
google.com/216.58.197.78 
........ 
........ 
+0

您的操作系统也可能会缓存这是出了JVM的控制。 –

+0

已经检查过,每秒都会ping。它每次ping到不同的ips –

+0

@MangatRaiModi:每次往返时,ICMP ping都没有将主机名解析为IP。所以我想,而不是RR的DNS负载均衡,你有其他东西(例如网络负载均衡器使用LLCP或绑定...) – rkosegi

回答

2

有没有办法打印DNS解析后的实际IP退换吗?

你可以尝试配置记录仪,检查从 “org.apache.http.impl.conn.HttpClientConnectionOperator”

Reference

不JVM在本地DNS缓存记录消息?

这取决于配置,但最有可能是的,检查这些设置:

networkaddress.cache.ttl 指定的java.security以指示从名称服务成功名称查找的缓存策略..该值指定为整数以指示缓存成功查找的秒数。

-1的值表示“永远缓存”。默认行为是在安装安全管理器时永久缓存,并且在未安装安全管理器时缓存实施特定时间段。

networkaddress.cache.negative.ttl(默认值:10) java.security中指定,以指示用于从名称服务未成功名称查找的高速缓存策略。该值被指定为整数,以指示缓存未成功查找失败的秒数。

值为0表示“永不缓存”。值为-1表示“永远缓存”。

Reference

UPDATE

你尝试直接调用API来解析主机名到所有的IP地址?

InetAddress.getAllByName(host) 

javadocs

在给定主机的名称,返回其IP地址的基础上,在系统上配置的名称服务 的阵列。

而且interesting article on this topic(而不是由我自己试过)

+0

真棒,我现在就试试这个。 –

+0

对不起,没有工作。写了一个基本的程序来打印来自域名的IP地址。查看编辑 –

+0

@MangatRaiModi:查看更新 – rkosegi