2011-03-16 2 views
20

호스트 이름에 대해 여러 개의 A 레코드를 설정하는 것은 라운드 로빈로드 균형 조정뿐만 아니라 자동 장애 조치 (failover)에도 사용할 수 있습니다. 그래서여러 A 레코드를 사용하여 페일 오버에 DNS 사용

나는 그것을 테스트 시도 :

  1. 나는 우리의 도메인에서 페이지를로드
  2. 해당 호스트
  3. 리로디드에 웹 서버를 소등
  4. 페이지를 제공 한 우리의 서버의 어떤 언급 페이지

사실 브라우저는 자동으로 페이지를로드하기 위해 다른 서버를 시도했습니다. 이것은 Opera, Safari, IE 및 Firefox에서 작동했습니다. Chrome 만 다른 서버를 시도하지 못했습니다.

그러나 몇 분 동안 서버를 오프라인 상태로두고 액세스 로그를보고 난 후에 다른 서버에 대한 요청 수가 상당히 증가하지 않았 음을 발견했습니다.. 오프라인에서 3 개의 서버 중 1 개를 사용하여 나머지 2 대의 서버에 대한 액세스가 대략 50 % 증가 할 것으로 예상했지만 그 대신 7-10 % 만 보았습니다. 이는 대부분의 브라우저/방문자가 DNS 기반 장애 조치를 수행하지 못한다는 것을 의미 할 뿐이며, 이는 방금 테스트 한 것과 모순됩니다.

누구나 DNS 기반 웹 브라우저 장애 조치 (DNS) 기반의 웹 사이트가 있습니까? 자동 장애 조치가 나를 위해 작동하지만 방문자의 대다수가 아닌 이유는 무엇입니까?

+0

serverfault.com, 자매 사이트 인 stackoverflow를 사용해보십시오. – bnieland

+0

고마워, 나는 [해냈어] (http://serverfault.com/questions/247885/using-dns-for-failover-using-multiple-a-records) – Daniel

답변

12

브라우저의 자동 DNS 장애 조치가 수행되지 않습니다.

도메인에 A 레코드가 여러 개있는 경우 네임 서버가 브라우저에 입력 한 도메인의 IP를 요청하면 SOA에서 요청한 도메인 이름을 요청합니다. A 레코드 중 하나 일 수 있습니다. 그런 다음 그것을 전달합니다.

일부 네임 서버는 새로운 A 레코드를 요청할만큼 '똑똑하기'만하며 일부는 작동하지 않고 일부는 그렇지 않은 경우에만 사용할 수 있습니다. 따라서 여러 개의 A 레코드를 설정하면 의사 중복 페일 오버를 설정하게되지만 '스마트'네임 서버를 사용하는 사람들에게만 해당됩니다. 나머지는 IP를받는 주사위 던지기를 얻고, 주사위를 던지면 성공합니다. 그렇지 않으면 Chrome에서와 마찬가지로로드하지 못합니다.

당신은 특히 당신이 당신의 호스트가 IP 당신이 진정한 장애 조치를 얻을 수 있는지 확인하기 위해 무엇을 도메인으로 이동 할 작업을 지정 리눅스에서 윈도우에서 C:\Windows\system32\drivers\etc\hosts 파일 및 /etc/hosts 사용할 수 있습니다이 테스트하려면 - 당신이 겠지만 실용적인 측면에서 보면 그물을 가로 지르는 DNS 서버가 TTL을 기반으로 도메인 이름 확인을 캐시합니다. 그래서/진짜 실패를 얻는다면, 그 IP는 여전히 해결되어야하고 다른 네임 서버에 농장으로 옮겨 질 필요가 있습니다.

+0

답장을 보내 주셔서 감사합니다. 그것은 페일 오버가 Chrome (이제는 유효하지 않은 DNS 레코드의 공격적인 캐싱)을 제외하고 나만 ("스마트"네임 서버를 가지고) 작동하는 이유를 설명합니다. – Daniel

+1

나는 그것이 정말로 질문이 아니라는 것을 안다. 그러나 DNS 장애 조치가없는 경우 : 부하 분산 장치가 단일 장애 지점이되는 것을 어떻게 피할 수 있습니까? – Karussell

+0

작업중인 회사 또는 가지고있는 장비에 따라 업스트림 장치가있는 경우로드 밸런서가 사망했다는 것을 감지하고 다른 곳으로 트래픽을 동적으로 전환 할 수 있습니다. 본질적으로 부하 분산 장치를로드 균형 조정합니다. 그렇지 않은 경우 IP와 하나의 상자 만 있으면 하나의 실패 지점이 있습니다. – Peter

1

또 다른 가능한 설명은 대부분의 공개 웹 사이트의 경우 트래픽이 대부분이 브라우저가 아닌 봇에서 나옵니다. 봇에 따라 도메인에 대해 여러 개의 A 레코드를 처리 할 때 브라우저만큼 똑똑하지 않을 수도 있습니다.

또한 일부 봇은 TCP 연결을 열린 상태로 유지하기 위해 & 같은 연결을 통해 여러 HTTP 요청을 만듭니다. DNS 조회는 연결이 이루어질 때만 수행되므로 연결이 열려있는 한 오래 된 IP 주소에 계속 요청합니다.

위 설명에 무게가 있으면 사용자 에이전트 문자열을 조사하여 로그에서 확인할 수 있어야합니다.

관련 문제