라운드 로빈 DNS가 고가용성을 위한 가능한 솔루션입니까?

라운드 로빈 DNS가 고가용성을 위한 가능한 솔루션입니까?

특정 도메인(라운드 로빈 DNS)에 대해 2개의 IP가 있다고 가정해 보겠습니다.
IP 중 하나가 응답하지 않으면 클라이언트가 다른 IP에 연결을 시도합니까? 아니면 도메인과의 통신을 설정하지 못하게 됩니까?

답변1

DNS 라운드 로빈은 로드 밸런서를 대체하기에 적합하지 않습니다. DNS 서버는 다운된 노드의 IP를 계속해서 전달하므로 일부 사용자는 서비스에 접속할 수 있고 일부는 접속하지 못할 수 있습니다.

클라이언트가 DNS 쿼리를 수행하면 DNS 서버가 반환합니다.모두해당 이름과 관련된 IP 주소 중 하나입니다. 마법은 모든 쿼리에 대해 해당 목록의 순서를 바꾸는 DNS 서버에 의해 수행됩니다. 그러나 작동하는 IP를 찾을 때까지 목록을 "탐색"하는 기능을 구현하는 것은 애플리케이션에 달려 있습니다. 그리고 일부 응용 프로그램은 그렇게 하지 않습니다.

이상하게도 Windows Telnet은 반환된 IP의 연결된 목록을 탐색할 만큼 똑똑한 응용 프로그램 중 하나입니다. 예를 들어 google.com에 텔넷을 시도하면 이 동작을 직접 볼 수 있습니다. 당신은 그것이 시간이 걸린다는 것을 알게 될 것입니다마침내 실패할 시간이다. 이는 google.com에 많은 IP 주소가 있고 텔넷 클라이언트가 모든 주소를 시도하고 있었기 때문입니다.

답변2

Load Balancer를 사용하면 여전히 단일 실패 지점이 남습니다. 로드 밸런서가 오프라인 상태가 되면 웹 사이트가 다운됩니다.

위의 답변과 달리 대부분의 HTTP 클라이언트는 이미~하다유효한 응답이 반환될 때까지 DNS 쿼리에서 반환된 각 IP 주소를 시도하도록 지원합니다. 여기를 참조하세요:

http://blog.engelke.com/2011/06/07/web-resilience-with-round-robin-dns/

작성자는 다음 브라우저를 테스트한 결과 제대로 작동하는 것으로 나타났습니다.

Windows 7의 Chrome 11 Windows 7
의 Firefox 4.0 Windows 7
의 Internet Explorer 8 Windows 7
의 Opera 11 Windows 7
의 Safari 5 Windows
XP의 Internet Explorer 7(눈에 띄는 지연 후)
Windows XP의 Firefox 4.0(눈에 띄는 지연 후)
Android 기본 브라우저 Android 2.3.3
iOS 4.3.3의 iPhone 기본 브라우저

라운드 로빈을 사용하면 두 서버의 응답 시간을 모니터링하고 다른 서버가 원하는 만큼 빠르게 응답하지 않는 경우 더 많은 트래픽을 한 서버로 라우팅하는 등 로드 밸런싱 서버의 모든 기능을 수행할 수 없습니다. 탄력성을 위해서는 더 이상 단일 실패 지점이 없기 때문에 라운드 로빈 DNS가 아마도 더 나은 솔루션이라고 말하고 싶습니다.

답변3

라운드 로빈 DNS는 일반적으로 주소를 제공하는 서버의 상태에 대한 피드백을 갖지 않지만, 각 주소에 대해 일종의 로드 밸런서(라우터 기반 트릭 포함)가 있으면 도움이 될 수 있습니다.

문제가 발생하면 DNS를 업데이트하는 요령이 있습니다. 이런 일이 발생하면 TTL이 적절하게 짧은 라운드 로빈 DNS가 의사 로드 밸런서가 될 수 있습니다.

관련 정보