2017-01-16 68 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