GSLB란?
GSLB ( Global Server Load Balancing ) 의 약어로 이용 목적은 이름과 달리 일반적인 로드벨런싱과 다소 차이가 있다.
GSLB는 전통적인 DNS 와 같이 동작하며 추가적으로 Health Check 와 active / backup 을 지정 가능하게 하여 재해 복구 (DR), 지역적인 부하분산, 응답 시간 중심의 서비스를 제공 가능하게 설정할 수 있다.
GSLB를 알아보기 전에 DNS 와 DDNS에 대해서 알아보자.
그 이유는 GSLB는 DNS 기반의 로드벨런싱 서비스이기 때문이다.
DNS란?
- Domain Name System 의 약자로 분산 네이밍 시스템이다.
- DNS는 도메인 주소와 IP 를 매핑하여 도메인으로 요청이 들어왔을 때 타켓의 주소로 변환해주는 서비스이다.
- 인터넷에 존재하는 수많은 네임서버는 각각 도메인 계층 상의 일부분을 관리하고, 정보를 요구하는 클라이언트이다.
DNS에 대해 잘 설명하고 있는 영상이 있어서 첨부해본다.
https://www.youtube.com/watch?v=2ZUxoi7YNgs&t=135s
DDNS란?
- Dynamic DNS으로 실시간으로 DNS를 갱신하며 동적 DNS라고도 불린다.
- DDNS를 사용한다면 IP 주소가 변경되더라도 DNS에 IP를 바뀐 주소로 갱신해주어 IP 가 변경되더라도 문제없이 사용이 가능하다.
GSLB 는 이름만 보면 로드벨런싱의 형태라고 생각할 수 있지만, 이름과는 달리 DNS 서비스의 발전된 형태이다.
( 물론 LB의 역할을 하기는 하지만 근본적으로는 DNS 형태라고 보는게 맞는 것 같다. )
하나의 도메인 주소에 대해서 여러개의 IP 주소를 넘겨줄 수 있는데, 이 기능을 이용해서 가용성 있는 구성과 로드벨런싱 기능을 수행하기도 한다. DNS 뒤에 여러개의 IP 를 붙여서 고가용성과 로드벨런싱 역할을 할 수 있기는 하겠지만 근본적으로 한계가 있다.
그 이유는 DNS의 로드벨런싱은 IP 목록 중 하나를 반환할 뿐 네트워크 지연이나 성능에 따른 로드 벨런싱, 서비스 실패에 대한 헬스체크 등은 전혀 고려하지 않는다. 이러한 문제를 해결하기 위해서 나온 것이 바로 GSLB
GSLB
- GSLB는 DNS를 동적으로 만들고 IP 주소와 관련된 응용 프로그램 및 컨텐츠 상태와 특성을 이해하도록 설계되었다.
- SLB가 실제 서버의 상태 점검과 모니터링을 수행하는 것과 마찬가지로 GSLB 시스템은 IP 주소 뒤에 있는 응용 프로그램과 컨텐츠의 가용성을 모니터링 할 수 있다.
- GSLB 가 Health Check 에 실패한 경우 해당 IP 주소가 DNS 응답 풀에서 제외된다.
- GSLB 는 지역별로 서버에 대한 Latency 정보를 가지고 있어서 사용자가 접근했을 때 사용자의 지역으로부터 Latency가 낮은 서버로 연결하게 된다.
- 장애 없이 정상적인 경우 지리적으로 가까울수록 Latency 값이 낮다. (= 가까운 곳으로 보내줌)
- 서버의 상태 체크를 하지 못하는 DNS와는 달리 장애가 발생하거나 부하가 발생할 시 서버의 트래픽을 분석하고 근접한 정상 서버로 분산을 할 수 있다.
GSLB 이해하기.
- GSLB는 IP 주소와 PORT를 기반으로 트래픽을 분산시키는 로드벨런서와는 다른 형태로 동작한다.
- GSLB는 전통적인 DNS 서비스가 발전된 형태로, 기존의 DNS가 Back-end 서버의 상태와 상관없이 요청에 대한 IP 값을 제공하는 반면 서버의 상태 정보를 확인한 후에 IP를 제공한다.
- 이러한 장점을 통해 지역별 트래픽 기반의 부하 분산, DR(Disaster Recovery) 구축, 클라우드 서비스를 기존 고객 보유 시스템의 백업센터로 이용하는 등 다양한 응용 구성이 가능하다.
- 주요기능
- Health Check : 등록된 호스트들에 대해서 주기적으로 Health Check 요청을 보내기 때문에, Health Check 가 실패한 서버는 DNS 응답에서 해당 서버를 제외한다. 실패한 서버에 대한 접근을 사전 차단하기 떄문에 사전에 장애 방지가 가능하고, 사용자로 하여금 서비스 실패 확률을 낮춰준다.
- 네트워크 거리와 지역의 거리 : 주기적으로 성능을 측정하고 저장하는 기능이 있기 때문에 DNS 요청이 오면 지리적으로 가까운 서버를 반환하거나 네트워크 거리가 가까운 서버를 반환한다. 지리적으로 가까운 서버의 경우 RTT (Round Trip Time ) 도 짧기 때문에, 동일한 결과를 반환하는 경우가 많다.
재해복구 (Disaster Recovery) 에 있어서 DNS / GSLB의 차이
- DNS 는 Health Check 가 되지 않아 서버 장애가 발생해도 장애 서버로 연결 요청을 하지만 GSLB 는 주기적인 Health Check를 통해 장애 서버가 체크되면 장애 서버로 연결되지 않도록 도와주고 있다.
- DNS가 Round Robin 방식의 로드벨런싱을 사용하고 있었다면, 50%의 사용자들은 장애 서버로 연결되기에 50% 사용자들은 서비스 이용이 불가능하다.
<DNS>
서버 상태를 체크하지 못하기 때문에 그냥 보냄. = 장애체크 불가능
<GSLB>
GSLB는 서버의 상태를 모니터링 하기 때문에 실패한 서버의 IP는 응답에서 제외해버림. = 장애체크 가능
사이트 부하 분산 ( Site Load Balancing ) 에 있어서 DNS / GSLB 의 차이
- DNS는 Round Robin 방식으로 로드벨런싱한다. 즉 정교한 로드벨런싱이 불가능하다.
- DNS는 Health Check 할 수 없어 서버가 오버로드 상태가 되어도 사용자들은 과부하 서버로 연결을 요청한다.
- 반면 GSLB는 SLB의 부하 상태를 주기적으로 체크하여 오버로드 상태의 서버로 연결되지 않도록 도와준다.
<DNS>
<GSLB>
GSLB는 DNS 보다 정교한 로드벨런싱이 가능하다.
네트워크 근접성 (Network Proximity)에 있어서 DNS / GSLB의 차이
- DNS는 클라이언트 서버 사이 Network 구간의 Round Trip Time 을 측정하지 않는다.
- GSLB는 클라이언트와 서버 사이 Round Trip Time 을 측정하여 클라이언트가 보다 응답이 빠른 서버로 연결되도록 도와준다.
(정확히는 Local DNS 서버와 SLB 사이 Round Trip Time(왕복 지연시간 ; RTT) 을 측정한다고 함)
<DNS>
DNS 는 Round Robin 방식을 사용하기 떄문에 유저는 자신이 위치한 곳과 아주 먼 곳에 떨어진 서버로 연결이 될 수도 있다.
<GSLB>
GSLB는 각 지역별로 서버에 대한 Latency (지연시간) 정보를 가지고 있기 때문에 해당 유저로부터 지연시간이 적은 서버의 IP를 반환해준다.
지리적 근접성 ( Geographic Proximity ) 에 있어서 DNS / GSLB의 Geographic Proximity 의 차이
- DNS가 Round Robin 방식을 사용하고 있다면 사용자는 지리적 위치를 고려하지 않고 해외 서버에 연결될 수 있는 확률을 가지게 된다.
- 반면 GSLB는 사용자의 지리적 위치를 고려한다. 그러므로 사용자는 지리적으로 가장 가까운 서버와 접속할 수 있다.
<DNS>
DNS는 Round Robin 방식으로 서버에 연결된다.
<GSLB>
GSLB는 유저의 지역정보를 기반해서 가까운 지역의 서버로 연결 하게 한다.
참고 출처
https://skstp35.tistory.com/294
https://www.joinc.co.kr/w/man/12/GSLB
https://coding-start.tistory.com/339