DNS (Domain Name System)
우리는 보통 네이버에 접속할 때 naver.com 이라는 영문 URL을 사용해서 접속합니다. 하기만 기본적으로 접속을 위해선 URL은 IP주소를 통해 연결되어야 합니다. DNS 는 문자로 된 도메인 이름과 실제 IP 주소를 확인해 변환할 수 있는 시스템입니다. 만약 DNS 서버가 없었다면 어떤 사이트에 접속할 때 123.45.67.89 이런 식의 IP주소를 외워둬야 하게 되겠죠...
DNS 과정
1. DNS Query
DNS 서버에서 도메인 이름에 해당하는 IP 주소를 요청하여 받아옵니다.
이때 DNS 서버에 접속하는 사용자에 대해 Round Robin 방식을 이용해 IP를 할당하게 됩니다.
2. IP communication
IP 주소를 받아오면 사용자는 리퀘스트 메세지를 보내 네트워크 통신을 시작합니다.
DNS Round Robin
DNS는 도메인 주소에 해당하는 IP 주소를 제공하는 기능을 하는데 하나의 도메인을 Round Robin 방식으로 여러 IP 주소로 변환하는 것으로도 부하 분산이 가능합니다. 이 경우 시간에 따라 스케줄링이 변화하기 때문에 로드 밸런서 없이도 부하에 대해 걱정을 하지 않아도 됩니다.
하지만 이는 몇 가지 문제점들을 가지고 있습니다.
1. 부하 분산을 위해 서버의 대 수를 늘리려면 그 수 만큼의 공인 IP 주소가 필요하게 됩니다.
2. 지연 성능 향상과 네트워크의 DNS 메시지 수를 줄이기 위해 캐싱을 사용하는데 이로 인해 부하 분산이 균등하게 되지 않는다는 문제가 생깁니다.
3. 서버 다운 등과 같은 장애가 발생하는 경우 문제가 감지되지 않기 때문에 서비스에서 해당 서버를 제거하지 못해 사용자들이 다운된 서버에 연결하게 되는 문제도 생기게 됩니다.
따라서 대규모 시스템에서는 weighted round robin, least connection 등 다양한 스케줄링이 사용해 트래픽을 관리하게 됩니다.
크게는 scale-up과 scale-out 이렇게 두 가지 방식이 있습니다.
scale-up : pc의 성능을 높여 더 많은 트래픽 처리.
sclae-out : 여러대의 서버를 추가하여 트래픽을 분산. (이 때 로드 밸런싱이 필요하게 됨)
Weighted Round Robin
각각의 웹 서버에 가중치를 주며 분산 비율을 변경하는 방식입니다. 가중치가 큰 서버가 빈번하게 선택되기 때문에 처리 능력이 높은 서버에 높은 가중치를 설정하는 것이 좋습니다.
Least Connection
이는 로드 밸런서를 도입한 방식으로 접속한 클라이언트 수가 가장 작은 서버를 선택하게 하는 방식입니다. 로드밸런서에서 실시간 connection 수를 관리하거나 각 서버에 주기적으로 알려주는 것이 요구됩니다.
'Computer Science > 네트워크' 카테고리의 다른 글
[네트워크] HTTP와 HTTPS의 동작 과정 (0) | 2021.05.21 |
---|---|
[네트워크] HTTP와 HTTPS (0) | 2021.05.18 |
[네트워크] UDP (0) | 2021.05.18 |
[네트워크] TCP (흐름 제어 / 혼잡 제어) (0) | 2021.05.17 |
[네트워크] TCP 3-way handshake & 4-way handshake (0) | 2021.05.17 |