부하 분산 DNS 서버 : UDP / TCP


10

데이터 센터에서로드 밸런싱 인프라를 재 구축하라는 요청을 받았습니다.

원래 요청은 FTP 서버의로드 밸런스입니다. 현재로드 밸런서 ( Piranha / LVS) 를 사용하여 시도 했지만 작동하지 않았습니다. 이 소프트웨어에 대한 문서가 거의 없기 때문에가 아닙니다. Piranha더 이상 사용되지 않는 것으로 간주 되기 때문에 HAProxy며칠 동안 시도한 후에 작업을 진행했습니다 Piranha.

FTP로드 밸런싱 (수동 모드)이 있습니다. 이제 데이터 센터에서 전체 Piranha Load Balancer를 교체하라는 요청을 받았습니다. 현재 Piranha 구성에는 여러 웹 서버, IIS 서버 .... aaa 및 DNS가 있습니다.

여기에 문제가 없습니다 :
HAProxy일반적으로 사용되는 LB 인 것처럼 보이지만 처리 할 수는 없습니다UDP load balancing . HAProxy작동 방식이 마음에 듭니다 . 그래서 나는 많은 것을 구글 검색하고 여러 가지를 발견했습니다. 대부분의 사람들은 LVSDNS 용 LB (TCP / UDP) 로 사용 하는 것 같습니다 . 일부 사용 dlbDNS, 일부 사용 lbnamed및 일부 사용 netfilter / iptables.

HAProxyFTP, HTTP, IIS 서버 를 고수하고 싶기 때문에와 함께 사용하는 것에 혼란스러워했습니다 LVS.

요구 사항 :
장애 조치가있는
2 개의 LB 인스턴스 장애 조치가있는 2 개의 DNS 서버 (이미 존재 함)
여러 백엔드 서버 (http, 응용 프로그램 등)

질문 :
가능합니까? DNS 서버에서 UDP로드 밸런싱이 필요합니까? 시작하는 방법을 보여줄 수있는 자료가 있습니까? 아니면 TCP / HTTP뿐만 아니라 UDP로드 밸런싱도 처리 할 수있는 LB 솔루션이 있습니까?

추신 : LB 솔루션은 비 하드웨어 및 오픈 소스 / GPL 라이센스 / 비용이 없어야합니다.

각 자원에 대한 도움이나 도움은 대단히 감사합니다!


Nginx 확인 nginx.com/blog/announcing-udp-load-balancing 이것은 귀하의 DNS 질문을 해결하는 것 같습니다
user433519

답변:


15

DNS를로드 밸런싱하지 마십시오.

엄청나게 가벼운 프로토콜입니다. 하나 이상의 상자를 필요로하는 엄청난 양의 트래픽이 필요합니다 (이 경우로드 밸런서에서 병목 현상이 발생합니다). 여러 NS 레코드를 사용할 수 있기 때문에 탄력성이 내장되어 있습니다. 위임에서 다른 서버가 다운되면 사용됩니다.


DNS에 TCP가 더 많이 사용되므로 여러 NS 레코드를 확실히 사용하십시오. 바퀴를 재발 명하는 것은 이유 때문에 고통 스럽습니다.
cpt_fink

여러 DNS 서버는 중복성을 제공하고 전체 오류를 방지하지만 DNS 서버가 다운되면 이름 확인 지연이 계속 발생합니다.
200_success

알았어요 문제는 내가 착오하지 않으면 장애 조치 목적으로 여전히 가상 IP가 필요하다는 것입니다. 라우팅을 위해 HAProxy와 LVS를 포함하는 두 대의 컴퓨터가 있기 때문입니다. 어떻게 접근할까요?
Mosh Pit

2
@MoshPit vrrpd 또는 keepalived는 좋은 옵션입니다.
Shane Madden 1

Active-Active Hot Standby 설정에 대해 이야기하고 있다고 가정합니다. 맞습니까?
Mosh Pit

11

이 Q & A는 어떤 종류의 DNS 서버에 대해 실제로 확립되어 있지 않기 때문에이 Q & A에 불편합니다. 재귀 DNS의 복원력과 관련하여 몇 가지 중요한 오해가 있으며 검색 엔진을 통해 순항하는 사람들이 잘못된 보안 감각으로이 토론에서 벗어나지 않는 것이 중요합니다.

  • 신뢰할 수있는 DNS : 신뢰할 수있는 DNS 서버의 경우 DNS의 복원력에 대한 일반적인 지식이 있습니다. 지역 중복 성인 신뢰할 수있는 여러 DNS 서버가있는 한 괜찮습니다. 개별 IP에 고 가용성을 추가하는 주된 이유는 여러 권한 영역을 호스팅하는 경우 입니다. 이를 통해 호스팅되는 모든 도메인에 대한 등록자 설정을 변경하지 않고도 서버 수를 늘릴 수 있습니다.

  • 재귀 DNS : 항상 어떤 형태의 고 가용성 솔루션을 사용하십시오. (BGP, 기기 등) 심각한 문제가 발생할 수 있습니다. 모든 리졸버 라이브러리가 동일하게 생성되지는 않습니다. Windows DNS 클라이언트는 쿼리간에 사용되는 초기 서버를 로빈 처리하지만 대부분의 Unix 기반 시스템은 항상 목록을 순차적으로 순환합니다. 무엇도되고 알려진 것은 이러한 유닉스 라이브러리에서 시간을 가질 것입니다 모든 검색 도메인에 다음 서버로 이동하기 전에 조합. 여러 검색 도메인이 구성되어 있고 확인자 조회 순서의 첫 번째 서버가 작동하지 않으면 모든 단일 요청에 대해 DNS 확인에 상당한 지연이 발생할 수 있습니다. 중요 응용 프로그램 내에서 문제를 일으킬 정도로 충분합니다.

재귀 DNS의 경우 서버 인프라는 가장 치명적인 클라이언트 구성만큼 복원력이 뛰어납니다. 회사가 성장함에 따라 이는 결코 통제 할 수 없는 일 입니다. 성장하는 회사에서는 상황이 거의 유지되지 않기 때문에 동종 서버 운영 체제 환경을 기반으로 설계를 가정하지 마십시오. 미리 계획하지 않으면 누군가에게 물릴 것입니다.


지금까지 DNS 서비스로 bind / named를 사용하고 있습니다.
Mosh Pit

좋은 지적-나는 정답이라고 가정했지만 당신이 옳습니다. 그것은 재귀 일 수 있습니다.
Shane Madden

1
@MoshPit 귀하의 "DNS 서비스"의견은 이것이 재귀 적이거나 권위적인지 명확하지 않았습니다. 권한은 도메인을 호스팅 할 때입니다. 재귀는 호스팅하지 않는 도메인의 IP 주소를 얻는 데 사용하는 것입니다. 두 가지를 모두 수행하는 서버는 "혼합"되어 보안 모범 사례에 위배됩니다.
앤드류 B

1
해당 의견을 게시 할 때 사과드립니다. 우리는 우리 자신의 DNS 서버를 통제하고 있으며, 그것들은 신뢰할 수 있습니다.
Mosh Pit

고 가용성을 위해로드 밸런서를 사용하지 마십시오.
울림

2

요즘 dnsdistPowerDNS에서 사용할 수 있습니다

읽어보기에서

dnsdist는 DNS, DoS 및 남용 인식로드 밸런서입니다. 인생의 목표는 트래픽을 최상의 서버로 라우팅하여 합법적 인 사용자에게 최고의 성능을 제공하는 동시에 가혹한 트래픽을 차단하거나 차단하는 것입니다.

dnsdist는 런타임에 구성을 변경할 수 있으며 콘솔과 같은 인터페이스에서 통계를 쿼리 할 수 ​​있다는 점에서 동적입니다.

https://github.com/PowerDNS/pdns/tree/master/pdns/dnsdistdist

일반적인 OS에 대한 리포지토리를 제공합니다. https://repo.powerdns.com/

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.