[내일배움캠프Spring-72일차] DNS - 네트워크 (3)
DNS (Domain Name System)
DNS는 도메인 이름을 IP 주소로 변환해주는 인터넷의 전화번호부 역할을 하는 시스템이다. 사람이 기억하기 쉬운 도메인 이름(예: google.com)을 컴퓨터가 이해할 수 있는 IP 주소(예: 142.250.196.14)로 변환해준다.
DNS Round Robin 방식
DNS Round Robin은 하나의 도메인 이름에 여러 개의 IP 주소를 등록하여 부하를 분산시키는 간단한 로드 밸런싱 기법이다. 예를 들어 example.com에 대해 3개의 서버 IP를 등록해두면, DNS 서버가 요청이 올 때마다 순환적으로 다른 IP 주소를 반환한다.
클라이언트가 도메인을 조회할 때마다 DNS 서버는 등록된 IP 주소들을 순서대로 반환하여, 각 서버로 트래픽이 분산되도록 한다. 구현이 간단하고 별도의 로드 밸런서 장비가 필요하지 않아 비용면에서 효율적이다.
DNS Round Robin의 문제점
공인 IP 주소 부족 문제가 있다. 서버 수만큼 공인 IP 주소가 필요하므로, 대규모 서비스에서는 IP 주소 확보에 어려움이 있을 수 있다.
불균등한 부하 분산이 가장 큰 문제이다. DNS 캐싱으로 인해 실제로는 균등하게 분산되지 않는다. 통신사의 프록시 서버나 사용자의 브라우저에서 DNS 결과를 캐싱하면, 같은 캐시를 사용하는 모든 사용자가 동일한 서버로 접속하게 된다. TTL 값을 짧게 설정해도 모든 시스템이 이를 준수하지는 않는다.
서버 장애 감지 불가능도 심각한 문제이다. DNS 서버는 웹 서버의 상태를 모니터링하지 않기 때문에, 특정 서버가 다운되어도 계속해서 해당 서버의 IP를 반환한다. 사용자들이 다운된 서버로 연결을 시도하게 되어 서비스 장애가 발생할 수 있다.
개선된 DNS 스케줄링 알고리즘
Weighted Round Robin (WRR)은 각 서버에 가중치를 부여하여 성능이 좋은 서버에 더 많은 트래픽을 할당하는 방식이다. 서버의 처리 능력에 따라 부하를 차등 분배할 수 있어 더 효율적인 자원 활용이 가능하다.
Least Connection은 현재 연결 수가 가장 적은 서버를 선택하는 방식이다. 로드 밸런서가 실시간으로 각 서버의 연결 상태를 모니터링하거나, 서버들이 주기적으로 자신의 상태를 보고하는 구조가 필요하다. 이를 통해 실제 서버 부하를 고려한 더 정확한 부하 분산이 가능하다.
현재는 DNS Round Robin보다는 L4/L7 로드 밸런서나 클라우드의 로드 밸런싱 서비스를 활용하는 것이 일반적이다. 이와 같은 방식들은 서버 상태 모니터링, 세션 유지, 다양한 분산 알고리즘 등 더 고도화된 기능을 제공한다.