개념
* DNS(Domain Name System, 도메인 네임 시스템)
- DNS는 네트워크 상에서 컴퓨터를 식별하는 호스트고 이를 IP주소로 변경가능하다.
- Internet Protocol Layer - Application layer Protocol 이다.
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라고 한다.
Round Robin DNS 는
별도의 소프트웨어 혹은 하드웨어 로드밸런싱 장비를 사용하지 않고,
DNS만을 이용해 도메인 레코드 정보를 조회하는 시점에서 트래픽을 분산하는 기법.
웹 뿐 아니라, 도메인 사용하는 모든 서비스( FTP, SMTP, TURN 등)에서 사용가능.
* 로드밸런싱 : 서버에 가해지는 부하(=로드)를 분산, 트래픽을 분산시켜주는 컴퓨터 네트워크의 기법, 컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋 이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미한다.
- Scale-out방식은 기존의 서버와 동일하거나 낮은 성능의 서버를 두대 이상 증설하여 운영하는 것이 때문에 여러 대의 서버로 트래픽을 균등하게 분산해주는 로드밸런싱이 반드시 필요하다
Round Robin DNS는 클라이언트로부터 받은 요청을 로드밸런싱 대상 서버에 순서대로 할당받는 방식. 첫 번째 요청은 첫 번째 서버, 두 번째 요청은 두 번째 서버, 세 번째 요청은 세 번째 서버에 할당한다.
로드밸런싱 대상 서버의 성능이 동일하고 처리 시간이 짧은 애플리케이션의 경우, 균등하게 분산이 이루어지기 때문에 이 방식을 사용한다.
원리
웹서버로 예를 들면, 웹서비스를 담당할 여러 대의 웹서버는 자신의 공인IP 각자 가지고 있다.
웹사이트에 접속을 원하는 사용자가 해당 도메인 주소를 브라우저에 입력하면 DNS는 도메인의 정보를 조회하는데 이때 IP 주소를 여러 대의 서버 IP 리스트 중에서 Round Robin 형태로 랜덤하게 하나 혹은 여러 개를 선택하여 다시 사용자에게 알려준다.
단점
1. 서버의 수만큼 공인 IP 주소가 필요하다.
부하 분산을 위해 서버의 대수를 늘리기 위해서는 그 만큼의 공인 IP가 필요하다.
2. 불균형 부하분산된다.
모바일 사이트 등에서 문제가 될 수 있는데, 스마트폰의 접속은 캐리어 게이트웨이 라고 하는 프록시(Proxy) 서버를 경유한다. 프록시 서버에서는 이름변환 결과가 일정 시간 동안 캐싱되므로 같은 프록시 서버를 경유하는 접속은 항상 같은 서버로 접속된다.
PC 용 웹 브라우저도 DNS 질의 결과를 캐싱하기 때문에 균등하게 부하분산되지 않는다. DNS 레코드의 TTL 값을 짧게 설정함으로써 어느 정도 해소가 되지만, TTL 에 따라 캐시를 해제하는 것은 아니므로 반드시 주의가 필요하다.
* 캐싱: 컴퓨터 과학에서 데이터나 값을 미리 복사해 놓는 임시 장소를 가리킨다.
캐시는 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우나 값을 다시 계산하는 시간을 절약하고 싶은 경우에 사용한다.
캐시에 데이터를 미리 복사해 놓으면 계산이나 접근 시간 없이 더 빠른 속도로 데이터에 접근할 수 있다.
캐시는 시스템의 효율성을 위해 여러 분야에서 두루 쓰이고 있다.
3. 서버가 다운되도 확인이 불가능하다.
DNS 서버는 웹 서버의 부하나 접속 수 등의 상황에 따라 질의결과를 제어할 수 없다.
웹 서버의 부하가 높아서 응답이 느려지거나 접속수가 꽉 차서 접속을 처리할 수 없는 상황인지를 전혀 감지할 수가 없기 때문에 어떤 원인으로 다운되더라도 이를 검출하지 못하고 유저들에게 제공된다.이로 인해 유저들은 간혹 다운된 서버로 연결이 되기도 한다.
DNS 라운드 로빈은 부하분산을 위한 방법이지 다중화 방법은 아니므로 다른 S/W 와 조합해서 관리할 필요가 있다.
극복 방법
1. 다중화 구성 방식 (Synchronous Time-Division Multiplexing)
AP 서버에 VIP(Virtual IP)를 부여해서 다중화를 구성한다.
각 AP 서버를 Health Check후 이상이 감지되면 VIP를 정상 AP 서버로 인계하는 방식을 사용한다.
DNS Server Table 에 실시간으로 AP 서버의 상태를 확인할 수 있는 칼럼 및 함수를 추가하여 요청될 경우 서버 상태를 확인하여 우회루트를 제공하거나 에러를 전송하는 방식을 말한다.
2. 가중치 편성 방식, 가중 라운드로빈 방식(Weighted round robin)
각각의 웹 서버에 가중치를 더해서 분산 비율을 변경한다.
물론 가중치가 큰 서버일수록 빈번하게 선택되므로 처리능력이 높은 서버는 가중치를 높게 설정하는 것이 좋다.
3. 최소 연결 방식 (Least connection)
로드 밸런서의 도입을 통해 구성가능, 접속 클라이언트 수가 가장 적은 서버를 선택한다.
로드밸런서에서 실시간으로 connection 수를 관리하거나 각 서버에서 주기적으로 알려주는 것이 필요하다.
REFERENCE
- https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=jaypark7121&logNo=40128248151
- https://dlsdn73.tistory.com/580
- https://judo0179.tistory.com/127
'Computer Science > 네트워크' 카테고리의 다른 글
[네트워크] HTTP Method(GET, POST, PUT, DELETE, PATCH, HEAD)와 Method의 속성 (0) | 2022.03.10 |
---|---|
[네트워크] HTTP is Everywhere! and Feature 2탄 and HTTP 메세지 뜯어보기 (0) | 2022.03.10 |
[네트워크] 하드웨어 환경, Server?, 서버 프로그램 구현은 어떻게 설계하는게 좋을까? (0) | 2022.03.04 |
[네트워크]HTTP is Everywhere! and Feature 1탄 (0) | 2022.03.03 |
[네트워크] URI와 웹브라우저 요청 흐름 (0) | 2022.03.03 |