클라이언트의 요청이 많을수록 웹 서버의 부하가 높아지게된다. 이때 웹 서버가 어떻게 부하를 분산하는지 알아보자.
서버의 부하 분산
서버의 부하를 분산하기 위해 3대의 웹 서버를 사용한다고 해보자. 그렇다면 각각의 서버가 담당하는 패킷의 수가 감소할 것이다. 하지만 1대의 웹 서버가 동작하지 못하는 상황이 온다면 클라이언트들은 이러한 상황을 모르고 계속해서 액세스할 것이기 때문에 비효율적이다.
로드 밸런서
이때 웹 서버와 클라이언트 사이에 로드 밸런서를 둘 수 있다. 로드 밸런서는 클라이언트의 요청을 대신 받아 서버에 전달하는 역할을 하는데 DNS 서버에 로드 밸런서의 주소를 등록하여 사용한다. 따라서 클라이언트는 웹 서버가 아닌 로드 밸런서에 요청을 하고 로드 밸런서는 웹 서버에서 받은 요청을 클라이언트에 전달한다.
로드 밸런서는 웹 서버의 상태를 계속해서 확인하는데 웹 서버의 CPU, 메모리 등의 사용률을 수집하고 테스트할 패킷을 보내 부하가 낮은지 높은지 판단한다.
캐시 서버
부하 분산을 위해 캐시 서버를 사용할 수 있다. 클라이언트가 웹 서버에 요청을 보내면 캐시 서버를 확인한다. 캐시 서버에 요청한 데이터가 있다면 캐시 서버는 클라이언트에 데이터를 전송하며 요청한 데이터가 없을 때 캐시 서버는 웹 서버에 데이터를 요청한다.
캐시 서버는 프록시 구조를 갖고있는데 프록시는 클라이언트와 웹 서버 사이의 중계 역할을 한다. 이때 프록시 서버를 클라이언트 측에 두는 것을 포워드 프록시라 한다. 프록시는 방화벽의 역할도 할 수 있으며 클라이언트에 전송되는 패킷을 조사하여 액세스를 금지할 수 있는 필터링 기능이 있다.
(프록시 서버에 대해 추후에 자세히 정리할 필요가 있을 것 같다.)
'CS > 네트워크' 카테고리의 다른 글
[네트워크] HTTP의 특성 (0) | 2021.09.23 |
---|---|
[네트워크] 프록시 서버를 사용하는 이유 (0) | 2021.07.21 |
[네트워크] 방화벽의 동작원리 (0) | 2021.07.19 |
[네트워크] 네트워크 장비 (0) | 2021.07.12 |
[네트워크] TCP/IP (0) | 2021.07.08 |