본문 바로가기
  • 저희는 평생 개발할 운명이걸랑요
Tech.log/네트워크

[DNS round robin 방식]

by SpaciousKitchen 2021. 5. 23.

DNS

DNS(Domain Name System)는 서버는 클라이언트가 요청한 도메인 주소에 대한 실제 IP 주소를 찾아주는 컴퓨터입니다.

 

 

클라이언트가 목적지 서버로 접속하는 과정

 

 

 

1.사용자가 웹 브라우저에 example.com을 입력하여 웹 페이지 탐색을 시도한다.
2.클라이언트 컴퓨터는 example.com에 대한 IP 주소를 찾기 위해 DNS 서버에 물어(질의, 쿼리, Query)본다
3..DNS 서버는 example.com에 대한 IP 주소를 찾고 이를 다시 클라이언트로 알려준다.
4.클라이언트는 example.com에 대한 IP 주소를 얻었으므로 해당 IP 주소로 연결을 시도한다.
5.클라이언트는 효율성을 위해 일정 기간동안 example.com에 대한 IP 주소를 로컬에 캐시해 놓는다.

 

DNS round robin

 

 

 

DNS에서 레코드 정보를 조회하는 시점에서 트래픽을 분산한다. 서버는 각각의 공인 IP를 가지고 있고 사용자가 도메인을 통해 접속하는 순간 DNS에서 레코드 조회시 반환하는 하나의 공인 IP로 접속하게 된다. 이러한 방식을 통해  각 서버에 부하가 분배된다.

 

라운드로빈 DNS를 통해 반환된 공인 IP 리스트를 처리하는 표준 절차가 정해져 있지 않기 때문에 일반적으로 DNS 쿼리 요청시 첫 번째로 도착한 주소로 연결을 시도하거나, 애플리케이션이 임의로 선택하는 경우도 존재하며, A 레코드간의 순환이 이루어질 수 있다. 하지만 클라이언트들이 어떤 서버를 사용할 것인지 결정하기 때문에 낮은 비용으로 여러 대의 서버로 트래픽을 분산할 수 있다는 장점이 있다.

 

 

DNS round robin의 문제점 

  1. 서버의 수 만큼 공인 IP 주소가 필요하다.  서버의 대수를 늘리기 위해서는 그 만큼의 공인 IP 가 필요하다.
  2. 프록시 서버에서는 이름변환 결과가 일정 시간 동안 캐싱되므로 같은 프록시 서버를 경유 하는 접속은 항상 같은 서버로 접속된다 따라서 균등하게 분산되지 않는다. 
  3. 버가 다운되도 확인이 불가 하다. 불가 DNS 서버는 웹 서버의 부하나 접속 수 등의 상황에 따라 질의결과를 제어할 수 없다. 웹 서버의 부하가 높아서 응답이 느려지거나 접속수가 꽉 차서 접속을 처리할 수 없는 상황인 지를 전혀 감지할 수가 없기 때문에 어떤 원인으로 다운되더라도 이를 검출하지 못하고 유저들에게 제공한다. 

 

 

해결책

Weighted round robin (WRR)

웹 서버에 가중치를 가미해서 분산 비율을 변경하는 방식이다.처리능력이 높은 서버는 가중치를 높게 설정하는 것이 좋다. 

 

Least connection

접속 클라이언트 수가 가장 적은 서버를 선택한다. 로드밸런서에서 실시간으로 connection 수를 관리하거나 각 서버에서 주기적으로 알려주는 것이 필요하다.

 

 

웹 통신의 흐름

Q. 사용자가 주소창에 특정 URL을 입력 했을 때 일어나는 결과는 ?

 

브라우저
  1. 입력된 값을 브라우저 내부에서 결정된 규칙에 따라 의미를 조사한다.
  2. 조사된 의미에 따라 HTTP Request 메시지를 만든다.
  3. 만들어진 메시지를 웹 서버로 전송한다.


    브라우저는 메시지를 네트워크에 송출하는 기능이 없으므로 OS에 의뢰하여 메시지를 전달한다.단, OS에 송신 요청할때는 
    도메인명이 아니라 ip주소로 메시지를 받을 상대를 지정이 필요한데 , 이 과정에서 DNS서버를 조회가 일어난다.

in 프로토콜 스택, LAN 어댑터

  1. 프로토콜 스택이 브라우저로부터 메시지를 받는다.
  2. 브라우저로부터 받은 메시지를 패킷 속에 저장한다.
  3. 그리고 수신처 주소 등의 제어정보를 덧붙인다.
  4. 그런 다음, 패킷을 LAN 어댑터에 넘긴다.
  5. LAN 어댑터는 패킷을 전기신호로 변환시킨다.
  6. 신호를 LAN 케이블에 송출시킨다.


in 허브, 스위치, 라우터

  1. LAN 어댑터가 송신한 패킷은 스위칭 허브를 경유하여 인터넷 접속용 라우터에 도착한다.
  2. 라우터는 패킷을 프로바이더(통신사)에게 전달한다.
  3. 인터넷으로 들어간다.


in 액세스 회선, 프로바이더
  1. 패킷은 인터넷의 입구에 있는 액세스 회선(통신 회선)에 의해 POP(Point Of Presence, 통신사용 라우터)까지 운반된다.
  2. POP 를 거쳐 인터넷의 핵심부로 들어가게 된다.
  3. 수 많은 고속 라우터들 사이로 패킷이 목적지를 향해 흘러가게 된다.

in 방화벽, 캐시서버
  1. 패킷은 인터넷 핵심부를 통과하여 웹 서버측의 LAN 에 도착한다.
  2. 기다리고 있던 방화벽이 도착한 패킷을 검사한다.
  3. 패킷이 웹 서버까지 가야하는지 가지 않아도 되는지를 판단하는 캐시서버가 존재한다.


 액세스한 페이지의 데이터가 캐시서버에 있으면 웹 서버에 의뢰하지 않고 바로 그 값을 읽을 수 있다. 페이지의 데이터 중에 다시 이용할 수 있는 것이 있으면 캐시 서버에 저장된다.


 

in 웹 서버

 

  1. 패킷이 물리적인 웹 서버에 도착하면 웹 서버의 프로토콜 스택은 패킷을 추출하여 메시지를 복원하고 웹 서버 애플리케이션에 넘긴다.
  2. 메시지를 받은 웹 서버 애플리케이션은 요청 메시지에 따른 데이터를 응답 메시지에 넣어 클라이언트로 회송되고 똑 같은 방식으로 클라이언트에세 전달된다.











 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'Tech.log > 네트워크' 카테고리의 다른 글

[라우팅을 통한 경로배정 체계과 인터네트워킹이란?]  (0) 2021.05.30
[쿠키(Cookie)와 세션(Session)]  (0) 2021.05.24
[GET VS POST]  (0) 2021.05.21
[CORS란]  (0) 2021.05.20
[HTTP 요청/응답 헤더]  (0) 2021.05.17

댓글