DNS란
Domain Name System


www.xxx.com 과 같이 사람이 읽을 수 있는 이름을
192.0.0.1 과 같은 숫자 IP주소로 변환하여
컴퓨터가 서로 통신할 수 있도록 도와주는 서버

 

  • DNS 시스템은 이름을 숫자로 매핑하여 전화번호 부와 같은 역할을 한다.
  • DNS 서버는 이름에 대한 요청을 IP 주소로 변환하여, 최종 사용자가 도메인 이름을 웹 브라우저에 입력할 때 해당 사용자를 어떤 서버에 연결할 것인지 제어한다. --> 이 요청을 쿼리라고 한다.

DNS

1. DNS Query
    DNS 서버에서 domain name을 이용하여 IP를 받아온다
2. IP Communication
    IP를 받아온 유저는 리퀘스트 메세지 발송을 통하여 정상적으로 네트워크 통신을 실시한다

 


 

DNS 동작원리

1. 사용자가 www.naver.com 을 브라우저에 입력한다.
2. Local DNS에게 IP 주소를 질의하여 캐시된 것에 없으면 다른 DNS 서버에 전달 (Root DNS)
3. ROOT 로 부터 com 도메인을 관리하는 TLD이름 서버 정보 전달 받는다.
4. COM DNS로 질의 한다.
5. naver.com DNS 정보를 전달 받는다.
6. www.naver.com 호스트네임에 대한 IP 주소를 질의 한다.
7. IP 정보를 전달받는다.
8. Local DNS는 www.nvaer.com에 대한 IP 주소를 캐싱을 하고 IP 주소 정보를 전달한다.

※ ROOT -> COM -> xxx.com 서버를 차례대로 질의해서 답을 찾는 과정을 Recursive Query라고 한다.

 

 


DNS Round Robin

round robin이란 DNS 서버 구성 방식 중 하나다.
Domain에 대한 IP요청 

 

원리

  • 웹 서비스를 담당할 여러 대의 웹 서버는 자신의 공인 IP를 각각 가지고 있다.
  • 사이트 접속을 위해 사용자가 해당 도메인 주소를 브라우저에 입력하면 DNS는 도메인의 정보를 조회하는데 이떄 IP주소를 여러 대의 서버 IP리스트 중에서 라운드 로빈 형태로 랜덤하게 하나 혹은 여러개를 선택하여 사용자에게 알려준다.
  • 결과적으로 웹 사이트에 접속하는 다수의 사용자는 실제로는 복수의 웹 서버에 나뉘어 접속하도 되면서 자연스럽게 서버의 부하가 분산되는 방식이다.
라운드 로빈 DNS는 여러개의 IP주소를 결과로 돌려준다.

사용자의 OS 애플리케이션에 따라 동작이 다르다.
여러개의 IP 중 제일먼저 조회된 IP를 선택, 무작위로 IP를 선택한다.
또는 선택 IP 접속이 안되면 그다음 조회된 IP접속하도록 호직을 추가할 수 있다.
  •  

 

 

단점

1. 서버의 수 만큼 공인 IP 주소가 필요합니다.
부하 분산을 위해 서버의 대수를 늘리기 위해서는 그 만큼의 공인 IP 가 필요합니다.

2. 균등하게 분산되지 않습니다.
모바일 사이트 등에서 문제가 될 수 있는데, 스마트폰의 접속은 캐리어 게이트웨이 라고 하는 프록시 서버를 경유 합니다.
프록시 서버에서는 이름변환 결과가 일정 시간 동안 캐싱되므로 같은 프록시 서버를 경유 하는 접속은 항상 같은 서버로 접속됩니다.
또한 PC 용 웹 브라우저도 DNS 질의 결과를 캐싱하기 때문에 균등하게 부하분산 되지 않습니다.
DNS 레코드의 TTL 값을 짧게 설정함으로써 어느 정도 해소가 되지만, TTL 에 따라 캐시를 해제하는 것은 아니므로 반드시 주의가 필요하다.

3. 서버가 다운되도 확인이 불가능합니다.
DNS 서버는 웹 서버의 부하나 접속 수 등의 상황에 따라 질의결과를 제어할 수 없다.
웹 서버의 부하가 높아서 응답이 느려지거나 접속수가 꽉 차서 접속을 처리할 수 없는 상황인 지를 전혀 감지할 수가 없기 때문에 어떤 원인으로 다운되더라도 이를 검출하지 못하고 유저들에게 제공됩니다.
이때문에 유저들은 간혹 다운된 서버로 연결이 되기도 하죠.
DNS 라운드 로빈은 어디까지나 부하분산 을 위한 방법이지 다중화 방법은 아니므로 다른 S/W 와 조합해서 관리할 필요가 있다.

 

 

해결법

다중화 구성 방식 (Synchronous Time-Division Multiplexing)
AP 서버에 VIP(Virtual IP)를 부여해서 다중화를 구성한다. 각 AP 서버를 Health Check후 이상이 감지되면 VIP를 정상 AP 서버로 인계하는 방식을 사용한다.
즉 DNS Server Table 에 실시간으로 AP 서버의 상태를 확인할 수 있는 칼럼 및 함수를 추가하여 요청될 경우 서버 상태를 확인하여 우회루트를 제공하거나 에러를 전송하는 방식을 말합니다.

가중치 편성 방식 (Weighted round robin)
각각의 웹 서버에 가중치를 가미해서 분산 비율을 변경한다. 물론 가중치가 큰 서버일수록 빈번하게 선택되므로 처리능력이 높은 서버는 가중치를 높게 설정하는 것이 좋다.


또 다른 방법으로는 로드 밸런서의 도입을 통하여 다음과 같은 구성도 가능

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


Reference.

link1 link2

+ Recent posts