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

20.1 왜 리다이렉트인가?

  • HTTP 애플리테이션의 요구사항

    • 신뢰할 수 있는 HTTP 트랜잭션 수행

    • 지연 최소화

    • 네트워크 대역폭 절약

요구사항을 충족하기 위한 방안

  • 여러개의 end point

    • fault tolerance

    • 지연이 더 낮은 end point 로 접근

    • 요청이 분산되어 네트워크 혼잡을 줄임

  • 리다이렉션과 부하 균형은 동반되는 개념이다

20.2 리다이렉트 할 곳

  • 서버, 프락시, 캐시, 게이트웨이는 클라이언트 입장에선 모두 서버이다

    • 모두 리다이렉션을 지원

  • 특정 종류의 end point만을 위해 설계된 리다이렉션도 존재함

  • 웹 서버

    • IP 별로 요청을 다룸

    • 동일한 URL 요청에 대한 리다이렉션 처리

  • 프락시

    • 프로토콜별로 요청을 다룸

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

  • HTTP를 가장 빠른 가용한 웹 서버로 보내는 것이 리다이렉션의 목표이다

    • HTTP 애플리케이션과 라우팅 장치에 영향을 받음

      • 브라우저가 메세지를 프락시 서버로 보내도록 설정이 가능

      • DNS resolver 는 클라이언트의 위치에 따라 다른 IP 주소를 내려줄 수 있음

      • 스위치 또는 라우터 장비에서 TCP/IP 주소를 기반으로 라우팅할 수 있음

      • 웹 서버는 HTTP 리다이렉트를 사용해 요청을 다른 웹 서버로 가도록 할 수 있다

  • 일반 리다이렉션 방법

  • 프락시와 캐시 리다이렉션 기법

20.4 일반 리다이렉션 기법

20.4.1HTTP 리다이렉션

  • 리다이렉팅 서버가 콘텐츠 서버의 부하나 거리를 고려하여 최선의 서버로 요청을 리다이렉트

    • 어떻게 최선의 서버를 결정하나?

  • 특징

    • 클라이언트의 IP 주소에 기반한 결정

  • 단점

    • 리다이렉팅 서버의 부하가 커질 수 있음

    • RTT 가 한번 더 발생하기 때문에 지연이 커짐

    • SPF (리다이렉팅 서버)

20.4.2 DNS 리다이렉션

  • DNS는 하나의 도메인에 여러 IP 주소가 등록되는 것을 허용

  • 웹 서버들을 모니터링하는 authoriative server 가 존재

  • 다양한 resolving 알고리즘이 있음

    • 라운드 로빈

      • 웹 서버 팜 전체에 대한 부하 균형 유지에 초점

      • 서버의 위치와 상태에 대한 고려가 없음

      • 다중 주소 집합의 첫 번째 주소만 사용하는 클라이언트를 고려해 룩업 당 주소를 순환시켜 첫 번째에 위치하는 주소를 다르게 한다

    • 부하 균형 알고리즘

      • 웹 서버의 부하를 추적하여 부하가 가장 낮은 서버를 목록의 첫 번째에 위치시킴

    • 근접 라우팅 알고리즘

      • 사용자와 가장 가까운 위치의 웹 서버로 라우팅

    • 결함 마스킹 알고리즘

      • 네트워크 상태를 모니터링하여 장애 지점을 피해 라우팅

  • 단점

    • DNS 캐싱

      • 하나의 클라이언트에 대한 부하 분산에 실패

    • 클라이언트가 아닌 로컬 DNS 서버의 아이피 주소에 기반한 결정

20.4.3 임의 캐스트 어드레싱

  • 백본 라우터의 최단거리 라우팅에 의존하는 방법

  • 특징

    • advertise 를 통해 백본 라우터는 최단거리의 웹 서버를 알고 있음

    • 백본 라우터가 임의 캐스트 주소를 목적지로 하는 패킷을 받으면 자신이 알고 있는 최단거리 웹 서버로 라우팅

  • 단점

    • 반드시 라우팅 프로토콜이 사용해야 함

    • 주소 충돌을 처리할 수 있어야 함, 라우팅 누수 위험

20.4.4 아이피 맥 포워딩

  • 레이어-4 스위치를 사용해 특정 IP 주소와 포트번호에 대한 요청을 특정 MAC 장비로 포워딩

  • 단점

    • 웹 서버들은 스위치와 한 홉 거리에 위치해야 함

20.4.5 아이피 주소 포워딩

  • 레이어-4 스위치를 사용해 특정 IP 주소와 포트번호에 대해 목적지 IP 주소의 변경에 따라 라우팅

  • 맥 포워딩과 유사하지만 IP 주소에 기반한 라우팅이며, 한 홉 거리에 있을 필요가 없다

  • NAT

    • 클라이언트와 서버 사이의 스위치가 중간에서 목적지와 출발지 주소를 번역해줌

    • 출발지 주소가 클라이언트의 주소 그대로 남는다면 스위치를 거치지 않고 응답을 내려줄 수 있는 경로가 없다

20.4.6 네트워크 구성요소 제어 프로토콜

  • Network Element Control Protocol 은 네트워크 구성요소들과 서버 구성요소들의 통신 수단이다

  • 명시적으로 부하 균형을 지원하지는 않는다

    • SE 가 NE 에 부하 균형 정보를 제공

    • MAC 포워딩, GRE 캡슐화, NAT 와 같은 패킷 전달 방식들을 제공

  • 예외에 대한 개념을 지원

20.5 프락시 리다이렉션 방법

20.5.1 명시적 브라우저 설정

  • 브라우저는 프락시 이름, 아이피 주소, 포트번호를 설정할 수 있는 메뉴가 존재

    • 미리 설정되있는 브라우저를 제공하기도 함

  • 단점

    • 프락시로부터 응답이 없어도 원 서버에 접촉하지 않음

    • 네트워크 아키텍쳐가 변경에 유연하게 대처하기 어렵다

      20.5.2 프락시 자동 설정

  • 브라우저가 동적으로 자신의 프락시 설정을 변경

    • URL 마다 프락시가 지정되어 있는 PAC 파일을 받아온다

    • PAC 파일이 존재하는 서버는 미리 지정되어 있음

    • 매 재시작 시 PAC 파일을 받아온다

  • PAC 파일은 도메인에 대해 프락시와 원 서버 중 어느쪽으로 먼저 접근해야하는지 반환하는 자바스크립트 파일이다

    • DNS 주소나 서브넷, 호스트명과 관련된 매개변수들에 기반한 결과를 반환할 수 있다

  • 네트워크 아키텍쳐가 변경될 경우 PAC 파일에 반영 -> 브라우저 설정과 무관

20.5.3 웹 프락시 자동발견 프로토콜

  • 웹 브라우저가 수동 설정이나 트래픽 인터셉터에 의존하지 않고 프락시를 발견할 수 있는 방법을 제공

  • PAC 파일 자동발견

    • WPAD 는 HTTP 클라이언트가 PAC 파일 위치를 알아내 적절한 프락시 서버 이름을 알 수 있게 한다

    • 부하균형이나 장애 대처 등의 추가 기능을 위해 직접적으로 프락시 서버 이름을 알아내진 않는다

  • WPAD 프로토콜 클라이언트 예시

    • WPAD 로 PAC CURL 탐색

    • URL 에 해당하는 PAC 파일을 받아옴

    • PAC 파일을 실행해 프락시 서버 알아냄

    • 프락시 서버에 요청

  • WPAD 알고리즘

  • 성공할 때 까지 순차실행

    • DHCP (Dynamic Host Configuration Protocol)

    • SLP (Service Location Protocol)

    • DNS에게 잘 알려진 호스트 명

    • DNS SRV 레코드

    • TXT 레코드의 DNS 서비스 URL 들

  • WPAD 클라이언트는 DHCP 와 DNS 에게 잘 알려진 호스트명만 요구됨

  • 모든 프로세스를 실패하면 프락시를 사용 안하는 것으로 설정

  • DHCP를 이용한 CURL 발견

    • WPAD 클라이언트가 DHCP 질의를 통해 CURL 을 얻음

    • DHCP 서버가 CURL 을 저장하고 있어야 함

      • DHCP 옵션코드 252에 저장

  • DNS A 레코드 룩업

    • 프락시 서버의 IP 주소들이 DNS 서버에 저장되어있어야 함

    • 모든 룩업 요청은 wpad 접두어가 붙은 QNAME 을 가짐

  • PAC 파일 가져오기

    • 위의 방법으로 얻어온 CURL 로 GET 요청

    • 클라이언트가 다룰 수 있는 CFILE 포맷 정보가 담긴 Accept 헤더가 포함되어야 함

WPAD 가 실행되는 시점

  • 웹 클라이언트가 시작될 때

  • 클라이언트 호스트 아이피 주소가 변경된 네트워크 스택으로부터 특정 이벤트를 받을 때마다

  • PAC 파일이 만료되었을 때

    • 전체 WPAD 프로세스를 재실행해야 함

    • 조건부 요청으로 PAC 파일을 받아올 수 없다

20.6 캐시 리다이렉션 방법

  • 고성능, 높은 신뢰성, 콘텐츠 지각 디스패칭까지 고려해야 해서 일반적인 리다이렉션 프로토콜보다 복잡하다

    20.6.1 WCCP 리다이렉션

  • 라우터와 캐시 사이 통신을로 라우터가 캐시를 검사하고 특정 트래픽을 특정 캐시로 포워딩

  • WCCP 리다이렉션 동작

    • WCCP 를 제공하는 라우터, 다른 캐시와 의사소통이 가능한 캐시가 포함된 네트워크

    • 라우터들의 집합과 그 대상이 되는 캐시들이 WCCP 서비스 그룹을 구성

      • 서비스 그룹 설정으로 트래픽 분류와 로드밸런싱 방법에 대해 명시한다

    • HTTP 트래픽 리다이렉션 설정이 되있다면 HTTP 요청을 서비스 그룹의 캐시로 보낸다

    • 서비스 그룹 라우터는 HTTP 요청을 아이피 주소의 해시나 마스크/값 집합 대조 스킴 중 하나에 근거하여 서비스 그룹의 캐시를 선택

    • 라우터는 요청 패킷을 캐시의 아이피 주소와 함께 캡슐화하거나 아이피 맥 포워딩하여 캐시로 보냄

    • 캐시가 요청을 처리할 수 없다면 라우터로 돌아온다

    • 서비스 그룹의 구성원들은 지속적인 하트비트 메세지로 다른 구성원들의 가용성을 체크

  • WCCP2 메세지들

  • 메세지 구성요소

    • 각 WCCP2 메세지를 헤더와 구성요소로 되어있다

    • 헤더는 메세지 종류, 버전, 길이를 포함

    • 각 구성요소는 종류와 길이를 서술하는 4바이트 헤더로 시작한다

      • 구성요소 길이는 헤더의 길이를 포함하지 않음

  • 서비스 그룹

    • 서비스 그룹은 WCCP 메세지를 교환할 수 있는 라우터와 캐시들의 집합

    • 라우터들은 웹 트래픽을 서비스 그룹의 캐시로 포워딩

    • 라우터와 캐시는 Here I am 과 I See You 메세지로 서비스그룹 설정 정보를 교환

  • GRE 패킷 캡슐화

    • WCCP 지원 라우터들은 HTTP 패킷을 특정 서버의 IP 주소와 함께 캡슐화해서 리다이렉트함

    • GRE 임을 나타내는 IP 헤더 proto 필드로 식별

    • 클라이언트 IP 주소를 잃어버리지 않는다

  • WCCP 부하 균형

    • 라우터들과 서버들은 지속적인 하트비트 메세지로 가용상태를 체크

    • 가용불가로 판단되면 라우터는 트래픽을 리다이렉트하지 않고 인터넷으로 포워딩

20.7 인터넷 캐시 프로토콜

  • 형제 캐시에 일어난 캐시 적중을 확인할 수 있도록 하는 프로토콜

  • 원 서버보다 형제 캐시로부터 컨텐츠를 받아오는 비용이 더 적을 것을 전제로 함

  • 근처 모든 캐시에 특정 URL 을 가지는지 질의

    • 응답은 HIT / MISS

    • HIT 응답을 준 캐시에 HTTP 커넥션을 열 수 있다

  • Network byte order 를 따르는 32비트 구조체, UDP 기반

    • OP 코드

    • 버전

    • 길이

    • 요청번호

    • 옵션

    • 옵션 데이터

    • 발송자 호스트 주소

    • 페이로드

20.8 캐시 배열 라우팅 프로토콜

  • 여러개의 프락시 서버 배열이 하나의 캐시처럼 보이도록 관리해주는 프로토콜

  • 하나의 그룹 안에 중복 엔트리가 허용되는 ICP 와 달리 CARP는 해시를 사용해 중복을 허용하지 않음

    • ICP는 질의를 주변 모든 캐시에 브로드캐스팅하지만, CARP 는 특정 캐시 서버에만 질의

  • 단점

    • 몇몇 캐시 서버가 다운되면 해시 함수가 수정되어야하고, 캐시된 컨텐츠들의 재배치로 인한 비용이든다

20.9 하이퍼텍스트 캐싱 프로토콜

  • 형제 캐시에 질의할 때 URL 과 모든 요청 및 응답 헤더를 사용

    • HTTP/0.9 기반으로 설계된 ICP 한계 보완

  • 자체 인증기능을 제공

  • 캐싱 정책

    • SET 메세지로 캐시된 문서들에 대한 정책 변경이 가능

Last updated