ich von einem Client an einen Server anschließe Hostnamen wie folgt: -Java: Get IP-Adresse eines Server hinter DNS Load Balancer
HttpPost post = new HttpPost(serverUrl);
post.setEntity(new StringEntity(jsonRequestString, ContentType.APPLICATION_JSON));
HttpResponse response = httpClient.execute(post);
int ret = response.getStatusLine().getStatusCode();
ich org.apache.http.*
Pakete verwenden. Jetzt befindet sich der Server hinter dem DNS-Lastenausgleich mit 8 eindeutigen IP-Adressen, die an den Hostnamen gebunden sind. Aber ich glaube, dass alle Anfragen in einem einzigen Lauf der JVM auf die gleiche IP-Adresse gehen.
- Gibt es eine Möglichkeit zum Drucken der tatsächlichen IP zurückgegeben nach DNS-Auflösung?
- Führt JVM lokales DNS-Caching durch?
Edit:
Einstellung networkaddress.cache.ttl
und networkaddress.cache.negative.ttl
als 0 funktioniert nicht. Entweder setze ich sie nicht richtig.
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);
}
}
Ausgang:
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
........
........
Ihr Betriebssystem könnte auch Cache, der sich aus der JVMs Kontrolle. –
Bereits überprüft, mit Ping jede Sekunde. Es pingt jedes Mal verschiedene ips –
@MangatRaiModi: ICMP Ping nicht Host-Name zu IP für jeden Rundgang auflösen. Also ich denke, dass anstelle von RR DNS Loadbalancer, Sie etwas anderes haben (zB Netzwerk Loadbalancer mit LLCP oder Bonding ...) – rkosegi