본문 바로가기
Linux/운영

GSLB (Global Server Load Balancing) 란?

by A6K 2024. 3. 8.

IDC를 넘나드는 이중화 서비스를 구현할 때 GSLB라는 단어를 접하게 된다. GSLB란 무엇이고 일반 DNS와 어떤 점이 다른지 알아보자.

GSLB (Global Server Load Balancing)

GSLB는 Global Server Load Balancing의 약자이다. 이름에 로드 밸런싱이 들어가 있어서 로드 밸런스의 발전된 형태로 생각할 수도 있지만 사실 GSLB는 DNS의 발전된 형태다. GSLB를 지능적 DNS라고 부르기도 한다.

GSLB는 다양한 기능을 통해 다음을 제공한다.

  • 재해 복구(Disaster Recovery)
  • 부하 분산(Load Balancing)
  • 저지연 (Low Latency)

 

DNS를 이용한 로드밸런싱

DNS는 도메인 이름을 IP 주소로 변환해주는 서비스다. 글로벌 로드밸런싱을 구현하는 가장 간단한 방법은 DNS 레코드에 서비스 가능한 모든 서버를 등록하는 것이다. 

예를 들어, www.plusblog.co.kr  이라는 도메인에 0.0.0.1 이라는 주소와 0.0.0.2 라는 주소를 매핑 시켜놓을 수 있다. 네임서버는 사용자의 요청에 따라 라운드로빈으로 IP 주소를 리턴한다. 고성능 서버가 있다면 그 서버의 주소를 2번 이상 등록할 수도 있다. 그렇게 되면 라운드로빈에 의해 고성능 서버의 주소가 리턴되는 비율이 올라가게 된다.

가장 기초적인 방법으로 로드밸런싱과 고가용성을 확보할 수 있다.

DNS를 이용한 로드밸런싱은 단순히 IP 주소를 번갈아가면서 리턴한다. 만약 IP 주소에 해당하는 서버가 다운되어 있다면 이 서버의 IP 주소를 넘겨받은 클라이언트는 "서버를 찾을 수 없습니다" 같은 메시지를 띄우게 될 것이다.

DNS를 이용한 방법은 로드밸런싱도 부정확하다. 사용자는 www.plusblog.co.kr  도메인에 대한 질의를 ISP가 운영하는 캐싱 네임서버에 질의하고, 캐싱 네임서버가 도메인을 관장하는 네임서버로 질의를 한다. 이 때, 캐싱네임 서버의 캐싱 주기에 따라 순서대로 IP 주소를 캐싱한다. 이 때, 클라이언트는 네임 서버에 있는 IP 주소를 번갈아가면서 받기보다는 ISP의 캐싱 네임서버에 캐싱되어 있는 주소를 동일하게 받는다. 따라서 라운드로빈에 의한 부하 N빵은 제대로 동작하지 않을 수 있다.

GSLB를 이용한 로드밸런싱

GSLB는 이런 DNS의 단점을 극복한 지능적 DNS다. GSLB도 하나의 도메인에 여러 IP를 등록해서 사용할 수 있다. 하지만 일반 DNS와 다르게 여러 추가적인 기술들이 적용되어있다.

우선 등록된 호스트에 대한 주기적인 Health Check가 수행된다. 만약 서버가 다운되면 DNS 응답에서 해당 호스트를 제거한다. 따라서 클라이언트는 다운된 서버로 연결되지 않고 살아있는 서버로 연결된다.

GLSB는 네트워크 성능도 고려한다. www.plusblog.co.kr  도메인을 서비스하는 서버가 미국과 한국에 위치한다고 하자. GLSB는 미국과 한국 서버의 주소를 등록하고 리턴할 것이다. 

이 때, GLSB는 클라이언트와 지리적으로 가까운 서버를 반환하거나 네트워크 거리가 가까운 서버를 반환한다. 즉, 미국에서 접속하는 클라이언트는 미국 주소를 리턴하고, 한국에서 접속하는 클라이언트는 한국 서버를 리턴해준다.

마지막으로 DNS에서 권한을 가진 네임서버는 특정 레코드에 대해 TTL(Time To Live)을 설정할 수 있다. 캐시 네임서버는 TTL 시간동안 레코드를 캐싱하고 있다가 클라이언트로부터 요청이 오면 캐시에 저장된 레코드 정보를 리턴한다.

TTL 시간을 지나치게 크게 설정한다면 GSLB의 값이 캐싱 네임서버에 제대로 동기화되지 않는다. 반대로 TTL 시간이 지나치게 짧다면 캐싱 네임서버의 효과가 줄어들어 원래 네임서버로 요청이 지나치게 많이 오게 된다.

댓글