DND resolve 할 때, java 7에서는 gethostbyname_r/gethostbyaddr(_r)를 사용했지만, java 8 부터는 getaddrinfo/getaddrinfo로 바꿨다.
https://bugs.openjdk.java.net/browse/JDK-7112670
레드햇에서는 이 이슈를 미리 발견해서 공지(https://access.redhat.com/solutions/22132)했다.
여러 서버로 바인된 도메인과 DNS RR로 설정된 경우에 대해, getaddrinfo를 호출하면 랜덤한 순서로 ip를 받지 않고,특정 ip만 리턴하여 특정 서버(또는 군)으로만 트래픽이 몰린다고 한다. 그리고, redhat 4~7까지 영향도가 있다고 적혀져 있다.
https://access.redhat.com/solutions/22132
- DNS hostname lookups handled by the
getaddrinfo
(3) glibc function are no longer returned in "random" order when multiple A record answers are available in DNS. - Answers are sorted so some IP addresses are always returned first, thus "breaking" round-robin DNS.
- This may also apply to entries in
/etc/hosts
if there are multiple entries for the same host. - Glibc resolver
getaddrinfo()
, rsh, and ssh do not try IP addresses in the order defined in /etc/hosts.
redhat 5에서는 발생했었고, 관련해서 /etc/gai.conf를 수정해서 해결되었다는 사례들이 인터넷에 있었다.
https://groups.google.com/forum/#!topic/consul-tool/AGgPjrrkw3g
하지만, centos 6.5(centos 7 포함)에서는 java 7에서 java 8 전환할 때, getaddrinfo에 따른 이슈는 발견되지 않았고, /etc/gai.conf를 수정할 일도 없었다.
'java core' 카테고리의 다른 글
JDK의 Flight Recorder 라이선스 (0) | 2016.09.08 |
---|---|
java의 enum 사용시 주의사항 - java.lang.NullPointerException: Name is null (0) | 2016.08.03 |
java7 -> java8 전환 with spring 3.2 (1) | 2016.07.21 |
Set (유일성 보장) 사용시 객체가 구현해야 할 hashcode() (0) | 2016.06.23 |
[자바] autoboxing 실수 (실 사례) (0) | 2016.05.20 |