DNS의 흐름

nGyu·2022년 4월 13일
0

Network

목록 보기
5/9

DNS의 흐름에 대해서 알기 전, DNS가 무엇일까?
DNS란, 도메인 주소를 IP주소로 변환하는 역할을 하는 서버이다.

그런데 위에 말한 도메인 → IP 이렇게 변환하는 작업이 어떤 흐름으로 진행이 될까?

DNS Round Robin 방식

Round Robin은 DNS Server의 구성 방식 중 하나이다.

Domain에 대한 IP 요청 쿼리 시 RR(RoundRobin) 방식으로 IP를 반환한다.

시분할 을위한 선점형 스케줄링 중 한 방법인 RR은 프로세스에 우선순위를 두지 않고 순서대로 시간단위로 CPU를 할당하는 방식의 스케줄링 알고리즘이다.

즉, DNS서버에 들어오는 IP변환 요청들은 우선순위를 두지않고, 시간단위로 응답을 해주는 방식이다.

이 방식으로 구성을 하면 자동적으로 시간에 따라 스케줄링이 변화되기 때문에 로드밸런서가 필요가 없다.

로드밸런서
한 서버에 여러 요청이 들어오면 부하가 생기기 때문에, 동일 기능을 하는 서버들중 여유로운 서버에 트래픽을 나누는것

DNS RR의 흐름

naver.com은 3개의 서버가 MSA 방식으로 묶여있다고 하자.

자, 그렇다면 어떤방식으로 흘러가게 될까?

Client 하나가 naver.com에 요청을 한다고 가정해보자.

1 - Client → DNS → 127.0.0.1 → 서버
2 - Client → DNS → 127.0.0.2 → 서버
3 - Client → DNS → 127.0.0.3 → 서버
4 - Client → DNS → 127.0.0.1 → 서버

이런 방식으로 한 클라이언트가 DNS Round Robin방식을 이용해서 요청당 같은기능을 하는 다른 서버에 요청이 보내지도록 하는 흐름이다.

DNS Round Robin 방식의 문제점

위에 흐름을 보았듯이 문제점이 많이 발생을 한다.

  1. 서버의 수 만큼 공인 IP주소가 필요하다
    1. DNS 서버에서 IP를 받기 때문이다.
    2. 만약, 우리가 실 사용하는 서비스의 서버들이 모두 Round Robin 방식이라면, 지금쯤 우리는 IpV6방식도 부족하리라 생각된다.
  2. 균등하게 분산되지 않는다
    1. 한 클라이언트의 요청 당 다음 서버에게 요청이 되어 분산이 되는것 처럼 보이지만, 다른 클라이언트 들이 동시에 요청을 보낼 때 균등하게 트래픽을 분산시킨다고 가정하기는 어렵다.
    2. 이는, 또 다르게 해석을 하면 3번 서버에 문제가 생겨도 DNS는 이를 모르기 때문에 그냥 3번 서버의IP를 알려준다.
  3. 서버가 다운되도 확인이 불가하다
    1. DNS 입장에서는 서버의 상태를 확인하지 않고 그냥 IP주소만 알려주는 역할을 하기 때문에, 장애 발생 시 대처하기가 힘들다.
  4. DNS결과를 Caching하기 때문에 균등한 분산이 어렵다

Weighted Round Robin (WRR)

가중치를 정해주는 RR방식으로, 서버별로 가중치를 정해주고 이 가중치에 다라 분산을 해주는 방식이다.

서버의 성능이 높을수록 가중치를 높게 설정해주면 좋다.

Least connection

서버에 접속한 클라이언트 수가 가장 적은 서버를 선택하여 알려주는 방식이다.
이는 로드밸런서에서 사용하는 방법인데, 로드밸런서는 서버당 connection의 수를 실시간으로 확인을 하여 트래픽이 낮은 서버를 판별해준다.

profile
지금보다 내일을, 모레를 준비하자

0개의 댓글