SY 개발일지
article thumbnail
Published 2024. 5. 21. 17:52
[CS] GSLB란? CS 정리/개발 상식

네이버나 구글 정도의 사이트들은 단순히 DNS를 이용해서만 IP 주소를 제공하지 않고, GSLB를 통해 IP 를 사용자에게 제공합니다. 그렇다면 GSLB는 무엇일까요 ?

 

GSLB의 개념

Global Server Load Balancing의 약자로 로드 밸런스의 발전된 형태로 생각할수도 있지만, 이름과는 달리 DNS 서버의 발전된 형태입니다. 지능적 DNS 서비스라고도 불립니다.

 

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

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

 

이러한 한계에도 불구하고 인터넷 영역에서 로드 밸런싱을 할 수 있다는 장점이 있습니다. 넓은 영역에서 로드밸런싱 및 가용성 구성을 위해서 몇 가지 문제를 해결해야 했는데, 이 문제를 해결한 것이 GSLB 입니다.

https://www.samsungsds.com/kr/network-gslb/gslb.html

 

GSLB vs DNS 작동 방식 비교

1. 재해 복구

DNS는 서버의 상태를 알 수 없습니다. 따라서 서비스를 실패하는 유저가 생길 수 있습니다.

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

 

2. 로드 밸런싱

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

 

3. 레이턴시 기반 서비스

DNS는 Round Robin 방식을 사용합니다. 따라서 유저는 네트워크 상에서 멀리 떨어진 위치의 서버로 연결할 수도 있습니다.

GSLB는 각 지역별로 서버에 대한 레이턴시(latency) 정볼르 가지고 있습니다. 유저가 접근을 하면, 유저의 지역으로부터 가까운(더 작은 레이턴시를 가지는) 서버로 연결합니다.

레이턴시(latency) 란?

레이턴시란 대기 시간으로서, 하나의 패킷이 출발지에서 도착지까지 가는 데에 걸리는 시간을 말합니다. 

 

4. 위치 기반 서비스

DNS에서 유저는 Round Robin 하게 서버로 연결됩니다.

GSLB는 유저의 지역 정보를 기반으로, 해당 지역을 서비스하는 서버로 연결할 수 있습니다.

 

GSLB의 주요 기술

1. Healthcheck

GSLB는 등록된 호스트들에 대해서 주기적으로 health check를 수행합니다.

만일 호스트가 실패할 경우 DNS 응답에서 해당 호스트를 제거합니다. 실패한 호스트로의 접근을 막기 때문에 서버의 가용성을 높일 수 있습니다.

2. 네트워크 거리&지역

주기적으로 성능을 측정하고 그 결과를 저장합니다. DNS 질의가 오면 지리적으로 가까운 서버를 반환하거나 네트워크 거리가 가까운 서버를 반환합니다.

지리적으로 가까운 서버의 경우 RTT(Round Trip Time)도 짧기 때문에 동일한 결과를 반환하는 경우가 많습니다.

 

상세 작동 프로세스

DNS

GSLB

GSLB는 Local name server와 Second Level name server 사이에 위치하여 있습니다.

작동 방식은 세부적으로 살펴보면 많은 점이 다를 수 있겠지만 크게 IP를 선택하는데 있어서 GSLB Policy에 따라 어떤 IP를 반환할지 결정하는 부분이 존재합니다. 위와 같이 위치기반, 레이턴시 기반 등의 정책을 거쳐 선택이 될 수도 있고 혹은 Admin이 설정한 정책에 따라 선택이 될 수도 있습니다.

 

서비스 로직

  1. 사용자가 www.example.com에 접속하기 위해 Local DNS 서버로 DNS Query를 보내고, Local DNS 서버는 Root DNS, .com DNS 서버를 거쳐
  2. GSLB로 www.example.com에 대한 DNS Query를 보냅니다.
  3. GSLB는 DNS Proxy로 동작하며, 따라서 이 DNS Query를 그대로 example.com DNS 서버로 전달합니다.
  4. example.com DNS 서버는 www.example.com에 대한 IP 주소(SLB의 Virtual IP) 1.1.1.1과 2.2.2.2가 미리 등록되어 있어 그 값을 GSLB로 전달해 줍니다. 전달 시 TTL은 300초라고 가정하겠습니다.
  5. GSLB는 정책을 통해 1.1.1.1과 2.2.2.2 중에 사용자를 위한 최적의 사이트를 결정하고 또한 TTL을 작은 값으로 변경(예. 10초)합니다. TTL 값 변경은 Local DNS 서버가 바인딩 정보(www.example.com에 대한 IP 주소)를 최소 시간 동안만 캐싱하게 하기 위함입니다. 
  6. GSLB의 정책(GSLB Policy)을 통해 결정된 웹서버 IP 1.1.1.1(혹은 IP 주소 리스트의 순서를 바꿔 1.1.1.1, 2.2.2.2로)과 변경된 TTL 값이 Local DNS로 전달되고,
  7. Local DNS는 사용자 단말에게 그 값을 전달합니다.
  8. 이제 사용자는 www.example.com의 IP 주소 1.1.1.1을 목적지로 하여 한국 사이트 SLB1으로 HTTP GET을 보내고, SLB1은 다시 나름의 정책(서버 Health/Load 등 고려)을 적용하여 최종 서버인 10.1.1.10으로 HTTP GET 메시지를 전달합니다

 

참고

https://www.joinc.co.kr/w/man/12/GSLB

https://coding-start.tistory.com/339

 

profile

SY 개발일지

@SY 키키

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!