1. 4달 전

    20장 리다이렉션과 부하 균형

    HTTP 완벽 가이드 20장 정리

  2. 6달 전

    18장 웹 호스팅

    HTTP 완벽 가이드 18장 정리

  3. 7달 전

    17장 내용 협상과 트랜스코딩

    HTTP 완벽 가이드 17장 정리

  4. 9달 전

    16장 국제화

    HTTP 완벽 가이드 16장 정리

  5. 10달 전

    15장 엔터티와 인코딩

    HTTP 완벽 가이드 15장 정리

  6. 10달 전

    14장 보안

    HTTP 완벽 가이드 14장 정리

  7. 11달 전

    12장 기본 인증

    HTTP 완벽 가이드 12장 정리

  8. 11달 전

    11장 클라이언트 식별과 쿠키

    HTTP 완벽 가이드 11장 정리

  9. 11달 전

    10장 HTTP 2.0

    HTTP 완벽 가이드 10장 정리

  10. 11달 전

    9장 웹 로봇

    HTTP 완벽 가이드 9장 정리

  11. 11달 전

    8장 통합점 게이트웨이, 터널, 릴레이

    HTTP 완벽 가이드 8장 정리

  12. 11달 전

    7장 캐시

    HTTP 완벽 가이드 7장 정리

  13. 11달 전

    6장 프락시

    HTTP 완벽 가이드 6장 정리

  14. 12달 전

    5장 웹서버

    HTTP 완벽 가이드 5장 정리

  15. 12달 전

    4장 HTTP 커넥션 관리

    HTTP 완벽 가이드 4장 정리

  16. 12달 전

    3장 HTTP 메시지

    HTTP 완벽 가이드 3장 정리

  17. 1년 전

    2장 URL과 리소스

    HTTP 완벽 가이드 2장 정리

  18. 1년 전

    1장 HTTP 개관

    HTTP 완벽 가이드 1장 정리

Tamm자바스크립트 웹 개발 환경을 좋아하고 사람들에게 재미를 주는 것에 관심이 많은 개발자 입니다.

20장 리다이렉션과 부하 균형

HTTP 완벽 가이드 20장 정리

featured image thumbnail for post 20장 리다이렉션과 부하 균형

웹에서 HTTP는 혼자가 아니다. HTTP 메시지의 데이터는 많은 프로토콜에 의해 통제된다. HTTP에는 주요 관심사는 출발지와 목적지인데, 미러링된 서버, 웹 프락시, 캐시가 함께하는 웹의 세계에서 목적지는 간단하지 않다.

리다이렉션 기술은 보통 메시지가 프락시, 캐시, 서버 팜의 특정 웹 서버 중 어디에서 끝나는지 판별하기 위해 사용한다.

이 장에서 다룰 내용

  • HTTP 리다이렉션
  • DNS 리다이렉션
  • 임의 캐스트 라우팅
  • 정책 라우팅
  • 아이피 맥 포워딩
  • 웹 캐시 조직 프로토콜(WCCP)
  • 인터캐시 커뮤니케이션 프로토콜(ICP)
  • 하이퍼텍스트 캐싱 프로토콜(HTCP)
  • 네트워크 요소 제어 프로토콜(NECP)
  • 캐시 배열 라우팅 프로토콜(CARP)
  • 웹 프락시 자동발견 프로토콜(WPAD)

20.1 왜 리다이렉트 인가?

리다이렉션을 하는 이유는 다음의 사항을 개선하기 위함이라 한다.

  • 신뢰할 수 있는 HTTP 트랜잭션의 수행
  • 지연 최소화
  • 네트워크 대역폭 절약

웹 콘텐트를 여러 장소에 배포하면, 한 곳에서 실패해도 다른 곳에서 얻을 수 있기 때문에 신뢰성이 개선된다.

리다이렉션이란 최적의 분산된 콘텐츠를 찾는 것을 도와주는 기법의 집합이라 생각할 수 있다. 클라이언트와 가장 가까운 곳으로 연결하므로 지연을 최소화 하고 불필요한 네트워크 대역폭을 줄 일 수 있다.

20.2 리다이렉트 할 곳

클라이언트 관심에서 서버, 프락시, 캐시, 게이트웨이는 모두 서버라 할 수 있다. 그런데 어떤 리다이렉션 기술은 특정 종류의 종단에서만 사용하도록 설계되었다. 뒤 에서 일반적인 기법과 특화된 기법을 보게 될 것이다.

리다이렉트할 곳은 간단명료하다. 클라이언트가 원하는 자원이 있는 가장 가까운 곳.

20.3 리다이렉션 프로토콜의 개요

리다이렉션의 목표는 HTTP 메시지를 가용한 웹 서버로 가급적 빨리 보내는 것이다.

  • 브라우저 애플리에션의 사용자는 브라우저가 클라이언트 메시지를 프락시 서버로 보내도록 설정할 수 있다.
  • DNS resolver는 메시지의 주소를 지정할 때 사용될 아이피 주소를 선택한다. 클라이언트의 위치에 따라 달라질 수 있다.
  • 메시지는 여러 패킷으로 나뉘어 전송되고 스위치와 라우터들은 패킷의 TCP/IP 주소를 검증하고 어떻게 패킷을 라우팅 할지 결정한다.
  • 웹 서버는 HTTP 리다이렉트를 이용해 요청이 다른 웹 서버로 가도록 할 수 있다.

20.4 일반적인 리다이렉션 방법

20.4.1 HTTP 리다이렉션

HTTP 메시지에 리다이렉트 할 URL을 넘겨주는 방식으로 동작한다. 다음의 메시지의 예시를 보자.

  • 클라이언트
GET /hammers.html HTTP/1.0
Host: www.joes-hardware.com
User-Agent: Mozilla/4.51 [en] (X11; U; IRIX 6.2 IP22)
  • 서버
HTTP/1.0 302 Redirect
Server: Stronghold/2.4.2 Apache/1.3.6
Location: http://161.58.228.45/hammers.html
  • 클라이언트
GET /hammers.html HTTP/1.0
Host: 161.58.228.45
User-Agent: Mozilla/4.51 [en] (X11; U; IRIX 6.2 IP22)

20%206f2bc9c8b06e49b4a1e5884625dc6694/20-6f2bc9c8b06e40.png

이러한 동작 에는 단점이 있다. 두 번의 왕복을 하기 때문에 응답이 지연된다. 또, 리다이렉트 서버가 고장이 나면 사이트가 고장 난다.

20.4.2 DNS 리다이렉션

클라이언트가 요청한 주소의 도메인 이름을 반드시 아이피 주소로 분석해야 한다. DNS resolver는 클라이언트의 운영체제이거나 클라이언트에 연결된 어떤 DNS 서버일 것이다.

DNS 라운드 로빈

20%206f2bc9c8b06e49b4a1e5884625dc6694/20-6f2bc9c8b06e41.png

DNS 라운드 로빈은 가장 흔하면서 또 가장 단순한 리다이렉션 기법이다.

다음은 www.cnn.com 에 할당된 IP주소 목록이다.

% nslookup www.cnn.com
Name:    cnn.com
Addresses:  207.25.71.5, 207.25.71.6, 207.25.71.7, 207.25.71.8
          207.25.71.9, 207.25.71.12, 207.25.71.20, 207.25.71.22, 207.25.71.23
          207.25.71.24, 207.25.71.25, 207.25.71.26, 207.25.71.27, 207.25.71.28
          207.25.71.29, 207.25.71.30, 207.25.71.82, 207.25.71.199, 207.25.71.245
          207.25.71.246
Aliases:  www.cnn.com

Addresses에 있는 여러 IP 중 어떤 것을 선택해도 결과는 갖다. 그런데 보통의 웹 서버는 저 목록 중 첫 번째 값을 사용하여 접근한다. 그러면 첫 번째 서버에 대한 부하가 심하게 걸릴 것이다. 그래서 라운드 로빈 방식을 써서 Addresses의 목록의 순서가 순회되도록한다. 실제로 nslookup www.cnn.com 명령어를 실행할 때마다 Addresses의 순서를 다르게 나온다.

라운드 로빈 방식은 실제 서버에 부하를 체킹해서 리다렉션하지 않지만, 대부분의 상황에서는 문제가 되지 않는다.

다른 DNS 기반 리다이렉션 알고리즘

부하 균형 알고리즘, 근접 라우팅 알고리즘, 결함 마스킹 알고리즘

일반적으로, 복잡한 서버 추적 알고리즘을 실행하는 DNS 서버는 콘텐츠 제공자의 통제하에 있는 권한이 있는 서버다.

20%206f2bc9c8b06e49b4a1e5884625dc6694/20-6f2bc9c8b06e42.png

20.4.3 임의 캐스트 어드레싱

웹 서버는 라우터 통신 프로토콜을 이용해 자신과 인접한 백본 라우터와 대화한다. 백본 라우터가 임의 캐스트 주소를 목적지로 하는 패킷을 받았을 때, 미리 대화를 한 상태기 때문에 가장 가까운 라우터로 패킷을 보내게 된다.

20%206f2bc9c8b06e49b4a1e5884625dc6694/20-6f2bc9c8b06e43.png

20.4.4 아이피 맥 포워딩

레이어-4 장비에서 출발지와 목적지의 아이피 주소와 TCP 포트번호를 사용해 라우팅 했다면, 레이어-2 장비에서는 MAC(Media Access Control)주소를 사용하여 포워딩 한다.

대표적 레이어-2 장비인 스위치 중 레이어-4 주소를 이해할 수 있는 장비가 있는데, 이 장비는 아이피 주소, TCP 포트번호 MAC 주소를 활용하여 다른 아이피 주소 또는 MAC 주소로 라우팅 할 수 있다.

20%206f2bc9c8b06e49b4a1e5884625dc6694/20-6f2bc9c8b06e44.png

MAC 포워딩을 지원하는 레이어-4 스위치는 보통 요청을 여러 프락시 캐시로 보낼 수 있고 그들 사이의 부하 균형을 유지할 수 있다.

20%206f2bc9c8b06e49b4a1e5884625dc6694/20-6f2bc9c8b06e45.png

Mac 주소 포워딩은 점 대 점으로만 가능하기 때문에 스위치-서버, 스위치-프락시 간 한 홉 거리에 위치해야한다는 제약이 있다.

20.4.5 아이피 주소 포워딩

레이어-3 종단간 인터넷 라우팅이 패킷을 올바른 위치에 보내준다. 이러한 종류의 전달은 NAT(Network Address Translation)이라고도 불린다. MAC 포워딩 처럼 한 홉간 거리라는 제약은 없지만, 라우팅 대칭성이라는 문제가 있다. 클라이언트로부터 들어오는 TCP 커넥션을 받아주는 스위치는 그 커넥션을 관리하고 있다. 스위치는 반드시 그 커넥션을 통하여 응답을 돌려줘야 한다.

20%206f2bc9c8b06e49b4a1e5884625dc6694/20-6f2bc9c8b06e46.png

응답의 귀환 경로를 제어할 수 있는 두 가지 방법이 있다.

  • 패킷의 출발지 아이피 주소를 스위치의 아이피 주소로 바꾼다. 그러나 클라이언트의 IP주소를 잊기 때문에 서버는 클라이언트의 IP주소를 통한 인증이나 검증을 할 수 없게 된다.
  • 해당 스위치를 거치지 않고 갈 수 있는 경로를 존재하지 않게 하면 된다. 이 방법의 단점은 클라이언트와 서버 사이의 전체 네트워크를 약간 통제해야 하는 것이다.

20.4.6 네트워크 구성요소 제어 프로토콜(NECP: Network Element Control Protocol)

NE(Network Element): 라우터나 스위치

SE(Server Element): 웹 서버, 프락시 캐시

NECP는 NE와 SE들이 대화할 수 있게 하여 SE가 적합하다고 판단하는 선에서 NE가 부하 균형을 유지하도록 한다.

20.5 프락시 리다이렉션 방법

20.5.1 명시적 브라우저 설정

브라우저에는 프락시 서버를 사용하기 위해 프락시 이름, 아이피 주소, 포트번호를 설정할 수 있는 메뉴가 존재한다. 브라우저의 모든 요청에 대해 프락시를 통할 수 있도록 설정할 수 있다.

명시적인 브라우저 설정의 단점이 두 가지 있다. 프락시가 응답하지 않으면 원래 목적 서버로 요청이 가지 않는다는 점이다. 또, 네트워크의 아키텍쳐가 변경되었을 때 모든 프락시에 전파하는 것이 어렵다.

20.5.2 프락시 자동 설정(PAC: Proxy Auto-configuration)

프락시에 대한 정보를 사용자가 입력하는 것이 아니라 별도의 프락시 설정 파일을 사용하는 것이다. 브라우저들이url마다 접촉해야할 프락시를 지정한 PAC파일을 가져오도록 한다. 브라우저는 재시작할 때마다 PAC 파일을 가져오게 된다.

PAC 파일을 자바스크립트로 작성된 파일로 간략하게 다음 그림으로 이해할 수 있다.

20%206f2bc9c8b06e49b4a1e5884625dc6694/20-6f2bc9c8b06e47.png

20.5.3 웹 프락시 자동발견 프로토콜(Web Proxy Autodiscovery Protocol)

P 541

브라우저마다 PAC파일을 발견하는 것에 차이가 있기도 해서 좀 더 구체적이고 명확하게 프록시를 사용하도록 하는 방법.

20.6 캐시 리다이렉션 방법

신뢰성이 높고, 고성능에, 콘텐츠 지각 디스패칭, 콘텐츠의 특정 일부를 갖고 있을 것으로 추정되는 곳으로 요청 하는 기능 등으로 앞서 다뤘던 프로토콜 보다 복잡하다.

20.6.1 WCCP 리다이렉션

시스코 시스템즈에서 개발한 WCCP는 라우터들과 캐시들 사이의 대화를 관리하여 캐시의 상태를 확인하는 특정 종류의 트래픽을 캐시에 보낼 수 있게 한다.

WCCP 리다이렉션 동작