DNS 기반 부하 분산이란?

DNS 부하 분산은 사용자를 단일 도메인에 대해 여러 IP 주소로 연결하여 애플리케이션 가용성과 성능을 개선합니다.

학습 목표

이 글을 읽은 후에 다음을 할 수 있습니다:

  • DNS 기반 부하 분산의 정의
  • 라운드 로빈 DNS 작동 방식 설명
  • 다양한 DNS 기반 부하 분산 구성에 대한 이해

관련 콘텐츠


계속 알아보시겠어요?

인터넷에서 가장 인기 있는 인사이트를 한 달에 한 번 정리하는 Cloudflare의 월간 요약본 theNET를 구독하세요!

Cloudflare가 개인 데이터를 수집하고 처리하는 방법은 Cloudflare의 개인정보 취급방침을 참조하세요.

글 링크 복사

Cloudflare Pro 요금제 및 속도 도구 추가 기능으로 웹 사이트 성능 향상

DNS(도메인 네임 시스템) 기반 부하 분산이란?

부하 분산은 성능과 가용성을 개선하기 위해 트래픽을 둘 이상의 서버에 분산하는 방법입니다.조직에서는 웹 사이트와 사설 네트워크의 속도를 높이기 위해 다양한 형태의 부하 분산을 사용합니다.부하 분산이 없으면 대부분의 인터넷 애플리케이션과 웹 사이트는 트래픽을 효과적으로 처리하지 못하거나 제대로 작동하지 않습니다.

DNS를 인터넷의 전화번호부라고도 하는 이유는 웹 사이트 도메인(예: google.com 또는 nytimes.com)을IP 주소로 변환하기 때문입니다.IP 주소는 서버가 웹 사이트와 인터넷에 연결된 모든 장치를 식별하는 데 사용하는 긴 숫자 레이블입니다.DNS는 도메인 이름을 IP 주소로 변환하는 프로세스(DNS 확인이라고 함)를 통해 사람들이 웹 사이트와 애플리케이션에 액세스하기 위해 긴 숫자를 외울 필요가 없도록 해줍니다.

DNS 확인에서 인터넷 사용자의 브라우저는 DNS 서버에 연결하여 대상 웹 사이트의 정확한 IP 주소를 요청합니다. 도메인에서 IP 주소를 요청하는 행위를 DNS 쿼리라고 합니다.

DNS 기반 부하 분산은 DNS를 사용하여 여러 서버에 트래픽을 분산하는 특정 유형의 부하 분산입니다. DNS 기반 부하 분산은 DNS 쿼리에 대한 응답으로 다른 IP 주소를 제공하여 이를 수행합니다. 부하 분산 장치는 다양한 방법이나 규칙을 사용하여 DNS 쿼리에 대한 응답으로 공유할 IP 주소를 선택할 수 있습니다.

가장 일반적인 DNS 부하 분산 기술 중 하나는 라운드 로빈 DNS입니다.

라운드 로빈 DNS란?

라운드 로빈 DNS는 트래픽을 분산하여 사이트의 성능과 안정성을 개선한다는, 다른 유형의 DNS 기반 부하 분산과 동일한 목표를 가지고 있습니다.그러나 특수 소프트웨어 기반 또는 하드웨어 기반 부하 분산 장치를 사용하는 것과 달리, 라운드 로빈 DNS는 권한 있는 네임서버라는 일종의 DNS 서버를 사용하여 부하 분산을 수행합니다.

권한 있는 네임서버는 도메인 이름과 일치하는 IP 주소가 포함된 A 레코드 또는 AAAA 레코드라는 DNS 레코드를 보유합니다. 클라이언트가 DNS 쿼리를 제출할 때 쿼리의 목표는 A(또는 AAAA) 레코드를 찾는 것입니다. 기본 설정에서 도메인에는 단일 IP 주소에 연결된 단일 A 레코드가 있으므로 DNS 쿼리에서 항상 동일한 IP 주소가 반환됩니다.

그러나 라운드 로빈 DNS에서는 도메인에 각각 다른 IP 주소에 연결된 여러 개의 A 레코드가 있습니다. DNS 쿼리가 들어오면 IP 주소가 라운드 로빈 방식으로 순환하면서 관련 서버에 요청을 분산시킵니다.

라운드 로빈 DNS는 어떻게 작동할까요?

라운드 로빈 DNS에 5개의 IP 주소가 있는 경우, DNS 쿼리는 6번째 요청마다 1번 IP 주소만 반환합니다. 각 IP 주소가 다른 서버에 대응하므로 이 설정은 각 서버의 작업 부하를 줄여 요청으로 인해 과부하가 걸릴 가능성을 줄여줍니다.

라운드 로빈 DNS의 작동 방식을 이해하려면 웹 사이트를 방문하는 행위와 회사에 메일을 보내는 행위를 비교해 보세요. 회사에서 사서함을 이용하여 고객 우편물을 받는데, 단일 사서함에서 처리할 수 있는 양보다 더 많은 우편물을 받는다고 가정해 보겠습니다. 이 문제를 해결하기 위해 회사에서는 사서함을 더 구매할 수 있습니다.

여러 개의 사서함 전략을 사용하려면 회사에서 한 사서함에 우편물이 넘치지 않도록 해야 합니다. 즉, 고객이 회사의 우편 주소를 조회할 때 표시되는 사서함 주소가 순차적으로 바뀌어야 합니다. 1번 고객에게는 1번 사서함 주소가 표시되고, 2번 고객에게는 2번 사서함 주소가 표시됩니다. 이 방법은 전체 용량을 늘려 개별 사서함의 부담을 줄이는 데 도움이 됩니다. 추가 사서함이 없으면 하나의 사서함이 쉽게 넘쳐서 메일 수신이 지연될 수 있습니다.

사서함 예시에서와 같이 라운드 로빈 DNS는 서버가 요청에 과부하가 걸리지 않도록 보호하여 요청 처리가 지연되는 것을 방지합니다.

다른 유형의 DNS 기반 부하 분산에는 어떤 것이 있을까요?

라운드 로빈 방식이 널리 사용되기는 하지만, 트래픽을 라우팅하는 유일한 방법은 아닙니다. 대부분의 부하 분산 장치에서는 도메인 소유자가 여러 트래픽 라우팅 규칙 중에서 선택할 수 있습니다.

DNS 기반 부하 분산 구성의 한 가지 예는 트래픽 처리 용량에 따라 서로 다른 서버에 상대적인 가중치를 할당하는 가중치 알고리즘입니다. 그런 다음 트래픽이 비례적으로 할당됩니다. 예를 들어 서버 A의 용량이 서버 B의 두 배인 경우 부하 분산 장치는 DNS 쿼리에 대한 응답으로 서버 A의 IP 주소를 반환하는 방식으로 서버 B에 비해 두 배의 트래픽을 서버 A에 할당합니다. 가중치 라운드 로빈 또는 가중치 최소 연결이 이러한 유형의 부하 분산 알고리즘의 예입니다.

대부분의 DNS 기반 부하 분산 방식은 동적 방식이므로 부하 분산 장치에서 요청을 할당할 때 서버 상태와 서버 응답 시간을 고려합니다. 동적 알고리즘은 다양한 형태를 취할 수 있습니다. "최소 연결" 은 동적 부하 분산 알고리즘의 한 유형입니다. 최소 연결 구성에서 서버 모니터링은 현재 열려 있는 연결이 가장 적은 서버를 확인한 다음 DNS 쿼리에 대한 응답으로 해당 서버의 IP 주소를 제공하여 들어오는 트래픽을 해당 서버에 할당합니다.

지리적 위치는 널리 사용되는 또 다른 동적 알고리즘입니다. 이 구성에서는 부하 분산 장치가 한 지역으로부터의 요청을 정의된 서버 또는 서버 집합에 할당합니다. 예를 들어 프랑스에서 들어오는 모든 요청은 '서버 F'로, 스페인에서 들어오는 모든 요청은 '서버 S'로 전송될 수 있습니다.

근접성 기반 알고리즘도 비슷한 기능을 수행합니다. 이 구성에서 부하 분산 장치는 사용자와 가장 가까운 서버에 트래픽을 동적으로 할당합니다.

동적 알고리즘은 약간 다른 규칙을 따르지만, 궁극적으로 서버 상태를 모니터링하고 트래픽 할당 방식을 최적화하는 동일한 작업을 수행합니다.

Cloudflare의 DNS 기반 부하 분산은 어떻게 작동할까요?

Cloudflare Load Balancing은 HTTP/HTTPS 요청을 통해 서버 상태를 능동적으로 모니터링하는 DNS 기반 부하 분산 솔루션입니다. 이러한 상태 확인 결과에 따라 Cloudflare에서는 트래픽을 건강한 원본 서버로 유도하고 건강하지 않은 서버는 피합니다. 또한, 리버스 프록시 트래픽을 전송하는 고객에게는 원본 서버의 IP 주소를 마스킹하는 추가적인 보안 이점을 제공합니다. Cloudflare Load Balancing에 대하여 자세히 알아보세요.