2020. 4. 7. 11:55ㆍ인프라/네트워크(기초)
오늘 살펴볼 내용은 GSLB(Global Server Load Balancing)이다. 간단하게 GSLB가 뭔지, 일반 DNS서비스와 어떠한 점이 다른지 등을 살펴보자
GSLB(Global Server Load Balancing
이름만 보면 얼핏 업그레이드된 로드 밸런싱 형태라고 생각할 수 있지만, 이름과는 다르게 DNS 서비스의 발전된 형태이다.(물론 LB 역할을 하긴 하지만 근본적으론 DNS형태라 보면 좋을 것 같다.)
DNS는 도메인 주소와 IP를 매핑하여 도메인으로 요청이 들어왔을 때 타켓의 주소로 변환해 주는 서비스이다. 하나의 도메인 주소에 대해서 여러 개의 IP주소를 넘겨 줄 수 있는데, 이 기능을 이용해서 가용성 구성과 로드 밸랜싱 기능을 수행하기도 한다. DNS 뒤에 여러 IP를 붙여 고가용성과 로드 밸런싱 역할을 할 수 있긴 하겠지만 근본적으로는 한계가 있다.
그 이유는 DNS의 로드 밸런싱은 IP 목록중 하나를 반환할 뿐(라운드로빈?) 네트워크 지연, 성능, 트래픽 유입, 서비스 실패 등은 전혀 고려하지 않는다.
이러한 문제를 해결하기 위해 나온 것이 GSLB이다.
GSLB & DNS 동작방식 차이
1. 재해복구
<DNS>
DNS는 서버의 상태를 알 수 없기 때문에 서버시를 실패하는 유저들이 다수 존재한다.
<GSLB>
GSLB는 서버의 상태를 모니터링 하기 때문에 실패한 서버의 IP는 응답(Converting Domain to IP response) 에서 제외하므로, 유저는 서비스를 계속해서 이용할 수 있다. 물론 어떠한 상황이냐에 따라 응답에 실패하는 경우가 존재할 것이다.
2.로드밸런싱
<DNS>
위에서 간단히 설명한 것과 같이 DNS는 Round Robin 방식으로 로드밸런싱한다. 즉, 정교한 로드밸런싱이 불가능하다. 작은 서비스는 크게 문제 없겠지만 트래픽이 아주 높은 서비스 같은 경우는 정교한 로드 밸런싱이 필요하다.
<GSLB>
GSLB는 서버의 로드(상태)를 모니터링하기 때문에 트래픽이 몰리지 않은 서버의 IP를 반환해주기 때문에 DNS보다 정교한 로드밸런싱이 가능하다.
3.레이턴시 기반
<DNS>
DNS는 Round Robin 방식을 사용하기 때문에 유저는 자신이 위치한 곳과 아주 먼곳에 떨어진 서버로 연결이 될 수도 있다.(물론 글로벌하지 않은 서버는 서버가 모여있기는 하지만..뭐)
<GSLB>
GSLB는 각 지역별로 서버에 대한 레이턴시(latency) 정보를 가지고 있기 때문에 해당 유저로부터 레이턴시가 적은 서버의 IP를 반환해준다.
4.위치 기반
<DNS>
DNS는 Round Robin 방식으로 서버에 연결된다.
<GSLB>
GSLB는 유저의 지역정보를 기반해서 가까운 지역의 서버로 연결 하게 한다.
GSLB의 주요 기능
1. Healthcheck
GSLB는 등록된 호스트들에 대해서 주기적으로 Health check 요청을 보내기 때문에, Health check가 실패한 서버는 DNS 응답에서 해당 서버를 제외한다. 실패한 서버에 대한 접근을 사전 차단하기 때문에 사전에 장애 방지가 가능하고, 사용자로 하여금 서비스 실패 확률을 낮춰준다.
2. 네트워크 거리 & 지역
주기적으로 성능을 측정하고 그 결과를 저장하기 때문에 DNS 요청이 오면 지리적으로 가까운 서버를 반환하거나 네트워크 거리가 가까운 서버를 반환한다. 지리적으로 가까운 서버의 경우 RTT(Round Trip Time)도 짧기 때문에, 동일한 결과를 반환하는 경우가 많다.
3.상세 작동 프로세스
<DNS>
<GSLB>
작동 방식은 세부적으로 살펴보면 많은 점이 다를 수 있겠지만 크게 IP를 선택하는데 있어서 GSLB Policy에 따라 어떤 IP를 반환할지 결정하는 부분이 존재하는 것이다. 위와 같이 위치기반, 레이턴시 기반 등의 정책을 거쳐 선택이 될 수도 있고 혹은 Admin이 설정한 정책에 따라 선택이 될수도 있다.
서비스 로직
- 사용자가 www.example.com에 접속하기 위해 Local DNS 서버로 DNS Query를 보내고, Local DNS 서버는 Root DNS, .com DNS 서버를 거쳐
- GSLB로 www.example.com에 대한 DNS Query를 보냅니다.
- GSLB는 DNS Proxy로 동작하며, 따라서 이 DNS Query를 그대로 example.com DNS 서버로 전달합니다.
- example.com DNS 서버는 www.example.com에 대한 IP 주소(SLB의 Virtual IP) 1.1.1.1과 2.2.2.2가 미리 등록되어 있어 그 값을 GSLB로 전달해 줍니다. 전달 시 TTL은 300초라고 가정하겠습니다.
- GSLB는 나름의 정책(뒤에서 설명)을 통해 1.1.1.1과 2.2.2.2 중에 사용자를 위한 최적의 사이트를 결정하고 또한 TTL을 작은 값으로 변경(예. 10초)합니다. TTL 값 변경은 Local DNS 서버가 바인딩 정보(www.example.com에 대한 IP 주소)를 최소 시간 동안만 캐싱하게 하기 위함입니다.
- GSLB의 정책(GSLB Policy)을 통해 결정된 웹서버 IP 1.1.1.1(혹은 IP 주소 리스트의 순서를 바꿔 1.1.1.1, 2.2.2.2로)과 변경된 TTL 값이 Local DNS로 전달되고,
- Local DNS는 사용자 단말에게 그 값을 전달합니다.
- 이제 사용자는 www.example.com의 IP 주소 1.1.1.1을 목적지로 하여 한국 사이트 SLB1으로 HTTP GET을 보내고, SLB1은 다시 나름의 정책(서버 Health/Load 등 고려)을 적용하여 최종 서버인 10.1.1.10으로 HTTP GET 메시지를 전달합니다.
GSLB Policy
여기까지 간단하게 GSLB에 대해 다루어보았다.
<참고>
'인프라 > 네트워크(기초)' 카테고리의 다른 글
네트워크(DNS) - A record와 CNAME의 차이점!(DNS Record Type) (0) | 2020.04.22 |
---|---|
Network - Proxy(프록시)와 Gateway(게이트웨이)란? 이 둘의 차이점은? (0) | 2020.04.12 |
OS - ssh 비밀번호 없이 접속하기 (0) | 2019.08.04 |
네트워크 - HTTP/HTTPS 차이점, HTTPS란? (0) | 2019.08.01 |
네트워크 - Wireshark(와이어샤크) 설치 및 패킷 분석 예제 (0) | 2019.08.01 |