DNS에서 동일한 레코드 이름으로 서로 다른 IP 주소를 동시에 설정해 도메인 질의에 따라 로드 밸런싱할 수 있다.
하지만 DNS는 설정된 서비스 상태의 정상 여부를 확인하지 않고 도메인 질의에 무조건 응답하는 문제점이 있다.
그림처럼 서버 2에 문제가 있지만 DNS 서버가 이를 감지하지 못해 비정상적인 서비스 IP 주소를 응답하여 사용자가 해당 서비스에 접근할 수 없다.
즉 DNS 서버에서는 각 레코드에 대한 서비스 체크가 이루어지지 않고 설정값에 따라 동작해서 서비스 가용성 향상 방법으로는 부적합하다.
GSLB(Global Server/Service Load Balancing)는 이러한 DNS 문제점을 해결할 수 있다.
GSLB는 DNS에 동일하게 도메인 질의응답 역할에서 추가로 등록된 도메인에 연결된 서비스가 정상인지 헬스 체크 수행한다.
그림처럼 서버 2가 장애가 발생하면 GSLB에서는 등록된 두 개의 레코드 중 서버 2의 IP 주소를 가진 레코드를 도메인 질의응답하지 않도록 잠시 내리게 된다.
이런 이유로 GSLB를 인텔리전스 DNS 라고도 부른다.
GSLB 동작 방식
그림을 통해 GSLB 동작방식의 예를 들어보겠다.
- 사용자가 web.zigispace.net에 접속하기 위해 DNS에 질의
- LDNS는 web.zigispace.net을 관리하는 NS 서버를 찾기 위해 root부터 순차 질의
- zigispace.net을 관리하는 NS 서버로 web.zigispace.net에 대해 질의
- DNS 서버는 GSLB로 web.zigispace.net에 대해 위임했으므로 GSLB 서버가 NS 서버라고 LDNS에 응답
- LDNS는 다시 GSLB로 web.zigispace.net에 질의
- GSLB는 web.zigispace.net에 대한 IP 주소 값 중 현재 설정된 분산 방식에 따라 알맞은 IP 주소 값을 DNS에 응답
- GSLB에서 결괏값을 응답받은 LDNS는 사용자에게 web.zigispace.net이 1.1.1.1로 서비스하고 있다고 응답
예제에서 GSLB는 서울과 부산에 나누어진 서비스를 체크하고 사용자 DNS 질의 요청이 들어오면 서비스가 가능한 지역의 서버 IP로 응답한다.
만약 둘 다 정상 서비스라면 사전에 정의된 알고리즘을 통해 어느 데이터 센터 IP로 서비스할지 응답한다.
정리하자면 GSLB는 DNS와 동일하게 동작하지만 GSLB는 헬스체크와 사전에 지정한 다양한 분산 방법이 존재하고
일반 DNS는 두 개 이상의 항목이 있을 땐 라운드 로빈(순서대로 순환) 방식으로 응답한다.
GSLB 구성 방식
GSLB를 사용한 도메인 설정 방법은 아래와 같다.
- 도메인 자체를 GSLB로 사용
- 도메인 내의 특정 레코드만 GSLB로 사용
도메인 자체를 GSLB로 사용은 모든 레코드를 GSLB에서 설정하는 것을 말한다.
네임 서버가 도메인을 관리하며 해당 네임 서버를 GSLB로 지정하고 GSLB에서 도메인에 대한 모든 레코드를 등록해 처리하는 방식이다.
이 방법은 모든 레코드에 대한 질의가 이루어지므로 GSLB에 부하를 줄 수 있다.
다음은 도메인 내의 특정 레코드에 대해서만 GSLB 사용하는 경우이다. 이는 2 가지 방법이 존재한다.
- 별칭 사용(CNAME 레코드 사용)
- 위임 사용(NS 레코드 사용)
별칭 사용(CNAME 레코드 사용)
먼저 별칭을 사용하는 방법은 실제 도메인과 다른 별도의 도메인 레코드로 GSLB에 등록된다.
일반적으로 외부 CDN을 사용하거나 회사 내부에 GSLB를 사용해야 할 도메인이 많은 경우 한꺼번에 관리하기 위해 사용한다.
CDN(Content Delivery Network) : 콘텐츠를 효율적으로 전달하기 위해 분산된 서버에 데이터를 저장해 사용자에게 전달하는 시스템
FQDN(Fully Qualified Domain Name) : 호스트 이름과 도메인 이름을 포함한 전체 도메인 이름을 일컫는 용어
DNS 서버에 CNAME 레코드로 CDN과 같은 외부 GSLB를 지정하면 CNAME 레코드의 값으로 등록된 FQDN이 GSLB가 네임 서버로 등록된 도메인을 사용해 GSLB로 재질의한다.
- 사용자가 web.zigispace.net을 LDNS(1.1.1.1)로 질의
- LDNS는 web.zigispace.net을 관리하는 NS 서버를 찾기 위해 root부터 순차적으로 질의
- zigispace.net을 관리하는 DNS(2.2.2.2)에 web.zigispace.net의 주소 질의
- DNS는 LDNS에게 별칭으로 web.zigispace.net은 web.zigispace.gslb.net 이 관리한다고 응답
- 다시 LDNS(1.1.1.1) gslb.net을 관리하는 NS 서버를 root부터 순차 질의
- LDNS(1.1.1.1)는 zigispace.gslb.net을 관리하는 NS 서버인 GSLB(3.3.3.3)에 web.zigispace.gslb.net에 대해 질의
- GSLB(3.3.3.3)는 LDNS(1.1.1.1)에 web.zigispace.gslb.net의 IP(10.10.10.10)를 응답
- LDNS(1.1.1.1)는 해당 결괏값(10.10.10.10)을 사용자에게 최종 응답
위임 사용(NS 레코드 사용)
위임을 이용하는 방법은 실제 도메인과 동일한 도메인 레코드를 사용하며 도메인 전체를 위임하는 것이다.
DNS에서 특정 FQDN에 대한 설정을 NS 레코드로 설정하면 해당 FQDN에 대한 값을 NS 레코드의 값으로 설정된 네임 서버로 재질의한다. 이때 NS 레코드에 지정된 네임 서버가 GSLB이다.
- 사용자가 web.zigispace.net을 LDNS(1.1.1.1)로 질의
- LDNS는 web.zigispace.net을 관리하는 NS 서버를 찾기 위해 root부터 순차적 질의
- zigispace.net를 관리하는 DNS(2.2.2.2)에 web.zigispace.net 주소 질의
- DNS(2.2.2.2)는 GSLB(3.3.3.3)가 web.zigispace.net을 관리한다고 응답
- 다시 LDNS(1.1.1.1)는 web.zigispace.net을 관리하는 NS 서버인 GSLB(3.3.3.3)에게 web.zigispace.net 질의
- GSLB(3.3.3.3)는 LDNS(1.1.1.1)에 web.zigispace.net의 IP를 응답
- LDNS(1.1.1.1)는 해당 결괏값을 사용자에게 최종 응답
하나의 FQDN을 위임 처리하면 해당 FQDN의 하위 도메인은 별도의 위임 처리 없이 이미 상위 계층에서 위임 처리되므로 특정 도메인 내에서 GSLB를 사용한 하부 도메인을 계층화해 사용하면 DNS 서버 설정을 최소화해 GSLB로 다수의 FQDN을 위임 처리할 수 있다.
정리
별칭을 이용하는 경우, CDN처럼 GSLB를 운영해주는 외부 사업자가 있거나 GSLB를 사용해야 하는 도메인이 매우 많은 경우, 별도의 GSLB를 운영하기 위해 사용
위임을 이용하는 경우, DNS와 같은 도메인으로 GSLB를 운영하면서 계층적으로 GSLB를 이용한 FQDN을 관리할 때 사용
GSLB 분산 방식
GSLB를 이용해 서비스를 분산하면 다음과 같은 주요 목적을 달성할 수 있다.
- 서비스 제공의 가능 여부를 체크해 트래픽 분산
- 지리적으로 멀리 떨어진 다른 데이터 센터에 트래픽 분산
- 지역적으로 가까운 서비스에 접속해 더 빠른 서비스 제공이 가능하도록 분산
헬스 체크 외에 서로 다른 사이트로 서비스를 분산시키는 것도 매우 중요하다. 분산 방식에는 로드 밸런서와 동일하게 라운드 로빈, 최소 접속, 해싱 방식 외의 추가적인 분산 방식을 제공한다.
각 GSLB에서 지원되는 분산 방식은 대부분 2 가지 헬스 체크 모니터링 요소를 지원한다
- 서비스 응답 시간/지연(RTT/Latency) : 요청에 대한 응답이 얼마나 빠른지 또는 지연이 얼마나 없는지를 확인하고 서비스 분산처리
- IP에 대한 지리 정보 : 각 사이트의 IP 주소에 대한 Geo 값을 확인해 가까운 사이트로 서비스 분산처리
이러한 설정은 지리적으로 멀리 떨어진 국내와 해외 사이트로 구성된 경우, 매우 큰 효과를 발휘한다.
'CS > 네트워크' 카테고리의 다른 글
보안과 보안 솔루션 (0) | 2022.08.12 |
---|---|
DHCP(Dynamic Host Configuration Protocol) (0) | 2022.07.12 |
DNS(Domain Name System)란 (0) | 2022.07.06 |
NAT/PAT 란? (0) | 2022.07.06 |
라우팅 설정 방법 (0) | 2022.06.30 |