DNS 서버는 IP주소를 받아와 도메인 이름을 IP주소로 변환하는 역할을 한다.
라운드 로빈(Round Robin)은 서버에 들어온 요청을 순서대로 돌아가며 배정하는 방식이다. 클라이언트의 요청을 순서대로 분배하기 때문에 여러 대의 서버가 동일한 스펙을 갖고 있고, 서버와의 연결(세션)이 오래 지속되지 않는 경우에 활용하기 적합하다.
DNS 라운드 로빈은 부하 분산을 위해 사용된다.
DNS 라운드 로빈 방식의 문제점은?
1. 서버의 수 만큼 공인 IP 주소가 필요하다.
부하 분산을 위해 서버의 대수를 늘리기 위해서는 그 만큼의 공인 IP 가 필요하다.
2. 균등하게 분산되지 않는다.
모바일 사이트 등에서 문제가 될 수 있는데, 스마트폰의 접속은 '캐리어 게이트웨이' 라고 하는 프록시 서버를 경유 한다. 프록시 서버에서는 이름 변환 결과가 일정 시간 동안 캐싱되므로 같은 프록시 서버를 경유 하는 접속은 항상 같은 서버로 접속된다. 또한 PC 용 웹 브라우저도 DNS 질의 결과를 캐싱하기 때문에 균등하게 부하분산 되지 않는다. DNS 레코드의 TTL(DNS 쿼리에 대한 결과를 받아갔을 경우 결과 값을 캐쉬에 저장하는 시간)값을 짧게 설정함으로써 어느 정도 해소가 되지만, TTL에 따라 캐시를 해제하는 것은 아니므로 반드시 주의가 필요하다.
3. 서버가 다운되어도 확인할 수 없다.
DNS 서버는 웹 서버의 부하나 접속 수 등의 상황에 따라 질의결과를 제어할 수 없다. 웹 서버의 부하가 높아서 응답이 느려지거나 접속 수가 꽉 차서 접속을 처리할 수 없는 상황인 지 전혀 감지할 수 없기 때문에, 어떤 원인으로 다운되더라도 이를 검출하지 못하고 유저들에게 제공하여 유저들이 간혹 다운된 서버로 연결이 되기도 한다.
Round Robin 방식을 기반으로 단점을 해소하는 DNS 스케줄링 알고리즘은 다음과 같다.
- Weighted round robin (WRR)
각각의 웹 서버에 가중치를 가미해서 분산 비율을 변경한다. 물론 가중치가 큰 서버일수록 빈번하게 선택되므로 처리 능력이 높은 서버는 가중치를 높게 설정하는 것이 좋다.
- Least connection
접속 클라이언트 수가 가장 적은 서버를 선택한다. 로드밸런서에서 실시간으로 connection 수를 관리하거나 각 서버에서 주기적으로 알려주는 것이 필요하다.
'CS > 면접을 위한 CS 전공노트' 카테고리의 다른 글
[운영체제] 운영체제와 컴퓨터/메모리 (0) | 2023.04.21 |
---|---|
[네트워크] Blocking/Non-blocking & Synchronous/Asynchronous (1) | 2023.04.20 |
[네트워크] HTTP의 GET과 POST 비교 (0) | 2023.04.20 |
[네트워크] 브라우저에 URL을 입력하고 일어나는 일 (0) | 2023.04.20 |
[네트워크] HTTP/HTTPS (0) | 2023.04.19 |