の背後にあるサーバの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アドレスに向かうと考えています。
- DNS解決後に返された実際のIPを印刷する方法はありますか?
- JVMはローカルDNSキャッシュを実行しますか?
編集:0としてnetworkaddress.cache.ttl
とnetworkaddress.cache.negative.ttl
を設定
が機能していません。私はそれらを正しく設定していません。
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
........
........
お使いのオペレーティングシステムは、JVMのコントロールの外にあるにもキャッシュすることがあります。 –
すでに毎秒pingで確認済みです。毎回異なるipsにpingしています –
@MangatRaiModi:ICMP pingは、すべての往復のためにホスト名をIPに解決しませんでした。だから私は、RR DNSのロードバランサの代わりに、あなたは何か他のものを持っていると思います(例えば、LLCPやボンディングを使っているネットワークロードバランサ...) – rkosegi