하나의 도메인 이름에 여러 개의 해당 IP 주소가있을 수 있습니까?


89

예를 들어에 연결할 때 www.example.com처음에는에 연결을 시도합니다 192.0.2.1. 첫 번째 시도가 실패하면 192.0.2.222.

가능합니까? 하나의 도메인 이름에 여러 백업 IP 주소를 등록 할 수 있습니까?


이 방식으로 정확히 작동 하지는 않습니다 (Round-Robin 사용). 호스트를 여러 번 쿼리하면 호스트가 실패 할 때뿐만 아니라 쿼리를 수행 할 때마다 다른 IP를 반환합니다.
karatedog

처음 하나에 연결할 수없는 경우 @karatedog, 내가 그 소켓 연결을 가정 한 것은 다음 IP 연결을 시도합니다
아카 쉬 카바

4
@AkashKava : 단일 연결 에는 여러 내부 단계가 있습니다. 단순화 : 애플리케이션이 DNS를 쿼리하고 IP 주소를 얻습니다. 그런 다음 해당 IP 주소에 연결합니다. 연결이 실패하면 응용 프로그램은 첫 번째 단계로 돌아 가지 않고이를 수행하도록 명시 적으로 코딩 된 경우에만 DNS를 다시 쿼리합니다. 그리고 DNS 서버를 여러 번 쿼리한다고해서 반드시 다른 IP 주소가 제공되는 것은 아닙니다. 즉, 재고 DNS는로드 밸런싱 목적으로 사용할 수 없습니다.
karatedog

이 기술을 사용하여 여러로드 밸런서를 확장 할 수 있습니까?
Vikas Verma

답변:


65

이것은 라운드 로빈 DNS입니다. 이것은로드 밸런싱을위한 아주 간단한 솔루션입니다. 일반적으로 DNS 서버는 들어오는 각 DNS 요청에 대해 DNS 레코드를 교체 / 셔플합니다. 불행히도 이것은 장애 복구를위한 실제 솔루션이 아닙니다. 서버 중 하나가 실패하더라도 일부 방문자는이 실패한 서버로 연결됩니다.


3
회복 시간에 대한 귀하의 기대에 달려 있습니다. 제공된 서비스가 몇 초 또는 몇 분 동안 다운 될 수있는 경우 그에 따라 DNS를 업데이트 할 수 있습니다 (예 : 실패한 시스템의 IP 제거). 이것이 허용되지 않는 경우 DNS는 도움이되지 않으며로드 밸런서와 고 가용성 네트워크 구조를 사용해야합니다.
옌스 Bradler

클라이언트가 목록에서 IP를 선택하는 방법을 알고 있습니까? 무작위 선택입니까, 아니면 클라이언트가 목록의 첫 번째를 선택해야합니까? 첫 번째 경우 라운드 / 로빈은 그다지 유용하지 않기 때문입니다.
Tobia dec.

레코드를 섞거나 회전시키는 것은 DNS 서버의 역할입니다. 대부분의 클라이언트는 첫 번째 레코드 만 사용합니다. 예를 들어 Bind9는이 유형의 레코드 세트에 다른 순서를 적용하도록 구성 할 수 있습니다. bind.isc.org/doc/arm/9.13/Bv9ARM.ch05.html#rrset_ordering
Jens Bradler

이 기술을 사용하여 여러로드 밸런서를 확장 할 수 있습니까?
Vikas Verma

48

넌 할 수있어. 그게 큰 사람들도하는 일입니다.

첫 번째 쿼리 :

» host google.com 
google.com has address 74.125.232.230
google.com has address 74.125.232.231
google.com has address 74.125.232.232
google.com has address 74.125.232.233
google.com has address 74.125.232.238
google.com has address 74.125.232.224
google.com has address 74.125.232.225
google.com has address 74.125.232.226
google.com has address 74.125.232.227
google.com has address 74.125.232.228
google.com has address 74.125.232.229

다음 쿼리 :

» host google.com
google.com has address 74.125.232.224
google.com has address 74.125.232.225
google.com has address 74.125.232.226
google.com has address 74.125.232.227
google.com has address 74.125.232.228
google.com has address 74.125.232.229
google.com has address 74.125.232.230
google.com has address 74.125.232.231
google.com has address 74.125.232.232
google.com has address 74.125.232.233
google.com has address 74.125.232.238

보시다시피 IP 목록은 회전했지만 두 IP 간의 상대적 순서는 동일하게 유지되었습니다.

업데이트 : DNS 라운드 로빈이 장애 조치에 편리하지 않은 방법에 대해 자랑하는 여러 의견이 있습니다. 요약은 다음과 같습니다. DNS는 장애 조치를위한 것이 아닙니다 . 따라서 장애 조치에는 분명히 좋지 않습니다. 장애 복구를위한 솔루션으로 설계되지 않았습니다.


1
이 라운드 로빈이 작동하려면 무언가를 활성화해야합니까, 아니면 모든 DNS 서버에서 자동으로 수행합니까? 하나의 Linux와 하나의 MS DNS가 있습니다.
Akash Kava

3
장애 조치를 다루지 않는 경우 Google이 왜 이렇게할까요?
Joseph Persie 2016 년

12
@JosephPersie : DNS가 장애 조치에 사용되지 않기 때문입니다. 동일한 도메인 이름에 여러 IP를 제공함으로써 들어오는 요청은 해당 IP 주소에서 수신 대기하는 서버간에 간단히 분할됩니다. 백엔드 상태 확인없이 첫 번째 수준의 부하 분산이라고 생각하세요. 당신이 :-) 수천 개의 서버가없는 경우이 필요하지 않습니다
karatedog

로드 밸런서가 다운되고 요청이 동일한 밸런서로 전달되면 어떻게됩니까?
Jitendra Vispute 2019

1
@JitendraVispute : DNS는 반환하는 IP 주소 뒤에있는 서비스에 대해 알지 못합니다. 간단히 말해서 DNS 서버에서 방금 반환 한 IP 주소 뒤에 손상된 서버 또는 서비스가 손상된 경우 해당 IP에 대한 요청이 실패합니다.
karatedog

2

예, 가능하지만 Jens가 말한 것처럼 편리하지는 않습니다. Alteon과 같은 차세대로드 밸런서 사용. DSSP (Distributed Site State Protocol) 라는 독점 프로토콜을 사용합니다.이 프로토콜 은 정기적 인 사이트 검사를 수행하여 서비스가 로컬 또는 글로벌 (즉, 다른 지리적 영역) 모두에서 사용 가능한지 확인합니다. 그러나 마스터 DNS에서 URL 또는 서비스를 해당 IP 또는 서비스에 대한 권한있는 이름 서버 로 구성하여 장치에 위임해야합니다 . 이렇게하면 장치 는 여러 메트릭에서 선택한 방법에 따라 Round-Robin 의 서비스가 있거나 혼잡하지 않은 IP를 확인하는 DNS 쿼리에 응답합니다 .


1
이것은 무엇보다 광고처럼 들리며로드 밸런서는 DNS 세계에서 뛰어난 성능을 발휘하지 못합니다 (사양과 관련하여). 그리고 정확하게 말하면, "URL 또는 서비스를 위임하는 마스터 DNS"에는 영역 (도메인)을 다른 네임 서버에 위임 할 때 네임 서버 / DNS에 URL 또는 서비스 개념이 없습니다. "해당 IP 또는 서비스에 대한 권한있는 이름 서버로." 따라서 네임 서버는 IP 주소 나 서비스가 아닌 영역 / 도메인에 대해 권한이 있습니다.
Patrick Mevzek

작업 지점에서 작업을 수행합니다. 모든 CDN이로드 밸런서를 사용하여이를 효과적으로 전달하는 것이 사실상 표준이었습니다. GEO-LOCATION과 같은 고급 기능을 결합하여 가까운 곳에있는 IP 주소를 제공 할 수 있기 때문입니다. 다른 메트릭 중에서도 응답 성이 높은 서버에 적합합니다.
Ezra A. Mosomi

1
그리고 그들은 동시에 많은 문제를 야기합니다. 은색 총알이 없으며 모든 것이 기능과 단점이 있습니다. 모든 네임 서버는 클라이언트에 따라 다른 IP로 지리적 위치를 파악하고 응답 할 수 있으며이를위한로드 밸런서가 필요하지 않습니다. 도움이되는 표준도 있습니다 : EDNS 클라이언트 서브넷.
Patrick Mevzek
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.