본문 바로가기
웹/책 & 강의

HTTP 완벽가이드 - 나머지 (리디렉션, 부하균형)

by sun__ 2022. 1. 20.

[20장] 리디렉션과 부하균형

똑같은 웹 콘텐츠라고 해도 여러 장소에 배포된다. 이런 컨텐츠를 사용자에게 제공하려면 사용자의 요청을 적절한 컨텐츠로 리디렉션해줘야 한다. 필연적으로 부하균형의 과제를 해결해야 한다.

 

일반적인 서버로 리디렉션하는 방식

1. HTTP 리디렉션

요청을 처리하는 서버(리디렉트 서버)를 둬서 사용자가 해당 서버에 요청을 보내면 서버에서 적절한 타깃 서버의 ip를 계산해서 300번대 코드와 함께 응답하는 방식.

- 적절한 타깃서버를 찾는 시간이 오래걸릴 수 있다

- 최소 두번 요청해야하므로 시간이 더 걸릴 수 있다

- 리디렉트 서버가 고장나면 사이트가 고장난다.

 

2. DNS 리디렉션

클라이언트의 운영체제든 클라이언트 네트워크에 있든 원격에있든 어딘가 있을 DNS서버에서 하나의 도메인에 여러 ip를 할당해서 라운드 로빈 등의 방식으로 ip를 결정하는 방식

 

3. 임의 캐스트 어드레싱

지리적으로 흩어진 웹 서버들이 정확히 같은 ip주소를 갖고, 백본 라우터의 최단거리 라우팅 능력에 의지하는 방식.

 

프락시/게이트웨이로 리디렉션하는 방식

클라이언트가 이용하면 유익한 프락시 캐시가 네트워크에 있을 수도 있고 다른 여러 이유로 인해 프락시를 거쳐야 하는 경우가 있다. 그렇다면 웹브라우저와 같은 클라이언들은 어떻게 프락시로 가는 길을 아는가?

프락시는 결과적으로 클라이언트의 요청을 다른 프락시로 리디렉트할 수 있다. 예를들어 요청받은 컨텐츠를 가지고 있지 않은 프락시 캐시는 클라이언트를 다른 캐시로 리디렉트할 것.

 

1. 명시적 브라우저 설정

브라우저 설치시 이미 설정돼 있기도 하고, 수동 설정도 가능함. 가능만 하지 개발자 외엔 잘 안쓸듯.

 

2. 프락시 자동 설정 (PAC 프로토콜)

브라우저들이 URL별로 접촉해야 할 프락시를 지정한 PAC 파일이라고 불리는 특별한 파일을 찾도록 함. PAC파일은 특정 함수가 포함된 js파일이고 PAC서버에 존재한다.

function FindeProxyForURL(url, host)

//브라우저는 요청된 URL마다 다음과 같이 이 함수를 호출한다.
ret = FindeProxyForURL(url_of_req, host_in_url)

ret은 브라우저가 어디서 이 URL을 요청해야 하는지 지정한 문자열이다. 

- ex1) PROXY proxy1.domain.com; PROXY proxy2.domain.com;

- ex2) DIRECT  --원서버로 바로 가야함을 의미

 

3. 웹 프락시 자동발견 프로토콜 (WPAD)

웹브라우저가 자동으로 근처의 프락시를 찾아내어 사용할 수 있게 한다. 여러가지 방식을 통해 이 목표를 달성한다.

- 브라우저설정 불필요한 PAC파일 자동발견 (상세 생략..)

 

캐싱 프락시 서버를 위한 리디렉션 방식

생략

인터넷 캐시 프로토콜 ICP

형제 캐시에서 일어난 캐시적중을 찾아볼 수 있도록 해준다. 만약 캐시가 HTTP요청받은 컨텐츠를 가지고 있지 않다면 근처의 형제 캐시 중 컨텐츠가 있는지 찾아보고 필요하면 그 캐시에서 컨텐츠를 가져온다. ICP는 UDP위에 구현돼 있기 때문에 ICP를 사용하는 프로그램은 데이터그램 손실을 감지할 수 있어야 한다.