KR20080082227A - 로드 밸런싱 시스템의 요청 배정 장치 및 로드 밸런싱 방법 - Google Patents

로드 밸런싱 시스템의 요청 배정 장치 및 로드 밸런싱 방법 Download PDF

Info

Publication number
KR20080082227A
KR20080082227A KR1020070022776A KR20070022776A KR20080082227A KR 20080082227 A KR20080082227 A KR 20080082227A KR 1020070022776 A KR1020070022776 A KR 1020070022776A KR 20070022776 A KR20070022776 A KR 20070022776A KR 20080082227 A KR20080082227 A KR 20080082227A
Authority
KR
South Korea
Prior art keywords
server
request
load
cache
information
Prior art date
Application number
KR1020070022776A
Other languages
English (en)
Other versions
KR100892885B1 (ko
Inventor
이윤석
Original Assignee
(주)에임투지
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by (주)에임투지 filed Critical (주)에임투지
Priority to KR1020070022776A priority Critical patent/KR100892885B1/ko
Publication of KR20080082227A publication Critical patent/KR20080082227A/ko
Application granted granted Critical
Publication of KR100892885B1 publication Critical patent/KR100892885B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 발명은 복수의 원천서버, 상기 복수의 원천서버 중 적어도 하나의 원천서버에 저장된 객체의 복사본을 저장하고 있는 복수의 캐시 서버, 클라이언트의 객체 전송 요청에 따라 해당 객체를 전송할 캐시 서버를 선택하는 적어도 하나 이상의 요청 배정 장치를 포함하는 로드 밸런싱 시스템의 요청 배정 장치 및 로드 밸런싱 방법에 관한 것이다. 본 발명은 서버 모니터가 상기 각 캐시 서버와 상기 각 원천서버로부터 각각의 부하 정보를 수집하고, 할당이력 모니터가 상기 각 요청 배정 장치로부터 할당 이력 정보를 수집하는 동작을 지속적으로 하면서, 요청 배정 로직은 클라이언트로부터 수신된 객체 전송 요청에 따라 각 캐시 서버의 부하 등급 정보와 할당 이력 정보를 기초로 하여 복수의 캐시 서버 중 임계 부하 이하인 최적 상태에 있는 하나의 캐시 서버를 선택한 후 상기 선택한 캐시 서버로 객체 전송 요청을 하고 전송 요청한 객체와 선택한 상기 캐시 서버의 식별 정보를 포함하는 할당 이력 정보를 생성한다.
원천서버, 캐시 서버, 클러스터, 로드 밸런싱

Description

로드 밸런싱 시스템의 요청 배정 장치 및 로드 밸런싱 방법{Request proportion apparatus in load balancing system and load balancing method}
도 1은 본 발명의 실시 예에 따른 로드 밸런싱 시스템의 네트워크 구성도이다.
도 2는 본 발명의 제1 실시 예에 따른 요청 배정 장치에서 캐시 서버로 객체를 요청하는 방법을 보인 도면이다.
도 3은 본 발명의 제2 실시 예에 따른 요청 배정 장치에서 캐시 서버로 객체를 요청하는 방법을 보인 도면이다.
도 4는 본 발명의 실시 예에 따른 요청배정로직에서 이용하는 할당 이력 테이블을 보인 도면이다.
도 5는 본 발명의 실시 예에 따른 요청배정로직에서 이용하는 서버 부하(load) 테이블을 보인 도면이다.
도 6은 본 발명의 실시 예에 따른 요청배정로직에서 이용하는 임계부하 관리 테이블을 보인 도면이다.
도 7은 본 발명의 실시 예에 따른 요청배정로직에서 캐시 서버를 찾아내는 순서도이다.
도 8은 본 발명의 실시 예에 따른 캐시 서버가 클라이언트로 객체를 전송하 는 과정을 보인 순서도이다.
도 9는 본 발명의 실시 예에 따른 요청배정로직과 할당 이력 모니터 간의 동작을 설명하기 위한 도면이다.
도 10은 본 발명의 실시 예에 따른 서버 모니터와 요청배정로직 간의 동작을 설명하기 위한 도면이다.
도 11은 본 발명의 실시 예에 따른 원천 서버의 과부하를 방지하기 위한 서버 모니터의 동작을 설명하기 위한 도면이다.
본 발명은 클러스터(cluster)화 된 애플리케이션 아키텍처에 관한 것으로, 특히, 클러스터화 된 애플리케이션 아키텍처에서 클라이언트의 요청에 따라 발생되는 로드(load)를 밸런싱(balancing)하는 로드 밸런싱 시스템의 요청 배정 장치 및 로드 밸런싱 방법에 관한 것이다.
일반적으로 클러스터화 된 애플리케이션 아키텍처에서 로드 밸런서 장치 혹은 DNS(Domain Name Server)는 서비스 특성에 맞는 로드 밸런스 알고리즘 즉, 라운드 로빈(Round Robin), 리스트 커넥션(Least Connection), 해쉬(Hash)나 가중치를 기반으로 한 스케줄링 방법 등을 이용하여 하위 캐시 서버에 부하가 집중되지 않게 로드 밸런싱(Load Balancing)한다.
이때, 로드 밸런서 또는 DNS는 관리하는 하위 서버 클러스터를 주기적으로 체크하여, 서비스가 불가능한 서버를 밸런싱 목록에서 제외함으로써 장애극복(Fail-over)이 가능하게 구성하는 방법을 사용하고 있다.
그런데 이러한 방법은 로드 밸런서 또는 DNS가 관리하는 대상이 캐시 서버일 경우에는 불합리한 점이 있다.
이러한 불합리한 점을 로드 밸런스를 예로 하여 설명하면, 첫째로, 로드 밸런서는 하위 캐시 서버별로 어떠한 임의의 정보(예; 멀티미디어, 이미지, 텍스트 정보, 음원정보 등)(이하 이러한 임의의 정보를 "객체(object)"라 한다)가 캐시되어 있는 지는 무관심하고, 단지 스케줄에 의해서만 클라이언트로부터의 요청을 하위 캐시 서버에 할당한다. 따라서 다수의 캐시 서버는 서버별로 차이가 없이 동일한 객체들이 캐시되는 현상이 발생한다. 이와 같은 경우에는 원천 서버가 보유하고 있는 객체 가운데 특정 객체들만이 요청될 때는 캐시 서버의 히트율이 높아지는 장점이 있으나, 캐시되는 객체들이 스펙트럼이 넓으면 캐시 서버의 히트율이 떨어지게 된다.
캐시되는 객체들이 작은 경우에는 캐시 미스(cache miss) 발생시 캐시서버에서 원천 서버로의 객체 요청이 문제가 되지 않으나, 객체들의 사이즈가 커지는 경우에는 한정된 캐시 공간에 많은 객체가 캐시되기 어렵기 때문에 히트율이 떨어지게 되고, 히트율이 떨어지게 되면 캐시 서버는 원천 서버에 잦은 요청을 하게 되는데, 객체의 사이즈가 크기 때문에 원천 서버와 캐시 서버 양쪽에 부하를 가중시키는 원인이 되기도 한다.
둘째로, 캐시 미스가 발생한 캐시 서버는 자신이 캐시 미스된 객체의 정확한 경로 정보를 가지고 있지 않다면 사전에 정해진(예; IP 매핑 테이블에 정의된) 원천 서버 클러스터에서만 가져 올 수 있다. 일반적으로 원천 서버 클러스터의 구성은 파일 공유가 가능한 파일 시스템(예; 네트워크 파일 시스템)이나 공유 솔루션을 사용한다.
그러나 요청되는 객체의 종류가 다양하고 사이즈가 커서 캐시 미스가 빈번히 발생하는 경우에는 해당 공유 파일 시스템을 보유한 서버 혹은 공유 스토리지 장치가 병목 현상을 일으켜 객체 요청에 대한 응답이 멈추거나 느려지는 현상이 발생한다.
이를 해소하기 위해 몇 개의 캐시 서버와 원천 서버를 그룹핑하고, 그 그룹을 병렬로 구성하여 서비스를 함으로써 병목 현상을 줄이려는 노력이 있으나, 이는 여러 개의 입출력(Input/Output) 채널이 생기는 것과 같으므로 병목 현상은 줄어드나, 전체의 자원을 몇 개의 그룹으로 나누었기 때문에 처리 용량이 작아진 한 개의 그룹은 보유한 서비스 용량 이상으로 객체 요청이 오면 그 그룹이 가진 객체는 서비스가 불가해 지는 현상이 발생한다.
마지막으로 객체에 대한 요청이 캐시 서버의 한계 이상으로 갑작스럽게 폭주할 경우이다. 전술한 바와 같이 로드 밸런서와 DNS등은 고 부하 상태의 캐시 서버에 부하 상태에 대한 고려 없이 요청을 전달한다. 따라서 캐시 서버는 한계를 넘는 부하 상태에서도 지속적으로 요청을 받게 되고, 결국 멈추거나 다운되는 현상이 발생하게 된다. 로드 밸런스 장치는 멈춘 캐시 서버에 요청 전달하지는 않으나, 나머지 캐시 서버에 요청을 보내게 되므로 캐서 서버 다운이 도미노 현상을 이루어 모 든 캐시 서버가 다운되는 현상이 발생한다.
본 발명은 종래의 문제점을 해결하기 위한 것으로, 어떠한 상황에서도 각 캐시 서버 및 원천 서버가 안정적으로 동작할 수 있도록 로드 밸런싱하는 로드 밸런싱 시스템의 요청 배정 장치 및 로드 밸런싱 방법을 제공한다.
상기 기술적 과제를 달성하기 위한 특징에 따르면, 본 발명은 복수의 원천서버, 상기 복수의 원천서버 중 적어도 하나의 원천서버에 저장된 객체의 복사본을 저장하고 있는 복수의 캐시 서버, 클라이언트의 객체 전송 요청에 따라 해당 객체를 전송할 캐시 서버를 선택하는 요청 배정 장치를 포함하는 로드 밸런싱 시스템의 상기 요청 배정 장치를 제공한다. 이 요청 배정 장치는, 클라이언트로부터 수신된 객체 전송 요청에 따라 각 캐시 서버의 부하 등급 정보와 할당 이력 정보를 기초로 하여 복수의 캐시 서버 중 임계 부하 이하인 하나의 캐시 서버를 선택하고 선택한 상기 캐시 서버로 객체 전송 요청을 하며, 전송 요청한 객체와 선택한 상기 캐시 서버의 식별 정보를 포함하는 할당 이력 정보를 생성하는 복수의 요청 배정 로직; 상기 각 요청 배정 로직에서 생성한 할당 이력 정보를 수집하는 할당이력 모니터; 상기 각 캐시 서버와 상기 각 원천서버로부터 각각의 부하 정보를 수집하는 서버 모니터; 그리고 상기 할당이력 모니터에서 수집한 각 요청 배정 로직별 상기 할당 이력 정보와, 상기 수집 모니터에서 수집한 각 캐시 서버와 각 원천서버별 부하 정보 및, 캐시 서버의 부하 임계값을 정의한 정보를 저장하고 있는 데이터베이스를 포함한다.
상기 기술적 과제를 달성하기 위한 다른 특징에 따르면, 본 발명은 복수의 원천서버, 상기 복수의 원천서버 중 적어도 하나의 원천서버에 저장된 객체의 복사본을 저장하고 있는 복수의 캐시 서버, 클라이언트의 객체 전송 요청에 따라 해당 객체를 전송할 캐시 서버를 선택하는 적어도 하나 이상의 요청 배정 장치를 포함하는 로드 밸런싱 시스템의 로드 밸런싱 방법을 제공한다. 이 로드 밸런싱 방법은, 상기 각 캐시 서버와 상기 각 원천서버로부터 각각의 부하 정보를 수집하는 제1 단계; 상기 각 요청 배정 장치로부터 할당 이력 정보를 수집하는 제2 단계; 클라이언트로부터 수신된 객체 전송 요청에 따라 각 캐시 서버의 부하 등급 정보와 할당 이력 정보를 기초로 하여 복수의 캐시 서버 중 로드가 임계 부하 이하인 하나의 캐시 서버를 선택하는 제3 단계; 상기 선택한 캐시 서버로 객체 전송이 전송되도록 하는 제4 단계; 그리고 전송 요청한 객체와 선택한 상기 캐시 서버의 식별 정보를 포함하는 할당 이력 정보를 생성하는 제5 단계를 포함한다.
그리고 본 발명의 로드 밸런싱 방법은, 각 원천 서버로부터 수신되는 부하 정보를 이용하여 각 원천 서버의 부하 등급을 판단하여 임계 부하를 초과한 원천 서버가 있으면, 해당 원천 서버의 할당 이력으로 부하 초과의 원인이 되는 제1 객체를 판단하여 다른 원천 서버에 상기 제1 객체의 복사본을 저장시키는 제6 단계를 더 포함할 수 있다.
또한, 본 발명의 로드 밸런싱 방법은, 하나의 원천 서버 내에 2개 이상 배포되어 있는 객체가 있으면, 해당 원천 서버에 대한 상기 할당 이력 정보의 최근값과 각 객체 정보를 비교하여 최근에 할당된 기록이 없는 객체를 삭제하는 제7 단계를 더 포함할 수 있다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "…부", "…기", "모듈", "블록" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
이제 본 발명의 실시예에 따른 로드 밸런싱 시스템 및 방법에 대하여 도면을 참고로 하여 상세하게 설명한다.
우선, 도 1을 참조로 하여 본 발명의 실시 예에 따른 로드 밸런싱 시스템을설명한다. 도 1은 본 발명의 실시 예에 따른 로드 밸런싱 시스템의 네트워크 구성도이다.
도 1에 도시된 바와 같이 본 발명의 실시 예에 따른 로드 밸런싱 시스템은 월드와이드웹(WWW) 상에서 캐시 서버 및 원천 서버의 부하를 효과적으로 조정하는데 적합한 시스템으로, 클라이언트(100)와 인터페이스하는 요청 배정 장치(200), 복수의 캐시 클러스터(301, 302, ..., 30n)를 가지는 캐시 클러스터군(300)와, 복수의 원천서버 클러스터(401, 402, ..., 40n)을 가지는 원천서버 클러스터군(400)을 포함한다.
여기서, 로드 밸런싱 시스템에서 요청 배정 장치는 적어도 하나 이상이 구축되어 있으나, 설명의 편의를 위해 하나의 요청 배정 장치만 도시하였다.
클라이언트(100)는 자신이 원하는 객체(멀티미디어, 이미지 등의 각종 데이터)를 요청 배정 장치(200)에 접속하여 요청할 수 있는 사용자 단말로서, 요청 형식은 xml, http 및 사용자 정의 포맷을 사용할 수 있으며, 요청의 형태는 TCP/IP로 표현된다. 그리고 요청 내용은 ISP(Internet Service Provider, 객체를 서비스하는 업체)의 아이디, 송신자 정보(요청 클라이언트의 IP 어드레스), 요청 객체 정보(객체를 유니크하게 식별할 수 있는 정보), 수신자 정보(요청 배정 장치의 IP 어드레스, 포트) 등을 포함한다.
캐시 클러스터군(300)은 복수의 캐시 클러스터(301, 302, ..., 30n)를 포함하고 있으며, 각 캐시 클러스터(301, 302, ..., 30n)는 요청 배정 장치(200)에 연결되어 있다. 그리고 각 캐시 클러스터(301, 302, ..., 30n)는 복수의 캐시 서버를 포함하고 있다. 예컨데, 캐시 클러스터(301)는 복수의 캐시 서버(310, ..., 320)을 포함하고 있다. 각 캐시 서버(310, ..., 320)는 클라이언트(100)로 제공한 임의의 객체 또는 클라이언트와의 근거리 위치에 따른 정보 분산에 의해 저장된 임의의 객 체 등을 로컬 내에 저장하고 있다.
이러한 각 캐시 서버는 자신의 부하 상태 정보(CPU 사용율, I/O사용율, 메모리 사용율, 스토리지 여유 용량 등)를 서버 모니터(230)에 제공하여 서버 모니터(230)가 부하 정도를 알 수 있게 한다.
원천서버 클러스터군(400)은 복수의 원천서버 클러스터(401, 402, ..., 40n)를 포함하고 있으며, 각 원천서버 클러스터(401, 402, ..., 40n)는 복수의 원천서버를 포함한다. 예컨데, 원천서버 클러스터(401)는 복수의 원천서버(410, 420, ..., 430)를 포함한다. 각 원천서버(410, 420, ..., 430)는 고유의 객체를 저장하고 있으며, 캐시 서버 또는/및 요청 배정 장치(200)의 요구에 있는 경우에 저장된 특정 객체를 해당 캐시 서버에 제공한다.
이러한 각 원천서버 또한 자신의 부하 상태 정보를 서버 모니터(230)에 제공하여 자신의 부하 정도를 알게 한다.
마지막으로, 요청 배정 장치(200)는 클라이언트(100)로부터 수신되는 객체 전송 요청을 수신하면, 클라이언트(100)가 요청한 해당 객체를 제공할 수 있는 하나의 캐시 서버를 데이터베이스(240)의 할당 이력 테이블과 서버 부하 테이블을 이용하여 선택하고, 선택한 캐시 서버로 객체를 요청한다.
구체적으로, 요청 배정 장치(200)는 요청배정로직(210), 할당이력 모니터(220), 서버 모니터(230) 및 데이터베이스(240)를 포함한다.
데이터베이스(240)는 할당 이력 정보가 테이블값으로 저장된 할당 이력 테이블(도 4 참조), 각 캐시 서버의 부하 등급 정보가 테이블값으로 저장된 서버 부하 테이블(도 5 참조)와, 각 캐시 서버의 부하 임계치가 테이블값으로 저장된 임계부하 관리 테이블(도 6 참조)을 저장하고 있다.
상기 캐시 서버의 부하 등급 정보는 해당 캐시 서버의 현재 부하가 어느 정도인지를 나타낸 정보로서, 적어도 설정 임계치 이상인지 또는 이하인지를 구별할 수 있게 하는 정보이다. 여기서, 부하 등급 정보가 설정 임계치 이상이면 부하가 심하다고 판단하고, 설정 임계치 이하이면 서비스가 어렵다고 판단한다. 캐시 클러스터의 부하 등급 정보는 복수의 캐시 클러스터 중 부하가 작은 캐시 클러스터를 찾는데 이용된다. 할당 이력 정보는 특정 객체별로 매칭되어 있으며, 해당 객체를 처리한 캐시 서버들의 이력 정보 즉, 캐시 서버들에 대한 배정 정보이다. 할당 이력 정보는 요청 받은 객체를 포함할 가능성이 있는 캐시 서버를 찾는데 이용된다. 그리고 캐시 서버의 부하 정보는 해당 캐시 서버의 부하 정도를 나타낸 정보이다.
그리고 데이터베이스(240)는 클라이언트의 IP에 매칭된 ISP의 식별 정보를 포함할 수 있다. 이때 ISP는 클라이언트에 네트워크적으로 가까운 위치에 있는 ISP이다. 여기서 ISP의 식별정보는 캐시 서버, 원천 서버 등이 ISP에 분산되어 구축되어 있는 경우에 이용된다.
요청배정로직(210)은 클라이언트(100)로부터 수신된 객체 전송 요청의 전문을 분석하고, 캐시 서버의 부하 등급 정보와 시구간 내의 할당 이력 정보를 기초로 하여 복수의 캐시 서버 중 로드가 가장 작은 캐시 서버를 찾아 선택한다.
할당이력 모니터(220)는 요청배정로직(210)에서 사용될 할당 이력 정보를 제공하는 것으로, 시스템 내의 각 요청 배정 장치에 기록되어 있는 캐시서버 할당 이 력을 수집하고 이를 통합된 형태로 가공하여 전체 요청 배정 장치에 배포한다.
서버 모니터(230)는 각 캐시 서버와 각 원천서버의 부하 정보를 수집하고 이렇게 수집한 부하 상태 정보를 요청배정로직(210)에 제공한다. 이때 서버 모니터(230)는 각 캐시 서버의 부하 정보를 이용하여 각 캐시 서버의 부하 등급 정보를 만들어 제공한다.
여기서, 할당 이력 모니터(220)와 서버 모니터(2330)는 요청 배정 장치(200) 내에 포함될 수 있고, 필요에 따라서는 개별 장치로 독립적으로 구성할 수 있다.
한편, 각 클러스터를 주요 ISP(Internet Service Provider)에 분산하여 설치하고 사용자가 요청하는 객체를 사용자와 가장 가까운 ISP에 설치된 캐시 클러스터를 통해 서비스 받을 있도록 하는 경우에, 요청 배정 로직(210)은 사용자의 IP(Internet Protocol) 정보를 해석하고 사용자와 가장 가까운 ISP내의 캐시 클러스터로 요청을 전달하는 토폴로지(topology)에 따른 할당 기능을 가질 수 있다. 이는 사용자와 캐시 클러스터간의 네트워크 구간을 최소화 할 수 있어, 객체 전송 속도를 최대한으로 높일 수 있게 된다.
이상과 같이 구성된 본 발명의 실시 예에 따른 로드 밸런싱 시스템의 동작을 개략적으로 설명한다.
본 발명은 클라이언트(100)로부터 객체 전송 요청을 수신하면, 요청 배정 장치(200)에서 로컬에 있는 해당 객체의 이전 요청 배정 이력 정보, 캐시 서버의 부하 정보 및 사용자의 IP에 따른 ISP 정보(옵션 사항)를 기초로 캐시 클러스터 내에서 객체 전송용 캐시 서버로 선택하는 제 1 과정과, 선택된 요청 캐시 서버가 캐시 된 객체를 사용자에게 응답하거나, 객체가 캐시되어 있지 않다면 요청 배정 장치(200)에 질의하여 객체를 캐시하고 있는 피어(peer) 캐시 서버 혹은 원천 서버 정보를 얻어 객체의 복사본을 캐시하면서 사용자에게 응답하는 제 2 과정으로 이루어진다.
상기 제 1 과정은 요청 배정 장치(200)가 캐시 클러스터에서 캐시 서버를 선택하는 과정으로, 요청 배정 장치(200)는 클라이언트(100)로부터 객체 요청을 받으면 해당 객체를 캐시 서버로 할당했던 시구간 내의 이력으로 해당 객체를 캐시하고 있을 가능성이 있는 캐시 서버 목록을 얻고, 그 캐시 서버들의 부하 정보를 해당 객체를 응답했던 캐시 서버의 부하 상태를 체크한다.
이때 상기 캐시 서버의 부하 상태의 체크 결과 상기 목록 내의 캐시 서버 중 임계 부하 이하의 캐시 서버들이 있으면 요청 배정 장치(200)는 가장 부하가 낮은 캐시 서버로 사용자의 요청을 전달한다. 그러나 상기 목록 내의 캐시 서버 중에서 임계 부하 이하에 있는 캐시 서버가 없으면 요청 배정 장치(200)는 전체 캐시 클러스터 혹은 ISP 정보를 참조한 ISP내의 캐시 클러스터 내에서 임계 부하 이하의 캐시 서버 목록을 추출하고, 가장 낮은 부하 상태의 캐시 서버에 요청을 전달한다.
한편, 제1 과정에서 분산된 ISP에서 객체를 서비스하는 정책이 있으면 캐시 서버 목록 추출 시 사용자 IP 대역에 해당하는 ISP 정보를 이용하여 해당 ISP에 설치되어 있는 캐시 클러스터 내의 캐시 서버 목록을 추출하고 캐시 서버의 부하 상태를 체크하는 과정을 우선적으로 선행하고, 캐시 클러스터 내의 캐시 서버 목록에서 조건을 만족하는 캐시 서버가 없으면 전체 캐시 클러스터를 대상으로 조건을 만 족하는 캐시 서버를 찾는다.
그리고, 제 2 과정은 선택된 캐시 서버가 사용자에게 응답하는 과정으로, 피 캐시 서버는 요청 받은 객체를 로컬에서 검색한다. 객체가 로컬에 캐시되어 있으면 캐시 서버는 사용자에게 객체를 전송한다. 그러나 로컬에 캐시된 객체가 없으면 캐시 서버는 요청 배정 장치(200)에 객체를 캐시하고 있는 피어(Peer) 캐시 서버의 경로 정보를 요청한다. 이때 요청 배정 장치(200)는 할당 이력과 캐시 서버 부하를 고려하여 피어 캐시 서버를 선택한다. 캐시 서버는 응답 받은 피어 캐시 서버에서 객체를 검색하고, 객체를 찾으면 피어 캐시 서버에서 복사본을 획득한 후 사용자에게 객체를 전송한다. 반복된 피어 캐시 서버에서 객체 검색에 실패하면 캐시 서버는 요청 배정 장치에 객체를 보유한 원천 서버의 경로를 요청한 후 응답 받은 원천 서버 경로에서 객체를 찾아서 사용자에게 응답한다.
이하, 도 2와 도 3을 참조로 하여 클라이언트(100)가 객체를 요청하고 캐시 서버로부터 객체를 전송 받은 2가지의 객체 요청 방법을 설명한다.
우선, 도 2를 참조로 하여 2가지의 객체 요청 방법 중 하나를 설명한다. 도 2는 본 발명의 제1 실시 예에 따른 요청 배정 장치에서 캐시 서버로 객체를 요청하는 방법을 보인 도면이다.
요청 배정 장치(200)는 도 2에 도시된 바와 같이, 클라이언트(100)로부터 특정 객체에 대한 요청을 수신하면, 요청배정로직(210)에서 부하가 낮은 캐시 서버를 선택하고 선택한 캐시 서버로 직접 객체를 요청한다. 이때 요청배정로직(210)은 객체 요청시 객체의 식별 정보와 클라이언트의 식별 정보를 제공한다. (이하에서는 도 2에 도시된 객체 요청 방법을 직접 전달 방식이라 한다.)
그러면, 캐시 서버는 클라이언트(100)가 요청한 객체를 요청배정장치(200)에 제공하고, 요청배정장치(200)는 캐시 서버로부터 수신한 객체를 클라이언트(100)에게 제공한다.
다음으로, 2가지의 객체 요청 방법 중 다른 하나의 방법을 도 3을 참조로 설명한다. 도 3은 본 발명의 제2 실시 예에 따른 요청 배정 장치에서 캐시 서버로 객체를 요청하는 방법을 보인 도면이다.
요청 배정 장치(200)는 도 3에 도시된 바와 같이, 클라이언트(100)로부터 특정 객체에 대한 요청을 수신하면, 요청배정로직(210)에서 특정 캐시 서버를 선택하고 선택한 캐시 서버의 경로 정보(예; 캐시 서버의 IP 어드레스)를 클라이언트(100)에게 전송한다. 그러면 클라이언트(100)는 캐시 서버의 식별 정보를 이용하여 캐시 서버에 접속하고 캐시 서버에게 객체를 요청한다. 그러면 캐시 서버(200)는 이렇게 클라이언트(100)가 요청한 해당 객체를 클라이언트(100)에게 제공한다. (이하에서는 도 3에 도시된 객체 요청 방법을 클라이언트 전달 방식이라 한다.)
여기서, 객체 요청을 할당할 캐시 서버를 찾아낸 요청배정로직(210)은 요청 배정 이력에 객체 식별 정보 및 캐시 서버의 IP 어드레스를 로컬의 데이터베이스(240)에 기록을 하여 후속 요청시에 해당 기록을 참조할 수 있도록 한다. 그리고 ISP 정보는 인터넷 상에 캐시 서버가 분산되어 있는 경우에 사용될 수 있으나, 분산되어 있지 않은 경우에는 캐시 서버 정보를 얻는데 사용할 필요가 없으며, 정책상 ISP 정보를 배제할 수 있다.
이하에서는 요청배정로직(210)에서 이용하는 각종 정보를 도 4 내지 도 7을 참조로 하여 설명한다.
요청배정로직(210)에서 사용하는 정보는 할당 이력 정보, 부하 등급 정보, 각 서버의 임계값 정보, 객체 소유권 정보 등이 있다. 이러한 각 정보는 도 4 내지 도 5에 도시된 바와 같이 테이블로 관리된다.
도 4는 본 발명의 실시 예에 따른 요청 배정 로직에서 이용하는 할당 이력 테이블을 보인 도면이다. 도 4에 도시된 할당 이력 테이블(T1)은 요청 배정 장치(200)가 클라이언트(100)로부터 받은 객체 요청의 처리를 위해 이전에 캐시 서버에 할당한 이력을 기록하는 테이블이며, 객체 식별 정보, 캐시서버 식별 정보, 타임스탬프(time stamp)로 이루어진다. 할당 이력 테이블(T1)은 요청배정로직(210)이 요청된 해당 객체를 전송했던 캐시 서버들을 식별하는데 이용된다.
도 5는 본 발명의 실시 예에 따른 요청 배정 로직에서 이용하는 서버 부하 테이블을 보인 도면이다. 도 5에 도시된 서버 부하 테이블(T2)은 캐시 서버 및 원천 서버의 부하 등급을 기록하는 테이블이며, 서버 식별 정보, 부하등급, 타임스탬프(630)로 이루어진다. 서버 부하 테이블(T2)은 요청배정로직(210)이 캐시 서버를 선택하는데 필요한데 이용된다.
여기서, 부하 등급은 서버 모니터(230)에 의해 기록되는데, 서버 모니터(230)로 전송된 캐시 서버의 부하 상태 정보를 기반으로 부하 상태 정보에 포함된 각 항목의 값이 미치는 영향도에 가중치를 곱한 후 백분율로 환산하여 더한 값이다. 서버 부하 테이블(600)에 타임스탬프가 시구간 이전에 기록되어 있는 캐시 서버는 작동하지 않는 서버로 간주할 수 있으며, 이외에 기록된 캐시 서버는 요청배정로직(210)이 객체를 서비스할 수 있는 가능성이 있는 대상 캐시 서버로 간주한다.
도 6은 본 발명의 실시 예에 따른 요청 배정 로직에서 이용하는 임계부하 관리 테이블을 보인 도면이다. 도 6에 도시된 임계부하 관리테이블(T3)은 캐시 서버의 임계값을 정의하는 테이블이며, 관리포인트, 임계부하로 이루어진다. 임계부하 테이블(T3)은 요청배정로직(210)이 캐시 서버의 부하등급과 비교하여 해당 캐시 서버가 서비스에 투입될 수 있는지를 판단하는데 사용된다.
이하에서는 도 7을 참조로 하여 요청 배정 로직(210)의 동작을 보다 상세히설명한다. 도 7은 본 발명의 실시 예에 따른 요청 배정 로직에서 캐시 서버를 찾아내는 순서도이다.
요청 배정 장치(200)의 요청배정로직(210)은 클라이언트(100)로부터 객체 전송 요청을 수신하면(S701), 객체 전송 요청의 전문을 분석하여 파라미터 즉, 클라이언트(100)의 IP어드레스, 요청 객체 식별 정보를 추출한다(S702).
그런 다음 요청배정로직(210)은 데이터베이스(240) 내의 IP 어드레스, ISP 맵핑 테이블에서 네트워크 상에서 클라이언트(100)에 가까운 ISP 정보를 알아낸다(S703). 이때 요청배정로직(210)은 ISP 정보를 찾을 수 없으면 이후의 진행과정에서 ISP 정보를 무시하고 진행한다.
다음으로, 요청배정로직(210)은 할당 이력 테이블(T1)을 참조하여 시구간 내(530)에서 해당 객체를 전송했던 캐시 서버의 IP 어드레스 목록을 추출한 다(S704).
이때 요청배정로직(210)은 상기 S704 과정에서 캐시 서버의 IP 어드레스 목록이 있으면 해당 목록이 있는지를 판단한다(S705).
상기 판단 과정(S705)에서 IP 어드레스의 목록이 있는 경우에, 요청배정로직(210)은 서버 부하 테이블(T2)과 임계부하 관리 테이블(T3)을 참조하여 캐시 서버의 부하 상태와 임계부하를 비교하고, 전송 부하 등급 이하의 캐시 서버 가운데서 가장 부하 등급이 낮은 캐시 서버를 선택한다(S706).
그러나 상기 판단 과정(S705)에서 캐시 서버의 IP 어드레스 목록이 없으면, 요청배정로직(210)는 데이터베이스(240)에서 클라이언트(100)의 IP 에 매칭된 ISP의 식별 정보를 확인하고, 이 ISP에 설치되어 있는 캐시 클러스터 내의 캐시 서버의 IP 어드레스 목록을 추출한다. 그런 다음 요청배정로직(210)은 할당 이력 테이블, 부하 서버 테이블, 임계부하 관리 테이블을 참조하여 부하 등급 아래의 캐시 서버를 찾아내고 그 중 부하 등급이 가장 낮은 캐시 서버의 IP 어드레스를 추출한다(S710).
그리고 S710 과정을 수행하여도 캐시 서버의 IP 어드레스를 찾아내지 못하면 전체 캐시 서버에서 가장 부하 등급이 낮은 캐시 서버를 찾아낸다.
한편, 요청배정로직(210)은 상기 S706 과정에서 전송 부하 등급 이하의 캐시 서버가 존재하는지를 판단하는데(S707), 전송 부하 등급 이하의 캐시 서버가 존재하면 직접 전달 방식에 따라서 상기 선택한 캐시 서버에 클라이언트로부터 받은 요청을 전달하거나 또는, 클라이언트 전달 방식에 따라서 클라이언트에 캐시 서버의 경로정보(IP 어드레스, 객체 식별 정보)를 보낸다(S708).
반면에, 요청배정로직(210)은 상기 706 과정에서 전송 부하 등급 이하의 캐시 서버가 존재하지 않으면 S710 과정을 수행한다.
상기 S706 과정 또는 S710 과정이나 전체 캐시 서버 중에서 하나의 캐시 서버가 선택되면, 요청배정로직(210)은 직접 전달 방식이나 클라이언트 전달 방식 중 하나를 이용하여 클라이언트(100)의 객체 전송 요청을 해당 캐시 서버에 전달하고(S708), 이와 같은 캐시 서버에게 객체 요청을 한 이력 정보를 데이터베이스(240)에 기록한다(S709).
이하, 도 8을 참조로 하여 객체 전송 요청을 수신한 캐시 서버가 클라이언트로 객체를 전송하는 과정을 설명한다. 도 8은 본 발명의 실시 예에 따른 캐시 서버가 클라이언트로 객체를 전송하는 과정을 보인 순서도이다.
직접 전달 방식 또는 클라이언트 전달 방식으로 객체 전송 요청을 받은 캐시 서버는 시구간 내의 할당 이력에 의해 요청을 전달 받은 경우에도 캐시 서버의 교체 알고리즘에 의해 객체가 삭제되어 있을 수 있으며, 시구간 내에 할당 이력이 없어 부하 등급에 의해서 요청을 전달 받은 경우에도 로컬에 객체가 캐시되어 있을 수 있다.
따라서 캐시 서버는 객체 전송 요청을 받으면 로컬 캐시를 먼저 검색을 하여 로컬에 객체가 캐시되어 있는지를 검색하고(S801), 해당 객체가 캐시되어 있으면(S802), 클라이언트(100)에게 해당 객체를 제공한다(S811).
그런데 상기 판단 과정(S802)에서, 캐시 서버는 로컬에 해당 객체가 캐시되 어 있지 않다고 판단하면 요청 배정 장치(200)에 피어 캐시 서버의 식별 정보를 요청한다(S803).
그러면, 요청 배정 장치(200)는 상기 요청에 응해 부하 등급이 임계치 이하인 피어 캐시 서버를 추출하고 피어 캐시 서버의 식별 정보를 캐시 서버에 응답하며, 이에 캐시 서버는 해당 피어 캐시 서버에 접속하고(S804), 객체 전송을 요청한다(S805).
피어 캐시 서버가 해당 객체가 있으면(S806), 캐시 서버는 피어 캐시 서버로부터 해당 객체를 제공받아 로컬에 저장한 후(S810), 해당 객체를 클라이언트(100)에게 제공한다(S811).
만약, 피어 캐시 서버에 해당 객체가 없으면(S806) 캐시 서버는 요청 배정 장치(200)에 다른 피어 캐시 서버의 식별 정보를 요청하고, 해당 피어 캐시 서버에 접속하여 객체를 요청하는 S804 및 S805 과정을 해당 객체를 수신할 때까지 반복하며, 이와 같은 반복은 사전에 정해진 횟수만큼만 수행한다(S807).
만약 정해진 횟수에 따른 수행에도 피어 캐시 서버에서 객체를 찾지 못하면 캐시 서버는 요청 배정 장치(200)에 객체의 원 소유 서버인 원천서버의 식별정보를 요청하고(S808), 수신한 원천 서버의 식별 정보에 따라 해당 원천 서버에 객체 전송 요청 전문을 보낸다(S809).
그리고 캐시 서버는 원천 서버로부터 객체 전송 요청에 대한 응답으로 객체를 전송 받으면 해당 객체를 로컬에 저장한 후(S810), 동시에 클라이언트(100)에게 객체를 전송한다(S811).
이하, 도 9를 참조로 하여 본 발명의 실시 예에 따른 요청배정로직(210)과 할당 이력 모니터(220) 간의 동작을 설명한다. 도 9는 본 발명의 실시 예에 따른 요청 배정 로직과 할당 이력 모니터 간의 동작을 설명하기 위한 도면으로, 요청배정로직(210)이 객체를 전송할 캐시 서버를 선택하고, 그 이력인 할당 이력을 할당 이력 모니터(220)가 수집/통합하고 할당 이력을 전송하는 것을 보인 도면이다.
전술한 바와 같이, 다수의 요청을 수용하기 위해 요청 배정 장치(200)는 다수로 구성될 수 있고 따라서 요청 배정 로직(210a, 210b, 210c)도 다수로 구성된다. 각각의 요청배정로직은 자신이 관리한 할당 이력만을 가지고 있기 때문에 다른 요청배정로직이 할당한 이력을 알 수가 없다. 그러므로, 각 요청 배정 장치에 분산된 할당 이력을 통합하면 다른 요청배정로직이 수행한 할당 이력을 각 요청배정로직이 알 수 있으며, 따라서 자신이 할당하지 않았던 객체 요청도 이력 기반으로 캐시 서버에 할당 할 수 있게 된다.
할당 이력 모니터(220)는 흩어진 배정 로직을 취합하고 통합하고, 통합된 할당 이력을 다시 요청 배정 로직으로 전송한다. 클라이언트의 요청에 의해 캐시 서버를 선택하고 남기는 할당 이력은 객체 식별 정보, 할당 시각 및 캐시 서버 식별정보로 구성되어 있으며, 이 정보는 할당 이력이 남겨질 때 마다 요청 배정 로직이 각 요청 배정 장치 혹은 독립적 장치에 상주하는 할당 이력 모니터로 멀티캐스트 방식으로 전송한다.
할당 이력 모니터(220)는 수신된 할당 이력을 데이터베이스에 기록하고, 주기적으로 중복된 이력을 삭제하고 전체 할당 이력으로 통합하고, 통합된 할당 이력 을 주기적으로 요청 배정 장치로 보내며, 이에 요청 배정 장치는 데이터베이스에 통합된 할당 이력을 기록한다.
따라서 개별 요청 배정 장치는 나머지 요청 배정 장치가 객체를 캐시 서버로 할당한 이력을 알 수 있게 된다. 요청 배정 장치가 복수로 구성되어 있으면 할당 이력 모니터 상호간에 주기적으로 정보를 주고 받음으로써 전체 할당 이력이 통합될 수 있다.
또 다른 방법으로, 요청배정로직 간에 할당 이력을 멀티 캐스팅 방식으로 전송하여 요청배정로직이 수신한 정보를 할당 이력테이블에 기록하면 할당 이력이 통합되므로 요청 배정 로직은 전체 할당 이력을 참조할 수 있다.
이하, 도 10을 참조로 하여 본 발명의 실시 예에 따른 서버 모니터(230)와 요청배정로직(210) 간의 동작을 설명한다. 도 10은 본 발명의 실시 예에 따른 서버 모니터와 요청배정로직 간의 동작을 설명하기 위한 도면이다.
캐시 서버와 원천서버는 자신의 부하 상태 정보(CPU 사용율, I/O사용율, 메모리 사용율, 스토리지 여유 용량등)를 주기적으로 멀티캐스트 방식 혹은 유니캐스트 방식으로 서버 모니터(230)로 전송한다.
서버 모니터(230)는 수신한 서버 부하 상태 정보를 기반으로 캐시 서버 및 원천 서버의 부하 등급을 정하여 요청 배정 장치(200)에 제공한다. 이에 부하 상태 정보 및 부하 등급을 서버 모니터로부터 전송 받은 요청 배정 장치(200)는 그 정보를 데이터베이스(240) 내의 서버 부하 테이블(T2)에 기록한다.
여기서, 서버 모니터(230)가 복수로 구성되어 있으면 서버 모니터 상호간에 주기적으로 정보를 주고 받음으로써 캐시 서버 및 원천 서버의 부하 등급 정보가 통합될 수 있다.
한편, 본 발명은 여러 대의 캐시 서버가 캐시 미스(Cache Miss) 시에 원천 서버로 동시에 객체를 요청하게 되어 원천 서버가 고 부하 상태로의 진입하는 것을 방지한다.
이를 도 11을 참조로 하여 설명한다. 도 11은 본 발명의 실시 예에 따른 원천 서버의 과부하를 방지하기 위한 서버 모니터의 동작을 설명하기 위한 도면이다.
원천 서버가 캐시 서버들로부터 이미 다른 객체에 대한 요청을 처리하고 있어, 부하가 높은 상태일 때 캐시 미스된 다른 객체를 지속적으로 요청을 받으면 원천 서버는 가중되는 부하에 의해 응답 속도가 느려지거나, 응답 불능 상태에 빠질 수 있다. 원천 서버의 응답 불능 상태는 원천 서버가 가진 객체의 복사본을 요청하는 접속하는 캐시 서버가 사용자에게 응답을 할 수 없게 되는 것을 의미하게 된다.
따라서 원천 서버의 부하를 조정하여 고 부하 상태로 진입하는 것을 방지할 필요가 있다. 이를 달성하기 위해 본 발명은 원천 서버가 요청에 의해 부하가 높아지면 부하를 일으키는 원인이 되는 피 요청 객체를 다른 원천 서버에 복사하여 후속 요청을 복사본을 가진 원천 서버가 처리토록 하여 부하가 분산되도록 한다.
이를 위해, 부하가 높아지는 원천 서버 와 해당 원천 서버에 부하를 일으키는 객체를 파악하는 과정이 수행된다.
즉, 원천 서버는 주기적으로 부하 상태 정보를 서버 모니터(230)에게 전송하고, 서버 모니터(230)가 원천 서버의 부하상태가 임계값을 넘어가는 것을 감지하면 할당 이력 모니터(220)로부터 원천 서버에 부하를 일으키는 객체를 파악한다. 할당 이력 모니터(220)로부터 부하의 원인이 되는 객체를 파악할 수 있는 이유는 캐시 서버가 캐시 미스(Miss) 발생시 원천 서버에 객체를 요청하기 위해서는 요청 배정 장치(200)에 질의한 후에 그 응답으로 원천 서버에 객체를 획득하게 되고 할당 이력은 그 이력을 수집/통합하기 때문에 객체가 어떠한 것인지를 알 수 있게 된다.
다음으로, 서버 모니터(230)가 다른 원천 서버가 복사본을 획득하도록 통지를 보내는 과정이 수행된다. 즉, 서버 모니터(230)는 원천 서버의 목록에서 저 부하 상태의 원천 서버를 파악할 수 있다. 따라서 가장 부하가 적은 상태에 있는 원천 서버가 고 부하 상태의 원천 서버로부터 부하를 분산 받는 것이 효율적이므로, 서버 모니터(230)는 가장 부하가 적은 상태의 원천 서버에 고 부하 상태의 원천 서버에서 부하를 일으키는 객체의 복사본을 획득하라는 통지를 보낸다.
마지막으로, 저 부하 상태의 원천 서버가 복사본을 획득하고, 후속 요청을 처리하는 과정이 수행된다. 즉, 서버 모니터(230)로부터 통지를 받은 원천 서버는 고 부하 상태의 원천 서버에게 객체 요청을 하여, 응답으로 전송된 객체를 로컬에 저장한다. 객체의 저장이 완료되면 저 부하 원천 서버는 요청 배정 장치(200)에게 객체의 소유권이 자신한테도 있음을 일린다. 이후 동일한 객체에 대해 캐시 미스가 발생한 캐시 서버가 요청 배정 장치(200)에 해당 객체의 경로를 질의하면, 요청 배정 장치(200)는 저 부하의 원천 서버의 경로를 캐시 서버에 응답하므로, 후속 요청은 저 부하 원천 서버로 전달되게 된다.
이에 따라, 원천 서버의 부하를 임계값 이상으로 만드는 객체는 지속적으로 원천 서버들로 분산되어 상기 객체에 대한 후속 요청은 저 부하 상태의 원천 서버가 처리하게 되므로 원천 서버의 과부하를 막을 수 있다.
또한 원천 서버에 분산된 객체를 어느 순간에는 정리할 필요가 있다. 객체는 요청이 폭주하여 원천 서버 내에 분산되었지만 요청이 없을 시에는 원천 서버에 1개만 존재하여 저장 공간을 확보할 필요가 있기 때문이다.
이러한 원천 서버에 분산된 객체를 정리하기 위하여 스토리지 모니터(미도시)를 사용할 수 있다. 스토리지 모니터는 요청 배정 장치에 있는 소유권 정보를 주기적으로 모니터링 하여 원천 서버 내에 2개 이상 배포되어 있는 객체 목록을 추출한 후, 할당 이력 모니터의 최근 할당 이력과 비교하여 최근에 할당된 기록이 없는 객체는 삭제토록 원천 서버에 통지를 보낸다. 삭제 시 원천 서버에는 1개의 객체는 남아 있어야 하므로 스토리지 매니저는 스토리지 용량이 가장 적게 남은 원천 서버로부터 객체를 삭제하여 마지막 1개만을 남겨둔다. 그리고 스토리지 모니터는 원천 서버로부터 삭제되었음을 통보 받으면 요청 배정 장치(200)에 해당 객체의 소유권 변경 통지를 보내 소유권 정보도 삭제한다.
한편, 상술한 원천 서버의 부하 분산을 위해 원천 서버로부터 캐시 클러스터로 객체를 사전에 분산시키는 방법을 고려할 수 있다. 전술한 바와 같이 서버 모니터(230)는 원천 서버들의 부하를 알 수 있으며, 또한 캐시 서버의 부하도 알 수 있다. 그러므로 서버 모니터(230)는 미리 저 부하 상태의 캐시 서버에게 원천 서버로부터의 복사본 획득 통지를 보내어 캐시 서버가 원천 서버로부터 객체를 획득하게 한 후 사용자로부터의 후속 객체 전송 요청에 응답할 수 있다. 또한 서버 모니 터(230)는 캐시 서버에 통지를 보낼 때 함께, 할당 이력에도 할당 이력을 추가하라는 통지를 보내 요청 배정 장치(200)가 해당 캐시 서버에 객체 요청을 할당한 것과 같이 인식토록 하여 후속 요청이 복사본을 획득한 캐시 서버로 전달될 수 있도록 한다. 캐시 서버는 캐시 공간을 확보하기 위해 자체 교체 알고리즘을 사용하므로 원천 서버와 같이 스토리지 모니터의 간섭은 필요하지 않다.
본 발명의 실시예는 이상에서 설명한 장치 및/또는 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하기 위한 프로그램, 그 프로그램이 기록된 기록 매체 등을 통해 구현될 수도 있으며, 이러한 구현은 앞서 설명한 실시예의 기재로부터 본 발명이 속하는 기술분야의 전문가라면 쉽게 구현할 수 있는 것이다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.
본 발명의 실시 예에 따르면, 캐시된 객체가 있을 확률이 높은 캐시 서버에 요청을 전달하므로 캐시 히트를 높일 수 있고, 동일한 객체가 캐시 클러스터 내에 고르게 분산되는 것을 막아서 캐시 클러스터 전체에 더 많은 종류의 객체가 캐시 될 수 있게 한다.
본 발명은 캐시 서버의 고 부하 시 피어 캐시 서버가 복사본을 이용해 획득 하고 후속 요청을 처리하므로 부하 분산 효과가 있게 된다.
본 발명은 히트가 높아짐으로써 로컬 네트워크의 부하 낮출 수 있다.
상기의 효과는 몇몇의 상황에서 극적인 효과를 낼 수 있는데, 일례로 객체에 대한 요청이 캐시 클러스터의 한계 이상으로 갑작스럽게 폭주할 경우이다. 상기에 기술한 바와 같이 로드 밸런스 장치와 DNS등은 고 부하 상태의 캐시 서버에 부하 상태에 대한 고려 없이 요청을 전달한다. 따라서 캐시 서버는 한계를 넘는 부하 상태에서도 지속적으로 요청을 받게 되고, 결국 멈추거나 다운되는 현상이 발생하게 된다. 로드 밸런스 장치는 멈춘 캐시 서버에 요청 전달하지는 않으나, 나머지 캐시 서버에 요청을 보내게 되므로 캐서 서버 다운이 도미노 현상을 이루어 모든 캐시 서버가 다운된다.
DNS는 캐시 서버의 작동 상태를 알지 못하므로 멈춘 서버에도 요청을 보낸다. 요청 배정 장치는 캐시 클러스터의 보호할 수 있는데, 캐시 클러스터 전체가 전송 임계 부하를 넘으면 클라이언트 전달 방식에서는 사용자에게 캐시 서버의 경로를 전송하지 않고, 직접 전달 방식에서는 요청을 전송하지 않는다. 요청 배정 장치는 캐시 클러스터가 기존의 인입 요청을 순차적으로 처리하여 부하가 낮아지는 순간 사용자에게 캐시 서버 경로를 전송하거나, 캐시 클러스터에 요청을 전달하는 것을 재개한다.
따라서 요청의 폭주 상황에서 캐시 서버로 전달한 요청은 처리를 보장하고 신규 인입 요청을 거절함으로써 서비스의 안정성과 캐시 클러스터를 보호할 수 있게 된다.
또한 요청 배정 장치는 사용자의 IP를 분석하여 사용자와 가까운 ISP내의 캐시 클러스터 내에서 응답을 할 수 있도록 한다. 이를 위해 요청 배정 장치(요청 배정 로직)는 IP와 ISP간의 매핑 정보를 포함한다. 요청 배정 장치는 요청 접수 후 사용자 IP로 사용자와 가까운 ISP 정보를 알게 되고 따라서 사용자의 가까운 ISP에 설치된 캐시 클러스터내의 캐시 서버를 선택할 수 있으므로 캐시 서버와 사용자에 이르는 객체 전송 경로가 ISP망간의 상이한 네트워크를 타지 않는 효과가 있어서 사용자는 보다 빠른 응답을 받을 수 있게 된다.

Claims (14)

  1. 복수의 원천서버, 상기 복수의 원천서버 중 적어도 하나의 원천서버에 저장된 객체의 복사본을 저장하고 있는 복수의 캐시 서버, 클라이언트의 객체 전송 요청에 따라 해당 객체를 전송할 캐시 서버를 선택하는 요청 배정 장치를 포함하는 로드 밸런싱 시스템의 상기 요청 배정 장치에 있어서,
    클라이언트로부터 수신된 객체 전송 요청에 따라 각 캐시 서버의 부하 등급 정보와 할당 이력 정보를 기초로 하여 복수의 캐시 서버 중 임계 부하 이하인 하나의 캐시 서버를 선택하고 선택한 상기 캐시 서버로 객체 전송 요청을 하며, 전송 요청한 객체와 선택한 상기 캐시 서버의 식별 정보를 포함하는 할당 이력 정보를 생성하는 복수의 요청 배정 로직;
    상기 각 요청 배정 로직에서 생성한 할당 이력 정보를 수집하는 할당이력 모니터;
    상기 각 캐시 서버와 상기 각 원천서버로부터 각각의 부하 정보를 수집하는 서버 모니터; 그리고
    상기 할당이력 모니터에서 수집한 각 요청 배정 로직별 상기 할당 이력 정보와, 상기 수집 모니터에서 수집한 각 캐시 서버와 각 원천서버별 부하 정보 및, 캐시 서버의 부하 임계값을 정의한 정보를 저장하고 있는 데이터베이스를 포함하는 로드 밸런싱 시스템의 요청 배정 장치.
  2. 제1항에 있어서,
    상기 요청 배정 로직에 있는 각 객체의 소유권 정보를 주기적으로 모니터링하여, 각 원천 서버 내에 2개 이상 배포되어 있는 객체를 추출한 후, 상기 할당 이력 모니터의 최근 할당 이력과 비교하여 최근에 할당된 기록이 없는 객체를 삭제하도록 해당 원천 서버에게 명령하는 스토리지 모니터를 더 포함하는 로드 밸런싱 시스템의 요청 배정 장치.
  3. 제1항 또는 제2항에 있어서,
    상기 데이터베이스는 클라이언트의 IP에 매칭된 ISP(Internet Service Provider)의 식별 정보를 더 포함하며, 상기 요청 배정 로직은 상기 하나의 캐시 서버 선택시에 우선적으로 상기 객체 전송을 요청한 클라이언트의 IP에 매칭된 ISP 내의 캐시 클러스터에서 수행할 수 있도록 하는 밸런싱 시스템의 요청 배정 장치.
  4. 제3항에 있어서,
    상기 요청 배정 로직은 상기 ISP 내에서 임계 부하 이하인 하나의 캐시 서버를 찾지 못하는 경우에, 상기 클라이언트의 IP 정보를 배제하고 전체 캐시 클러스터군에서 하나의 캐시 서버를 선택하는 밸런싱 시스템의 요청 배정 장치.
  5. 제4항에 있어서,
    상기 할당 이력 정보와 상기 부하 등급 정보 중 적어도 하나는 시구간(time stamp) 정보를 가지며, 상기 요청 배정 로직은 상기 객체 전송 요청을 수신한 제1 시간을 상기 시구간 정보와 비교하여 상기 제1 시간이 상기 유효 시구간 내에 있는 캐시 서버 중에서 하나를 선택하는 로드 밸런싱 시스템의 요청 배정 장치.
  6. 제5항에 있어서,
    상기 요청 배정 로직은,
    상기 캐시 서버로부터 객체를 제공받을 피어 캐시 서버나 원천 서버에 대한 식별 정보의 요청을 수신하면, 각 캐시 서버 또는 각 원천 서버의 부하 등급 정보와 할당 이력 정보를 기초로 하여 임계 부하 이하인 하나의 캐시 서버 또는 원천 서버를 선택하고 선택한 상기 캐시 서버 또는 원천 서버의 식별 정보를 응답 정보로 제공하는 로드 밸런싱 시스템의 요청 배정 장치.
  7. 제6항에 있어서,
    상기 서버 모니터는 각 원천 서버로부터 수신되는 부하 정보를 이용하여 각 원천 서버의 부하 등급을 판단하고, 판단한 부하 등급이 임계 부하를 초과하면 상기 할당 이력 모니터로부터 해당 원천 서버의 할당 이력으로 부하 초과의 원인이 되는 제1 객체를 판단하여 다른 원천 서버에 상기 제1 객체의 복사본을 저장시키며,
    이때 상기 제1 객체의 복사본을 저장한 원천 서버는 상기 제1 객체에 대한 소유권이 자신에게 있음을 상기 요청 배정 로직에게 알리는 로드 밸런싱 시스템의 요청 배정 장치.
  8. 복수의 원천서버, 상기 복수의 원천서버 중 적어도 하나의 원천서버에 저장된 객체의 복사본을 저장하고 있는 복수의 캐시 서버, 클라이언트의 객체 전송 요청에 따라 해당 객체를 전송할 캐시 서버를 선택하는 적어도 하나 이상의 요청 배정 장치를 포함하는 로드 밸런싱 시스템의 로드 밸런싱 방법에 있어서,
    상기 각 캐시 서버와 상기 각 원천서버로부터 각각의 부하 정보를 수집하는 제1 단계;
    상기 각 요청 배정 장치로부터 할당 이력 정보를 수집하는 제2 단계;
    클라이언트로부터 수신된 객체 전송 요청에 따라 각 캐시 서버의 부하 등급 정보와 할당 이력 정보를 기초로 하여 복수의 캐시 서버 중 임계 부하 이하인 하나의 캐시 서버를 선택하는 제3 단계;
    상기 선택한 캐시 서버로 객체 전송 요청이 전송되도록 하는 제4 단계; 그리고
    전송 요청한 객체와 선택한 상기 캐시 서버의 식별 정보를 포함하는 할당 이력 정보를 생성하는 제5 단계를 포함하는 로드 밸런싱 방법
  9. 제8항에 있어서,
    상기 제4 단계는 상기 요청 배정 장치에서 상기 선택한 캐시 서버로 객체 전송을 요청하는 로드 밸런싱 방법.
  10. 제8항에 있어서,
    상기 선택한 상기 캐시 서버의 식별 정보를 상기 클라이언트에 응답 정보로 제공하여 상기 클라이언트가 상기 캐시 서버에 직접 객체를 요청하도록 하는 로드 밸런싱 방법.
  11. 제8항 또는 제9항에 있어서,
    각 원천 서버로부터 수신되는 부하 정보를 이용하여 각 원천 서버의 부하 등급을 판단하여 임계 부하를 초과한 원천 서버가 있으면, 해당 원천 서버의 할당 이력으로 부하 초과의 원인이 되는 제1 객체를 판단하여 다른 원천 서버에 상기 제1 객체의 복사본을 저장시키는 제6 단계를 더 포함하는 로드 밸런싱 방법.
  12. 제11항에 있어서,
    상기 제3 단계는
    상기 캐시 서버의 선택시에 우선적으로 상기 객체 전송 요청한 클라이언트의 IP에 매칭된 ISP(Internet Service Provider) 내의 캐시 클러스터에서 수행하되, 조건에 맞는 캐시 서버가 없으면 전체 캐시 클러스터를 대상으로 수행하는 로드 밸런싱 방법.
  13. 제12항에 있어서,
    상기 할당 이력 정보와 상기 부하 등급 정보 중 적어도 하나는 시구간(time stamp) 정보를 가지며, 상기 제3 단계는 상기 객체 전송 요청을 수신한 제1 시간을 상기 시구간 정보와 비교하여 상기 제1 시간이 상기 유효 시구간 내에 있는 캐시 서버 중에서 하나를 선택하는 로드 밸런싱 시스템의 요청 배정 장치.
  14. 제13항에 있어서,
    하나의 원천 서버 내에 2개 이상 배포되어 있는 객체가 있으면, 해당 원천 서버에 대한 상기 할당 이력 정보의 최근값과 각 객체 정보를 비교하여 최근에 할당된 기록이 없는 객체를 삭제하는 제7 단계를 더 포함하는 로드 밸런싱 방법.
KR1020070022776A 2007-03-08 2007-03-08 로드 밸런싱 시스템의 요청 배정 장치 및 로드 밸런싱 방법 KR100892885B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070022776A KR100892885B1 (ko) 2007-03-08 2007-03-08 로드 밸런싱 시스템의 요청 배정 장치 및 로드 밸런싱 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070022776A KR100892885B1 (ko) 2007-03-08 2007-03-08 로드 밸런싱 시스템의 요청 배정 장치 및 로드 밸런싱 방법

Publications (2)

Publication Number Publication Date
KR20080082227A true KR20080082227A (ko) 2008-09-11
KR100892885B1 KR100892885B1 (ko) 2009-04-09

Family

ID=40021646

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070022776A KR100892885B1 (ko) 2007-03-08 2007-03-08 로드 밸런싱 시스템의 요청 배정 장치 및 로드 밸런싱 방법

Country Status (1)

Country Link
KR (1) KR100892885B1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011002245A2 (ko) * 2009-07-02 2011-01-06 (주)에임투지 요청배정장치를 이용한 상호협력캐시 방법 및 컨텐츠 제공 방법
KR101135032B1 (ko) * 2008-10-20 2012-04-19 에스케이플래닛 주식회사 캐시서버 및 셋탑박스 데이터 저장소를 이용한 컨텐츠 전송시스템 및 방법
KR101218828B1 (ko) * 2009-07-02 2013-01-04 (주)에임투지 요청배정장치를 이용한 상호협력캐시 방법 및 컨텐츠 제공 방법
CN104699628A (zh) * 2015-03-11 2015-06-10 小米科技有限责任公司 缓存预存储的方法及装置
CN113709054A (zh) * 2021-07-16 2021-11-26 济南浪潮数据技术有限公司 一种基于keepalived的LVS系统部署调节方法、装置及系统

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102567971B1 (ko) * 2016-11-10 2023-08-17 삼성전자주식회사 스토리지 어레이를 공유하는 다수의 서버 노드들을 포함하는 메모리 시스템 및 그 동작 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6438652B1 (en) * 1998-10-09 2002-08-20 International Business Machines Corporation Load balancing cooperating cache servers by shifting forwarded request
KR20010106061A (ko) * 2000-05-06 2001-11-29 최건 분산 인터넷 캐싱 시스템
JP4025034B2 (ja) * 2001-07-26 2007-12-19 日本電信電話株式会社 インターネットにおける情報キャッシュ方法
JP2003228534A (ja) * 2001-11-30 2003-08-15 Ntt Docomo Inc 情報配信システム、記述データ配信装置、コンテンツ位置管理装置、データ変換装置、受信端末装置、情報配信方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101135032B1 (ko) * 2008-10-20 2012-04-19 에스케이플래닛 주식회사 캐시서버 및 셋탑박스 데이터 저장소를 이용한 컨텐츠 전송시스템 및 방법
WO2011002245A2 (ko) * 2009-07-02 2011-01-06 (주)에임투지 요청배정장치를 이용한 상호협력캐시 방법 및 컨텐츠 제공 방법
WO2011002245A3 (ko) * 2009-07-02 2011-04-14 (주)에임투지 요청배정장치를 이용한 상호협력캐시 방법 및 컨텐츠 제공 방법
KR101218828B1 (ko) * 2009-07-02 2013-01-04 (주)에임투지 요청배정장치를 이용한 상호협력캐시 방법 및 컨텐츠 제공 방법
US8959225B2 (en) 2009-07-02 2015-02-17 Aim To G Co., Ltd. Cooperative caching method and contents providing method using request apportioning device
CN104699628A (zh) * 2015-03-11 2015-06-10 小米科技有限责任公司 缓存预存储的方法及装置
CN104699628B (zh) * 2015-03-11 2018-07-27 小米科技有限责任公司 缓存预存储的方法及装置
CN113709054A (zh) * 2021-07-16 2021-11-26 济南浪潮数据技术有限公司 一种基于keepalived的LVS系统部署调节方法、装置及系统

Also Published As

Publication number Publication date
KR100892885B1 (ko) 2009-04-09

Similar Documents

Publication Publication Date Title
US10778801B2 (en) Content delivery network architecture with edge proxy
KR101218828B1 (ko) 요청배정장치를 이용한 상호협력캐시 방법 및 컨텐츠 제공 방법
US9407699B2 (en) Content management
US8463788B2 (en) Balancing caching load in a peer-to-peer based network file system
KR101570892B1 (ko) 로컬 호스팅된 캐시 및 암호 해시 함수를 사용하여 네트워크 트래픽을 감소시키는 방법 및 시스템
KR100892885B1 (ko) 로드 밸런싱 시스템의 요청 배정 장치 및 로드 밸런싱 방법
US6973536B1 (en) Self-adaptive hybrid cache
KR100475668B1 (ko) 그리드 네트워크에서 그리드 자원에 대한 정보를 제공하는장치 및 방법과 그 프로세스를 기록한 컴퓨터 판독가능한기록매체
KR20050021751A (ko) 클라이언트 기반 분산 웹 캐싱 시스템의 구성 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
N231 Notification of change of applicant
N231 Notification of change of applicant
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
E902 Notification of reason for refusal
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130403

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140403

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160401

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170403

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180403

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20190401

Year of fee payment: 11