라운드 로빈 DNS
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
라운드 로빈 DNS는 DNS 서버가 쿼리 요청에 대해 여러 IP 주소를 순환 방식으로 제공하여 트래픽을 분산하는 방법이다. 구현이 용이하여 서버 부하 분산에 사용되지만, DNS 캐싱, 클라이언트 측 캐싱 및 재사용으로 인해 서비스 장애 발생 시에도 해당 주소를 계속 제공하는 문제점이 있다. 통신 지속성, 서버 동기화 문제, DNS 캐싱 정보 갱신 시차, 트래픽 불균형, 서버 장애 감지 불가, 512 바이트 문제 등의 단점이 존재한다. BIND와 같은 DNS 서버의 존 파일을 설정하여 구현할 수 있으며, TTL 값을 짧게 설정하는 것이 권장된다.
더 읽어볼만한 페이지
- 장애 허용 컴퓨터 시스템 - 컴퓨터 클러스터
컴퓨터 클러스터는 여러 대의 상용 컴퓨터를 고속 네트워크로 연결하여 고성능 컴퓨팅 시스템을 구축하는 방식으로, 슈퍼컴퓨터를 포함한 다양한 분야에서 높은 가용성과 확장성을 제공하며, 클러스터 미들웨어를 통해 시스템 관리, 부하 분산, 통신 방식, 데이터 공유 등을 지원하고 노드 장애 관리를 위한 펜싱 기술을 활용한다. - 장애 허용 컴퓨터 시스템 - 트랜잭션 처리
트랜잭션 처리는 데이터베이스 시스템에서 데이터의 일관성과 무결성을 보장하기 위한 기술이며, ACID 속성을 통해 데이터 정확성을 유지하고 롤백, 데드락 처리 등의 기술을 활용한다. - 도메인 네임 시스템 - 국제화 국가 코드 최상위 도메인
국제화 국가 코드 최상위 도메인은 다양한 언어의 문자를 국가 코드 최상위 도메인에 사용할 수 있도록 하는 시스템으로, 2009년부터 신청을 받아 아랍어, 러시아어, 중국어 등 다양한 국가에서 도입되었으나 혼동 가능성과 보안 문제 등의 과제도 안고 있다. - 도메인 네임 시스템 - DNSSEC
DNSSEC는 DNS의 보안 취약점을 개선하기 위해 도메인 정보에 디지털 서명을 추가하여 응답 레코드의 무결성을 보장하고 DNS 위장 공격을 막는 기술로, RRSIG, DNSKEY 등 다양한 리소스 레코드 유형을 사용하여 인증 체인을 구성하며 공개 키 암호 방식을 활용한다. - 인터넷 용어 - 비대칭 디지털 가입자 회선
비대칭 디지털 가입자 회선(ADSL)은 전화선을 이용하여 다운로드 속도가 더 빠른 비대칭적인 고속 데이터 통신을 제공하는 기술로, 주파수 분할 이중 방식과 이산 다중톤 변조 방식을 사용하며 거리와 잡음에 따라 속도 저하가 발생할 수 있고 광섬유 인터넷의 발전으로 서비스가 축소되고 있다. - 인터넷 용어 - 전자우편
전자우편은 컴퓨터 네트워크를 이용하여 편지와 메시지를 주고받는 시스템으로, 시분할 메인프레임 통신에서 시작하여 @ 기호 주소 체계 도입 후 아파넷을 통해 대중화되었으며, 다양한 형식의 파일 첨부와 스팸 등의 문제에도 불구하고 널리 사용되는 통신 수단이다.
라운드 로빈 DNS | |
---|---|
라운드 로빈 DNS | |
개요 | |
유형 | 부하 분산 기술 |
설명 | DNS 응답을 순환 방식으로 제공 |
동작 방식 | |
작동 원리 | DNS 서버가 여러 개의 IP 주소를 번갈아 가며 응답 |
목적 | 트래픽을 여러 서버에 분산 |
장점 | |
이점 | 구성 용이성 비용 효율성 |
설명 | 특별한 하드웨어나 소프트웨어 불필요 |
단점 | |
문제점 | 서버 장애 감지 불가 트래픽 분산의 불균형 가능성 |
보완점 | HTTP 리디렉션 또는 지리적 DNS와 함께 사용 |
사용 사례 | |
활용 분야 | 웹 서버 메일 서버 기타 서비스 |
관련 기술 | |
관련 기술 | HTTP 리디렉션 지리적 DNS 애니캐스트 |
기타 | |
주의사항 | RR DNS는 진정한 의미의 부하 분산 기술이 아님 |
2. 장점
라운드 로빈 DNS는 트래픽 부하를 여러 IP 주소로 분산시켜, HTTP 서버에 대한 접속을 거의 동일한 양으로 여러 서버 머신에 분배할 수 있다.[11]
접속 수 외에도 통신량, 서버 부하(CPU, 메모리 사용률), 응답 시간 등으로 부하 분산을 할 수 있다.
2. 1. 도입 용이성
BIND 등 DNS 서버의 존 설정을 통해 쉽게 구현할 수 있는 부하 분산 방식이다. 존 파일(Zone File) 설정만으로 간단하게 도입할 수 있다.[11]2. 2. 원격 서버 분산
BIND 등 DNS 서버의 존 설정을 통해 쉽게 구현할 수 있는 부하 분산 방식이다. 트래픽 부하를 여러 IP 주소로 분산시켜, 예를 들어 HTTP 서버에 대한 접속을 거의 동일한 양으로 여러 서버 머신에 분배할 수 있다.[11]접속 수에 따른 부하 분산 외에도 통신량, 서버의 부하(CPU나 메모리 사용률), 응답 시간으로 부하 분산을 할 수 있다.
3. 문제점
라운드 로빈 DNS는 구현이 쉽지만, DNS 계층 자체의 레코드 캐싱, 클라이언트 측 주소 캐싱 및 재사용 등 여러 단점이 존재하며, 이러한 요소들을 함께 관리하기 어려울 수 있다.[9] 서비스 가용성을 위해 라운드 로빈 DNS에만 의존하는 것은 위험하다. 목록에 있는 주소 중 하나에서 서비스가 실패하면 DNS는 해당 주소를 계속 제공하고, 클라이언트는 작동하지 않는 서비스에 연결을 시도하기 때문이다.[9]
라운드 로빈 DNS는 이름 서버가 쿼리될 때마다 주소 레코드의 순서를 바꾸기 때문에, 트랜잭션 시간, 서버 부하, 네트워크 정체를 고려하지 않아 자체로는 부하 분산에 최적의 선택이 아닐 수 있다.[9] 동일한 용량의 서버에 균등하게 분산된 많은 수의 연결이 있는 서비스에 가장 적합하며, 그렇지 않으면 단순한 부하 배분이 된다.[9]
이러한 제한을 극복하기 위해 수정된 DNS 서버(예: lbnamed[10])는 미러 서버의 가용성 및 부하 요소를 정기적으로 폴링할 수 있다. 서버가 응답하지 않으면, 해당 서버가 다시 정상 작동한다고 보고할 때까지 DNS 풀에서 일시적으로 제거할 수 있다.
트래픽 부하를 여러 IP 주소로 분산시켜, HTTP 서버에 대한 접속을 여러 서버에 분배할 수 있다. 이는 BIND 등 DNS 서버의 존 설정을 통해 구현할 수 있는 부하 분산 방식이다. 접속 수 외에도 통신량, 서버 부하(CPU나 메모리 사용률), 응답 시간으로 부하 분산을 할 수 있다.
IPv6에서 목적지 주소 선택 알고리즘으로 정의된 "RFC3484"에서는 DNS가 동일 서버명에 대해 여러 IP 주소를 가질 경우 "자신의 주소에 가까운 주소를 우선적으로 선택한다"고 규정하고 있다.[11] 윈도우 비스타(Windows Vista) 등 마이크로소프트(Microsoft)사 OS의 일부나, 최근의 리눅스(Linux) 등에서는 이 규칙에 따라 DNS 라운드 로빈이 기본적으로 비활성화되어 있다.[12][13]
이 때문에 최근에는 다른 부하 분산 방식을 사용하거나, 클러스터링을 도입하는 사례가 늘고 있다. 또한 유튜브(YouTube) 등이 채용하는 "IP 주소의 상위 프리픽스를 동일한 값으로 맞추는" 방법 등, RFC3484가 유효한 환경에서도 DNS 라운드 로빈의 효력을 발휘시키는 기술도 개발되고 있다.[14]
라운드 로빈 DNS는 다음과 같은 구체적인 문제점들을 가진다.
- 통신 지속성 문제
- 서버 동기화 문제
- DNS 캐싱 정보 갱신 시차
- 트래픽 부하 분산의 불균형
- 서버 장애 감지 불가능
- 512바이트 문제
3. 1. 통신 지속성 문제
연결마다 연결 대상이 달라지면 웹 애플리케이션의 세션 관리, 암호화 통신 등 연결 지속성이 필요한 서버에서 문제가 발생할 수 있다.[9]3. 2. 서버 동기화 문제
분산된 서버들의 콘텐츠 내용이 동일하지 않으면 연결에 문제가 발생할 수 있다(예: 웹 서버의 링크).[9]3. 3. DNS 캐싱 정보 갱신 시차
레코드의 TTL 값이 긴 경우, 변경 전 정보를 참조하는 기간이 길어진다. 이러한 문제를 해결하기 위해, TTL을 짧게 설정하여 운영하는 것이 일반적이다.[15]3. 4. 트래픽 부하 분산의 불균형
라운드 로빈 DNS는 자체로는 부하 분산에 최적의 선택이 아닐 수 있다. 균등한 부하 분산은 불가능하며, 특정 사용자가 하나의 통신 대상에 집중적으로 접속하는 경우가 있을 수 있기 때문이다.[9]3. 5. 서버 장애 감지 불가능
DNS 라운드 로빈은 기본적으로 분산 서버의 상태를 확인할 수 없기 때문에, 분산 서버가 응답 불가능한 상태여도 분산 대상으로 할당한다.[9]3. 6. 512바이트 문제
동일한 서버 이름에 많은 IP 주소를 할당하면 DNS 쿼리 결과가 일반적인 UDP 패킷 크기인 512바이트를 초과하는 경우가 발생할 수 있는데, 이때 일부 소프트웨어에서 정상적인 처리가 안 될 수 있다.[15]4. 구현 방법
BIND와 같은 DNS 서버의 존 설정을 통해 트래픽 부하를 여러 IP 주소로 분산시켜 HTTP 서버 접속을 여러 서버에 거의 동일하게 분배할 수 있다. 이는 쉽게 구현 가능한 부하 분산 방식이다.[11]
접속 수 외에도 통신량, 서버 부하(CPU, 메모리 사용률), 응답 시간 등으로도 부하 분산을 할 수 있다.
IPv6의 목적지 주소 선택 알고리즘인 "RFC3484"에서는 DNS가 동일 서버명에 대해 여러 IP 주소를 가질 경우 "자신의 주소에 가까운 주소를 우선적으로 선택한다"고 규정하고 있다.[12][13] 윈도우 비스타(Windows Vista) 등 마이크로소프트(Microsoft)사 OS 일부나 최근의 리눅스(Linux) 등에서는 이 규칙에 따라 DNS 라운드 로빈이 기본적으로 비활성화되어 있다.
이 때문에 최근에는 다른 부하 분산 방식을 사용하거나, 클러스터링을 도입하는 사례가 늘고 있다. 유튜브(YouTube) 등이 채용하는 "IP 주소의 상위 프리픽스를 동일한 값으로 맞추는" 방법 등, RFC3484가 유효한 환경에서도 DNS 라운드 로빈의 효력을 발휘시키는 기술도 개발되고 있다.[14]
4. 1. 존 파일 작성 예시
다음은 존 파일 작성 예시이다.
hoge IN A 127.0.1.1
hoge IN A 127.0.1.2
hoge IN A 127.0.1.3
실제 운영 시에는 TTL을 짧게 설정하여 요청 대상을 자주 변경하는 것이 좋다.
hoge 30m IN A 127.0.1.1
hoge 30m IN A 127.0.1.2
hoge 30m IN A 127.0.1.3
과거에는 CNAME 레코드를 사용하여 작성하는 경우가 있었지만, 현재 DNS 사양에서는 금지되어 있다.[1]
hoge IN CNAME hoge1
IN CNAME hoge2
IN CNAME hoge3
hoge1 IN A 127.0.1.1
hoge2 IN A 127.0.1.2
hoge3 IN A 127.0.1.3
5. 대안
수정된 DNS 서버 (예: lbnamed[10])를 사용하여 미러 서버의 가용성 및 부하 요소를 정기적으로 폴링할 수 있다. 서버가 응답하지 않으면, 해당 서버가 다시 정상 작동한다고 보고할 때까지 DNS 풀에서 일시적으로 제거할 수 있다.
최근에는 다른 부하 분산 방식을 사용하거나, 클러스터링을 도입하는 사례가 늘고 있다. 또한 유튜브 등이 채용하는 "IP 주소의 상위 프리픽스를 동일한 값으로 맞추는" 방법 등, RFC3484가 유효한 환경에서도 DNS 라운드 로빈의 효력을 발휘시키는 기술도 개발되고 있다.[14]
참조
[1]
웹사이트
Round-Robin DNS
https://www.cloudfla[...]
Cloudflare, Inc.
2019-08-16
[2]
웹사이트
DNS round robin for web server failover
http://www.nber.org/[...]
2016-07-25
[3]
웹사이트
What is the difference among a multivalue answer routing policy and a simple routing policy?
https://aws.amazon.c[...]
2018-08-03
[4]
서적
DNS Security
2016
[5]
간행물
An overview of DNS-based server selections in content distribution networks
2003
[6]
웹사이트
getaddrinfo with round robin DNS and happy eyeballs
https://daniel.haxx.[...]
2012-01-03
[7]
간행물
RFC 6724 - Default Address Selection for Internet Protocol Version 6 (IPv6)
https://tools.ietf.o[...]
[8]
웹사이트
Rule 9 for IPv4 caused serious operational problems ([the Debian Linux] ftp sites failed!
https://lists.debian[...]
[9]
간행물
RFC 1794 - DNS Support for Load Balancing
https://tools.ietf.o[...]
2019-08-24
[10]
문서
lbnamed
http://www.stanford.[...]
[11]
문서
RFC3484
http://www.ietf.org/[...]
[12]
문서
Windows Vista and Windows Server 2008 DNS clients do not honor DNS round robin by default
http://support.micro[...]
Microsoft KnowledgeBase
[13]
문서
GETADDRINFO
http://linuxjm.osdn.[...]
Linux Programmer's Manual (3)
[14]
뉴스
知ってますか? DNSの浸透問題や親子同居問題、検閲の影響
https://atmarkit.itm[...]
"@IT"
2012-09-07
[15]
문서
DNS ラウンドロビンのすすめ - その3
http://techblog.jwor[...]
JWord 開発者ブログ
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com