Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

Contents

GSLB

Global server Load Balancing라는 이름 때문에, 로드 밸런스의 발전된 형태로 생각 할 수 있겠다. 이름과는 달리 DNS 서비스의 발전된 형태다. 지능적 DNS 서비스라고 부르기도 하는 듯.

DNS 서비스는 도메인 이름을 IP주소로 변환하는 일을 하는 서비스다. 하나의 도메인 주소에 대해서 여러 개의 IP주소를 넘겨줄 수 있는데, 이 기능을 이용해서 가용성 구성과 로드 밸런싱 기능을 수행할 수 있다. 하지만 가용성과 로드 밸런싱이 본 기능은 아니라서, 이런 목적으로 사용하기에는 한계가 있다.

예를들어 클라이언트가 표준 DNS에 질의를 할 경우, DNS 서버는 로컬 데이터베이스의 IP 목록을 확인해서 그 중 하나를 반환 할 뿐, 네트워크 지연, 성능, 트래픽 유입, 서비스 실패 등은 전혀 고려하지 않는다.

이런 한계에도 불구하고 인터넷 영역에서 로드 밸런싱을 할 수 있다는 장점이 있다. 지역을 뛰어넘는 넓은 영역에서의 로드밸런싱 및 가용성 구성을 위한 좋은 솔류션이되겠다. 물론 이를 위해서는 몇 가지 문제들을 해결해야 하고, 이 문제를 해결한게 GSLB다.

GSLB와 DNS 작동방식 비교

재해 복구

  • DNS는 서버의 상태를 알 수 없다. 따라서 서비스를 실패하는 유저가 생길 수 있다.
  • GSLB는 서버의 상태를 모니터링 한다. 실패한 서버의 IP는 응답에서 제외 하므로, 유저는 서비스를 계속 이용할 수 있다.

로드밸런싱

  • DNS는 Round Robin 방식을 사용한다. 정교한 로드 밸런싱이 힘들다.
  • GSLB는 서버의 로드를 모니터링 한다. 로드가 적은 서버의 IP를 반환하는 식으로 정교한 로드밸런싱을 할 수 있다.

레이턴시 기반 서비스

  • DNS는 Round Robin 방식을 사용한다. 유저는 네트워크상에서 멀리 떨어진 위치의 서버로 연결 할 수도 있다.
  • GSLB는 각 지역별로 서버에 대한 레이턴시(latency) 정보를 가지고 있다. 유저가 접근을 하면, 유저의 지역으로 부터 가까운(더 작은 레이턴시를 가지는) 서버로 연결을 한다.

위치기반 서비스

  • DNS에서 유저는 Round Robin하게 서버로 연결된다.
  • GSLB는 유저의 지역정보를 기반으로, 해당 지역을 서비스하는 서버로 연결 할 수 있다.

주요 기술 요소들

GSLB의 주요 기능을 제공하기 위한 기술 요소들을 살펴본다.

Healthcheck

GSLB는 등록된 호스트들에 대해서 주기적으로 health check를 수행한다. 호스트가 실패할 경우 DNS 응답에서 해당 호스트를 제거한다. 실패한 호스트로의 접근을 막기 때문에 서버의 가용성을 높일 수 있다.

GSLB는 Health check 로직을 가지고 있다. 등록된 서버 1.1.1.1과 2.2.2.2를 주기적으로 모니터링 하면서 상태를 확인한다.

TTL

DNS에서 권한을(authoritative) 가진 네임서버는 특정 레코드에 대해서 TTL을 설정할 수 있다. 캐시 네임서버는 TTL시간동안 캐시에 저장해둔다. 클라이언트로 부터 요청이 오면, 캐시에 저장된 걸 반환한다.

만약 TTL 값이 지나치게 길다면, GSLB의 상태정보가 제때 동기화 되지 않을 거다. 반대로 TTL 값이 지나치게 짧으면, 네임서버에 가해지는 부담이 커진다. GSLB와 같이 주소 변경에 민감한 서비스라면 부하를 감수하고라도 TTL 값을 짧게 가져가야 한다.

네트워크 거리 & 지역

주기적으로 성능을 측정하고 그 결과를 저장한다. DNS 질의가 오면, 지리적으로 가까운 서버를 반환하거나 네트워크 거리가 가까운 서버를 반환한다. 지리적으로 가까운 서버의 경우 RTT(Round Trip Time)도 짧기 때문에, 동일한 결과를 반환하는 경우가 많다.

상세 작동 프로세스

DNS의 프로세스는 아래와 같다.

GSLB는 Local name server와 Second Level name server 사이에 위치한다.

참고