STORY 04 캐시 서버를 이용한 서버의 부하 분산
1. 캐시 서버의 이용
- 서버의 부하를 분산시키기 위해 캐시 서버를 이용할 수 있다.
- 캐시 서버는 프록시 구조를 사용하여 데이터를 캐시에 저장한다.
- 프록시는 웹 서버와 클라이언트 사이에서 웹 서버에 대한 액세스 동작을 중개하는 역할을 한다.
2. 캐시 서버는 갱신일로 콘텐츠를 관리한다
- 캐시 서버 사용 시 부하 분산 장치와 마찬가지로 웹 서버 대신 DNS 서버에 등록한다.
- 캐시 서버에서 웹 서버로 전달 시 캐시 서버는 웹 서버의 클라이언트가 되어 재요청한다.
- 즉, 소켓을 생성하고 웹 서버의 소켓에 접속하여 요청 메시지를 보낸다.
- 캐시 서버를 거치고 웹 서버로 전달될 경우 HTTP 요청 헤더에
Via
값이 포함될 수 있다.
- Via 는 현재 웹 서버에 어느 서버를 거치고 도달했는지 주소가 적혀있다.
- 반대로 응답 시 캐시 서버를 거치고 갈 경우 Via 헤더가 포함될 수 있다.
- 웹 서버가 분산되어 있을 경우 HTTP 요청 URI 를 보고 판단할 수 있다.
- 캐시 서버는 웹 서버에서 받은 응답 메시지의 정보와 받은 일시를 기록한다.
- 이전에 요청한 정보가 있을 경우
If-Modified-Since
헤더에 응답받은 시간을 포함하여 요청한다.
- 이전에 요청한 정보가 없을 경우 위의 헤더값을 포함하지 않는다.
- 캐시 서버의 요청에
If-Modified-Since
헤더값이 없거나, 갱신일을 비교하여 값이 변경되었을 경우 웹 서버에 전달하여 변경된 정보를 응답받는다.
- 갱신일을 비교하여 변경되지 않았을 경우 캐시 서버의 정보를 그대로 응답한다.
3. 프록시의 원점은 포워드 프록시이다
- 클라이언트 측에 캐시 서버를 관리하는 방법도 있다. (포워드 프록시)
- 목적은 서버측에 설치하는 캐시 서버와 같지만, 당시의 포워드 프록시는 방화벽 역할 또한 수행하였다.
- 방화벽은 IP 와 포트 번호만을 기준으로 하기 때문에 상세한 조건을 처리할 수 없다.
- 포워드 프록시에서 방화벽을 처리할 경우 위험한 사이트에 대한 접근을 제한할 수 있다.
- 포워드 프록시를 설정하면 URL 의 내용에 상관 없이 요청을 모두 포워드 프록시에게 전달한다.
4. 포워드 프록시를 개량한 리버스 프록시
- 포워드 프록시의 경우 브라우저의 설정이 필요하기 때문에 문제가 발생한다.
- 브라우저에 문제가 있을 경우 제대로 동작하지 않는다.
- 불특정 다수의 클라이언트 설정을 조작하기 어렵다.
- 이를 보완하기 위해 서버측에서 프록시를 관리하는 리버스 프록시가 등장하였다.
5. 트랜스페어런트 프록시
- 포워드 프록시와 리버스 프록시의 좋은 점만 취하는 트랜스페어런트 프록시가 있다.
- 클라이언트와 웹 서버 경로 사이에 트랜스페어런트 프록시를 설치하여 중간에 가로챈다.
- 패킷의 맨 앞에 있는 IP 헤더의 수신처 IP 주소를 보고 적절한 웹 서버를 판단한다.
- 클라이언트와 서버 모두 프록시의 개념을 인지하지 않아도 된다.
5-2. 프록시 개념 차이