기존의 DNS는 로드밸런싱을 지원하지만 해당 서버의 상태를 확인하지 못해 안정적인 서비스 지원이 불가능하다는 단점이 있었습니다. 이런 단점을 해결하는 방식으로 해당 서버에 대한 헬스체크와 별도의 분산 알고리즘을 제공하는 GSLB에 대해서 알아보겠습니다.
DNS 로드밸런싱: 하나의 도메인 주소해 IP 주소를 여러개 할당해 도메인 질의에 따라 IP 주소를 나누는 방법
DNS는 설정된 서비스의 상태의 정상 여부를 확인하지 않고 모든 질의에 무조건 응답
→ 각 레코드에 대한 서비스 체크가 일어나지 않고 설정된 값에 따라 동작
→ 서비스 가용성 향상 방법으로는 적절하지 않다.
도메인 질의에 응답하는 역할 + 도메인에 대한 서비스가 정상인지 상태를 체크해 정상인 레코드에 대해서만 사용
= 인텔리전스 DNS
⇒ GSLB는 단순히 IP 주소만 응답하는 것이 아니라 해당 서버가 정상적인지 헬스체크와 사전 정의된 알고리즘으로 응답 서버를 진행하는 부하 분산 방법이 존재한다.
GSLB의 도메인 구성 방식은 전체를 위임할 것이냐, 일부를 위임할 것이냐에 따라 크게 2가지로 나뉩니다.
도메인 자체를 GSLB로 위임하는 경우 해당 도메인의 네임서버를 조회했을때 다음과 같이 표시됩니다.
Name Servce : NS11.DNSTOOL.NET
Name Servce : NS12.DNSTOOL.NET
Name Servce : NS13.DNSTOOL.NET
여기서 DNSTOOL.NET이 GSLB로 설정되었음을 알려줍니다.
도메인 자체를 GLSB로 사용하는 것은 도메인에 대한 네임서버를 GSLB로 설정하고 GSLB에서 도메인에 대한 모든 레코드를 등록해 처리하는 방식입니다.
그렇다면 이렇게 도메인 전체를 GSLB로 설정한다면 무엇이 문제가 될까요?
바로 굳이 헬스체크나, 부하 분산 알고리즘이 필요하지 않더라도 GSLB에 요청 하는 상황이 되기 때문에 GSLB에 부하를 주게 된다
는 점입니다.
보통은 도메인의 레코드 중 특정 레코드에 대해서만 GSLB로 처리를 이관하는 형식을 사용합니다.
GSLB로 처리를 이관하는 방식은 크게 2가지로 나뉩니다.
별칭을 사용해 GSLB를 사용하는 방법은 실제 도메인과 다른 별도의 도메인 레코드로 GSLB에 등록됩니다.
CNAME이란
CNAME 레코드는 도메인의 별칭 역할을 수행
www.naver.com에 www.naver.gslb.com을 별칭으로 설정하면 www.naver.gslb.com으로도 www.naver.com에 접속이 가능합니다.
1. 사용자가 www.naver.com을 LDNS에 질의
2. LDNS는 www.naver.com의 NS를 찾기위해 root ~ TLD를 찾기 시작
3. www.naver.com을 관리하는 DNS에 질의
4. DNS는 GSLB가 www.naver.com을 관리한다고 응답
5. LDNS는 GSLB에 다시 www.naver.com을 질의
6. GSLB에서 해당 도메인 서버의 IP를 응답
7. LDNS → 사용자 해당 IP 주소 응답
ex) web.naver.com을 GSLB에 위임 → shopping.web.naver.com, portal.web.naver.com 등등등
GSLB는 정상적인 서버인지 확인하는 헬스체크 외에 추가로 부하를 분산시키기 위한 여러가지 알고리즘을 제공합니다.
그 중 가장 대표적인 두가지 헬스 체크 모니터링 방식을 알아보죠.
서비스 요청에 대한 응답이 얼마나 빠른지, 지연이 얼마나 없는지를 확인하고 서비스 분산에 이용합니다.
서비스 제공이 가능한 각 사이트의 IP 주소에 대한 Geo 값을 확인해 가까운 사이트로 서비스 분산시킵니다.
결국 GSLB의 분산 방식은 사용 가능한 사이트인지
와 더 신속한 응답이 가능한지
를 확인하는 것을 궁극적 목표로 설정했다는 것을 확인할 수 있습니다.