KR100907946B1 - 동적 해싱 기반의 부하 분산 시스템 및 그 방법 - Google Patents

동적 해싱 기반의 부하 분산 시스템 및 그 방법 Download PDF

Info

Publication number
KR100907946B1
KR100907946B1 KR1020070076426A KR20070076426A KR100907946B1 KR 100907946 B1 KR100907946 B1 KR 100907946B1 KR 1020070076426 A KR1020070076426 A KR 1020070076426A KR 20070076426 A KR20070076426 A KR 20070076426A KR 100907946 B1 KR100907946 B1 KR 100907946B1
Authority
KR
South Korea
Prior art keywords
server
hashing
value
user
load balancing
Prior art date
Application number
KR1020070076426A
Other languages
English (en)
Other versions
KR20090012523A (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 KR1020070076426A priority Critical patent/KR100907946B1/ko
Publication of KR20090012523A publication Critical patent/KR20090012523A/ko
Application granted granted Critical
Publication of KR100907946B1 publication Critical patent/KR100907946B1/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
    • H04L67/1023Server selection for load balancing based on a hash applied to IP addresses or costs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing

Landscapes

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

Abstract

본 발명은 종래 부하분산기의 해싱알고리즘의 기술상의 문제점을 해결하기 위해서 안출된 것으로서, 해싱 알고리즘의 장점인 지정된 소량의 메모리만으로 무한대의 세션 처리 능력과 고속의 처리속도를 그대로 취하면서, 세션 기반의 알고리즘들의 장점인 부하분산의 정교함과 서버의 추가/삭제 또는 서버 과부하시의 재분배로 해싱값이 변화하게 됨에 따라 사용자와 서버간의 연결성을 보장하지 못하는 문제점과 캐싱 효과가 저하되는 문제점을 해결하며, 이를 통하여 낮은 사양의 소형 시스템에서도 고성능의 기능을 제공하는 동적 해싱 기반의 부하 분산 시스템 및 그 방법에 관한 것이다.
본 발명은 부하분산을 위하여 서버들 앞단에 설치되어 서버로 향하는 사용자(101)의 요청을 수신하여 서버에 전달하며; 상기 시스템은 서버의 수보다 많은 해싱값을 가지며; 해싱값은 각각의 서버에게 적절하게 분배가 되며; 사용자(101)의 요청 중 일부 정보를 사용하여 해싱값을 계산하며; 해당 해싱값을 가지고 있는 서버에게 사용자(101)의 요청을 전달하며; 서버의 추가 시에 각각의 서버가 가지고 있는 해싱값의 일부를 추가된 서버에 할당하여 부하분산을 수행하며; 서버의 삭제/장애 시에 해당 서버가 가지고 있는 해싱값을 타 서버에 분배하며; 특정 서버에 과도한 요청이 집중한 경우에 해싱값의 일부를 다른 서버로 이동하여 부하를 적절히 분산하며; 특정 해싱값에 과도한 부하가 집중한 경우 이를 다수의 서버로 부하분산하며; 상기와 같은 일련의 작업이 스케줄링에 의해 시간 간격을 두고 처리함으로써 사용자(101)의 요청이 해싱값을 가지고 있는 서버에서 타 서버로 자연스럽게 넘어가도록 하며; 사용자(101)의 요청과 서버간의 연결성 보장(stickiness)을 위하여 타 서버로 넘기는 해싱값에 대해서 사용자(101)의 세션을 파악하여 일정시간동안 사용자(101) 요청과 서버간의 연결 관계를 유지하며 그 외의 신규 세션들에 대해서만 해싱 기반의 부하분산을 적용하는 것을 포함하는 시스템이다.
부하분산기, 서버 추가, 서버 삭제/장애, 과부하, 동적 해싱, 스케줄, 세션

Description

동적 해싱 기반의 부하 분산 시스템 및 그 방법 {A Dynamic Hashing based Load Balancing System and Its Method}
본 발명은 해싱 기반의 부하 분산기에 관한 것으로서, 보다 상세하게는 해싱 알고리즘의 장점인 낮은 메모리 사용률과 무한대의 세션 처리 능력 그리고 고속의 처리속도를 그대로 유지하면서 세션 기반의 알고리즘들의 장점인 부하분산의 정교함과 서버의 추가/삭제/과부하시 해싱함수의 변화로 인하여 사용자와 서버간의 연결성을 보장하며 캐싱 효과를 향상시키며, 그에 따라 단순한 부하분산 알고리즘을 통하여 효율적인 부하분산기를 제공하며 이를 통해 소형 시스템에도 고성능의 기능을 제공하는 동적 해싱 기반의 부하 분산 시스템 및 그 방법에 관한 것이다.
일반적으로 부하분산기는 IP 주소와 포트를 기반으로 부하분산을 하는 Layer 4 방식과 HTTP의 URL, Cookie 등의 어플리케이션 내의 식별자를 주소로 부하분산을 하는 Layer 7방식이 존재한다. 부하분산기들은 어느 정보를 주소로 활용하느냐에 상관없이 모두 동일한 부하분산 알고리즘을 사용하는데 대표적인 기술로는 Round-Robin, Least Connection, 응답시간에 기반한 부하분산기법, 서버의 상태나 부하 정보를 이용한 부하분산 기법들을 사용한다.
도 1은 종래의 부하 분산기가 사용되는 일반적인 상황을 나타내는 블록도이다. 일반적인 부하분산 기술들은 대부분 사용자(101) 혹은 사용자(101)의 요청과 서버1,2,3,(104,105,106)간의 연결을 서버에 적절하게 분산하는 기법으로서, 이러한 연결들을 각각 관리하기 위해서 사용하는 최소 단위로 세션(session) 혹은 커넥션(connection)이라는 단위를 사용한다. 이러한 알고리즘들은 부하분산기내에 세션 당 일정크기의 메모리를 할당하여 사용하므로 사용자(101) 또는 사용자(101)의 요청이 증가하는 경우 세션수가 늘어나 부하분산기의 메모리 사용량이 비례적으로 증가하는 문제를 가지며 수많은 세션을 고속으로 찾기 위하여 해싱 기법을 도입하여 세션을 찾는 방법을 사용한다.
그러나 이러한 세션기반 부하분산 방식은 유한한 해싱 테이블 내에서 무한한 세션을 찾는 방식으로 많은 사용자(101)로 인하여 세션의 수가 늘어날 경우 이에 비례하여 검색시간이 늘어나 부하분산기 처리속도에 영향을 주며, 세션의 한계치가 유한한 메모리의 크기에 비례한다는 단점을 가진다.
또한, 부하분산기(103)들은 어플리케이션 서버1,2,3(104,105,106)들 간에 사용자(101)의 접속이나 식별정보를 공유할 수 없는 경우 서버1,2,3(104,105,106)들 간의 부하분산과 함께 사용자(101)와 서버1,2,3(104,105,106)간의 연결보장성(stickiness)을 유지해야한다. 이 경우에는 주로 사용자(101) 측에서 서버에 접속을 시도하거나 정보를 요청할 때 자신의 식별 정보를 첨부하여 보내야 하며, 부하분산기(103)는 상기 식별정보를 일정시간 동안 보관하여야 하며, 일정 시간 내에 상기 식별정보를 가진 요청이 들어오는 경우 이를 동일한 서버로 전달하여야 한다. 만일 이러한 상황에서 연결성을 보장하지 못하는 경우에는 정상적으로 어플리케이션을 사용하지 못하는 문제가 발생한다. 이것이 세션기반 부하분산 알고리즘이 주로 사용되는 이유 중의 하나이다.
세션기반 부하분산 알고리즘에 속하지 않는 해싱 알고리즘은 부하분산 대상 서버 수에 기반한 해싱함수를 사용하며 세션을 기록하지 않고 단지 해싱함수에서 나오는 값을 부하분산 결과로 판단하고 해당 서버로 사용자(101)의 요청을 전달한다. 또한, 상기 방식에 있어서 사용자(101)와 사용자(101)의 요청을 출발지 IP주소, 출발지 IP주소와 포트(port), HTTP의 Cookie, URL, URI 등의 정보를 해싱함수를 통하여 해싱값으로 변환하여 서버를 선택한다.
해싱 알고리즘을 이용하는 종래 서버 부하 분산방식을 예를 들어 들어 설명하면 다음과 같다.
서버 그룹내 서버 대수가 6대, 서버 0, 서버1, .. 서버 5가 있다고 가정하자. 사용자의 요청 패킷내 출발지 IP 주소값에 모듈로 6을 적용하여 그 결과값 (0~5)으로 해당 서버를 결정한다.
해싱기반 부하분산 알고리즘은 세션기반 부하분산 알고리즘과 달리 해싱함수를 이용하기 때문에 서버의 부하정보를 전혀 고려하지 않으며 사용자(101) 및 사용자(101)의 요청 각각에 대해서 세션을 할당하지 않기 때문에 외부의 사용자(101)나 사용자(101)의 요청수가 늘어나도 부하분산기내 메모리의 증가가 없어 무한대의 사용자(101) 또는 사용자(101)의 요청을 처리할 수 있는 장점이 있다.
또한, 사용자(101) 또는 사용자(101)의 요청이 특정 서버로만 전달되는 점에 있어서 연결보장성(stickiness)과 서버의 캐싱 효과가 증가 하는 효과를 얻을 수 있다.
하지만 해싱값으로 해당 서버(104)(105)(106)가 결정되기 때문에 부하분산이 정교하게 되지 않으며, 그리고 해싱함수의 입력 값을 출발지 IP 주소만을 사용하는 경우 프락시나 SNAT(Source Network Address Translation)을 통해 들어온 사용자(101)들의 요청은 하나의 사용자(101)로 보여 특정 서버로 부하가 집중되는 현상을 보인다. 또한 서버의 추가/삭제/장애 현상이 발생하였을 때, 서버수에 기반한 해싱함수를 사용하는 알고리즘은 사용가능한 서버수 변경으로 인해 해싱함수가 변경되어 사용자의 요청과 서버와의 연결관계가 바뀌게 되어 결과적으로 사용자(101) 또는 사용자(101)와 서버간의 연결보장성(stickiness)을 보장하지 못하는 문제점이 있으며 이는 서버 어플리케이션의 특성에 따라서 접속이 끊기거나 어플리케이션이 오동작하는 문제점을 가질 수 있다.
해싱기반 알고리즘을 사용하는 경우 서버그룹중 임의의 서버가 과부하 상태가 되어 그 서버가 담당하던 세션중의 일부를 다른 서버로 재배치해야 하는 경우에도 위에서 설명하는 사용자(101) 또는 사용자(101)의 요청과 서버간의 연결보장성(stickiness)을 보장하지 못하는 문제점이 있다.
기존 해싱기반 부하분산 알고리즘에서 서버그룹내 사용가능한 서버 대수가 변경되면 해싱함수가 변경되어 사용자와 서버간의 연결보장성(stickness)이 깨진다. 이러한 서버 대수가 변경되는 상황들은 크게 3가지로 나눌 수 있다. 임의의 서버에서 장애가 발생한 상황, 서버 그룹내 서버 평균부하가 너무 낮거나 유지서버 목적으로 특정서버를 down하고자 하는 경우에 서버 삭제하는 상황, 서버그룹내 서버 평균 부하가 너무 높아 서버를 추가하는 상황이다. 서버 대수는 변경은 없으나 연결보장성(stickness)가 깨지는 또 다른 상황은 서버 그룹내 특정 서버의 부하가 너무 높아 그 서버가 담당하던 사용자요청들을 다른 서버들에게 재분배하는 상황이 발생하는 경우 발생할 수 있다. 위 상황 중들에서 임의의 서버에서 장애가 발생하는 경우에는 세션기반 부하분산 알고리즘을 사용하는 경우에도 연결보장성은 유지될 수 없다.
해싱 기반 부하 분산 기법에 관한 내용은 이 기술 분야에서 알려진 기술이다. 예를 들어, 2007년 4월 25일에 등록된 특허 제0713625호의 부하 분산 시스템의 과부하 제어 방법 및 그 장치에 관한 특허 명세서에도 기재되어 있으므로 여기서는 해싱 기반 부하 분산 기법에 대한 구체적인 설명은 생략한다.
본 발명은 전술한 종래 기술의 문제점을 해결하기 위해서 안출된 것으로서, 본 발명의 목적은 해싱 알고리즘의 장점인 낮은 메모리 사용률과 무한대의 세션 처리 능력 그리고 고속의 처리속도를 그대로 유지하면서 세션 기반의 알고리즘들의 장점인 부하분산의 정교함과 서버의 추가/삭제/과부하시 해싱함수의 변화로 인하여 사용자와 서버간의 연결성을 보장하며 캐싱 효과를 향상시키는 동적 해싱 기반의 부하 분산 시스템을 제공하는데 있다.
본 발명의 다른 목적은 단순한 부하분산 알고리즘을 통하여 효율적인 부하분 산기를 제공하며 이를 통해 소형 시스템에도 고성능의 기능을 제공하는 동적 해싱 기반의 부하 분산 시스템을 제공하는데 있다.
본 발명의 또 다른 목적은 해싱 알고리즘의 장점인 낮은 메모리 사용률과 무한대의 세션 처리 능력 그리고 고속의 처리속도를 그대로 유지하면서 세션 기반의 알고리즘들의 장점인 부하분산의 정교함과 서버의 추가/삭제/과부하시 해싱함수의 변화로 인하여 사용자와 서버간의 연결성을 보장하며 캐싱 효과를 향상시키는 동적 해싱 기반의 부하 분산 방법을 제공하는데 있다.
본 발명의 또 다른 목적은 단순한 부하분산 알고리즘을 통하여 효율적인 부하분산기를 제공하며 이를 통해 소형 시스템에도 고성능의 기능을 제공하는 동적 해싱 기반의 부하 분산 방법을 제공하는데 있다.
상기 목적을 달성하기 위한 본 발명의 동적 해싱 기반의 부하 분산 시스템은 사용자의 요청을 서버그룹들에 분산하여 전달하는 해싱기반의 부하분산기에 있어서, 사용자의 요청에서 임의의 정보를 해싱값으로 계산하는 해싱값 추출기; 계산된 해싱값을 이용하여 처리가능한 서버그룹중 어느 하나의 서버를 선택하게 하며, 서버의 추가/삭제/장애/과부하시 상기 선택된 어느 하나의 서버를 변경하기 위해 해싱값을 이동하는 해싱테이블; 서버그룹의 어느 하나의 서버의 추가/삭제 또는 어느 하나의 서버 과부하시 사용자의 요청과 서버그룹의 서버들 간의 연결성을 보장하면서 해싱값과 서버와의 연결관계를 동적으로 바꾸기 위해 해싱값 이동시간, 세션기록시간 그리고 해싱값에 대한 과부하 상태 정보와 같은 해싱값이 이동할 수 있는 상황 정보를 포함하는 해싱값이동정보테이블; 서버의 추가/삭제 또는 과부하시 해싱값 이동을 원활하게 하기 위하여 일정시간 동안 사용자 요청에 대한 세션 정보를 기록할 수 있는 세션테이블; 상기 테이블들의 정보를 이용하거나 또는 테이블들의 정보를 갱신하면서 사용자 요청을 전달할 대상서버를 서버그룹 중에서 하나를 선택하면서, 주기적으로 서버들의 상태를 확인하여 장애가 발생하면 그 선택된 서버를 후보에서 제외하는 기능을 포함하는 부하분산제어 및 장애감시부로 구성되어 있는 것을 특징으로 한다.
본 발명의 동적 해싱기반의 부하분산시스템은 상기 해싱값 추출기가 해싱값 계산을 위해 사용자 요청 정보내 임의의 일부 정보가 사용될 수 있으며; 이러한 정보는 IP 주소, TCP/UDP 포트, HTTP에 포함된 Cookie, URL, 또는 URI 인 것을 특징으로 한다.
본 발명의 동적 해싱기반의 부하분산 시스템은 상기 부하분산제어 및 장애감시부는 부하분산 서버그룹내 하나의 임의 서버에 장애가 발생한 경우에 상기 서버가 처리했던 해싱값이 나머지 부하분산대상 서버에게 고르게 분배하기 위해, 각 해싱값에 대한 부하정보 평균값을 이용하여 해싱값을 고르게 분산하거나 또는 해싱값의 개수를 고르게 분배하는 것을 특징으로 한다.
본 발명의 동적 해싱기반의 부하분산 시스템은 상기 부하분산제어 및 장애감시부가 서버 그룹내 하나의 임의 서버가 삭제된 경우에 상기 서버가 처리했던 해싱값이 나머지 부하분산대상 서버에게 고르게 분배하기 위해, 각 해싱값에 대한 부하정보 평균값을 이용하여 해싱값을 고르게 분산하거나 또는 해싱값의 개수를 고르게 분배하는 것을 특징으로 한다.
본 발명의 동적 해싱기반의 부하분산 시스템은 상기 부하분산제어 및 장애감시부가 부하분산 서버그룹내 새로운 서버4가 추가되는 경우에 서버들이 처리했던 해싱값이 새로 추가된 서버에게 고르게 분배하기 위해, 각 해싱값에 대한 부하정보 평균값을 이용하여 해싱값을 고르게 분산하거나 또는 해싱값의 개수를 고르게 분배하는 것을 특징으로 한다.
본 발명의 동적 해싱기반의 부하분산 시스템은 상기 부하분산제어 및 장애감시부가 서버그룹내 특정 서버가 계속 처리할 수 있으나 부하가 해싱값 이동정보테이블에 지정된 1차 과부하 임계치를 넘었을 때, 상기 특정서버의 해싱값의 부하정보를 이용하여, 이들 중 부하가 작은 해싱값들을 상기 서버보다 부하가 작은 서버들로 분배하는 것을 특징으로 한다.
본 발명의 동적 해싱기반의 부하분산 시스템은 또한 상기 부하분산제어 및 장애감시부가 부하분산 서버그룹내 특정 서버가 계속 처리 할 수 없는 상태가 되는, 해싱값 이동정보테이블에 지정된 2차 과부하 임계치를 넘었을 때, 상기 특정서버에서 과부하를 유발하는 해싱값을 찾아내어, 해당 해싱값으로 들어오는 사용자 요청을 모든 또는 부하가 작은 서버들에게 순차 분배하는 것을 특징으로 한다.
본 발명의 동적 해싱기반의 부하분산 시스템은 또한 해싱테이블에서 서버그룹의 서버 대수보다 더 많은 해싱값을 가지게 하며, 서버그룹에서 어느 하나의 서버의 장애/삭제/추가로 인하여 동작하는 서버그룹의 서버 대수가 변경되거나 어느 하나의 서버에서 과부하 발생시 타 서버로의 부하 재분배를 하고자 하는 경우를 포함한 서버 재배정 상황에서 해싱값 크기는 변경하지 않고 해싱테이블내 해싱값들이 서버그룹 중의 배정된 어느 하나의 서버들을 동적으로 변경함으로써, 해싱값 이동을 통하여 서버 재배정하는 것을 특징으로 한다.
본 발명의 동적 해싱기반의 부하분산 시스템은 또한 해싱테이블에서 서버그룹의 서버 대수보다 더 많은 해싱값을 가지게 하며, 서버그룹에서 어느 하나의 서버 삭제/추가로 인하여 동작하는 서버 대수가 변경되거나 어느 하나의 서버에서 과부하 발생시 타 서버로의 부하 재분배를 하고자 하는 경우를 포함한 서버 재배정 상황에서 모든 해싱값을 임의의 지정된 시간 없이 타 서버로 이동시키지 않고, 사용자의 요청과 서버와의 기존 연결성이 끊어지지 않도록 임의의 지정된 시간을 기준으로 이동하는 것을 특징으로 한다.
본 발명의 동적 해싱기반의 부하분산시스템은 또한 해싱테이블에서 서버그룹의 대수보다 더 많은 해싱값을 가지게 하며, 서버그룹에서 어느 하나의 서버 삭제/추가로 인하여 동작하는 서버들의 대수가 변경되거나 어느 하나의 서버에서 과부하 발생시 타 서버로의 부하 재분배를 하고자 하는 경우를 포함한 서버 재배정 상황에서, 서버 재배정 상황이 발생한 시점부터 사용자의 요청과 서버와의 연결성이 끊이지 않게 해싱값 이동들이 끝날 때 까지 사용자의 요청과 서버와의 연결 정보 저장 및 참조를 위하여 세션테이블을 운영하는 것을 특징으로 한다.
본 발명의 동적 해싱기반의 부하분산방법은 또한 해싱테이블에서 서버그룹의 서버 대수보다 더 많은 해싱값을 가지게 하며, 서버그룹에서 어느 하나의 서버 삭제/추가로 인하여 동작하는 서버의 대수가 변경되거나 어느 하나의 서버에서 과부하 발생시 타 서버로의 부하 재분배를 하고자 하는 경우를 포함한 서버 재배정 상황에서, 사용자의 연결성을 보장하기 위하여 타 서버로 이동이 결정된 해싱값에 대하여 지정된 시간동안 상기 해싱값으로 들어온 사용자의 요청에 대한 세션정보를 생성하며; 상기 생성된 세션 정보는 일정시간동안 유지하며; 일정 시간 내에 기존 세션에 대한 사용자의 요청이 들어오면 지정된 시간만큼 세션을 더 유지시키며; 상기 유지 되고 있는 세션에 대해서는 서버와의 접속을 지정된 시간동안 유지하며; 기존 세션이 서버와의 접속을 유지하는 상기 지정된 시간 내에 세션에 등록되지 않은 사용자의 요청에 대해서는 사용자의 요청에서 임의의 정보를 해싱값으로 계산하고, 계산된 해싱값을 이용하여 처리가능한 서버를 선택하는 해싱방법에 의하여 사용자의 요청을 전달하며; 세션이 기록된 사용자의 요청은 일정 시간이 지난 이후에 사용자의 요청에서 임의의 정보를 해싱값으로 계산하고, 계산된 해싱값을 이용하여 처리가능한 서버를 선택하는 해싱방법에 의하여 새로운 서버 또는 다른 서버에 전달하는 것을 특징으로 한다.
삭제
본 발명의 동적 해싱 기반의 부하 분산 시스템 및 그 방법은 서버 추가/삭제/장애/과부하 상황에서 사용자의 요청이 서버들 사이로 불균등하게 분포되는 기존 방법(부하의 불균등)과는 달리 상황에 무관하게 사용자의 요청을 서버들 사이로 균등하게 분포시킨다(부하의 균등). 또한 동적 해싱 기반의 부하 분산 시스템 및 그 방법은 서버 추가/삭제/장애/과부하 상황에서 사용자의 요청과 서버간에 지속적인 연결 관계가 성립되지 못하는 기존 방법과 달리 상황에 무관하게 사용자의 요청과 서버간에 지속적인 연결 관계가 성립한다.
이하 첨부도면을 참조하여 본 발명을 보다 상세히 설명하면 다음과 같다.
도 1은 종래의 부하분산기(103)가 사용되는 일반적인 상황을 나타낸다. 사용자(101)는 인터넷 망(102)을 통해 웹 서비스 등을 요청하면 서버1(104), 서버2(105), 서버3(106)들 앞단에 설치된 부하분산기(103)가 해당 요청을 가장 빠르게 처리할 수 있는 서버로 사용자(101)의 요청을 보낸다. 이때, 부하 분산 정책에서 해싱을 사용하게 되면 동일한 사용자(101)의 요청을 동일한 서버로 1:1로 매핑할 수 있다. 예를 들어, 사용자(101) 요청 1을 서버 1(104)이 처리하였다면 이후의 사용자(101) 요청 1이 다시 요청되면 이를 처리하던 서버 1(104)이 다시 처리하게 된다.
도2는 종래의 해싱 기반 부하분산기(200)의 구조를 나타내는 블록도이다. 종래의 부하분산기(200)는 해싱값 추출기(220), 해싱테이블(230), 부하분산제어 및 장애감시부(210)로 구성되어 있다.
해싱값 추출기(220)는 사용자의 요청에서 임의의 정보를 해싱값으로 계산하는 기능을 담당하고, 해싱테이블(230)은 계산된 해싱값을 이용하여 처리 가능한 서버를 선택할 수 있도록 하는 기능을 담당한다. 부하분산제어 및 장애감시부(210)는 해싱테이블 정보를 이용하여 사용자 요청을 전달할 대상 서버를 여러 서버중에서 하나를 선택하면서, 주기적으로 서버들의 상태를 확인하여 장애가 발생하면 해당 서버를 후보에서 제외하는 기능을 담당한다.
도 3은 종래의 해싱 기반 부하분산기(320)가 사용자의 요청(310)을 처리하는 과정을 나타내는 블록도이다. 부하분산기(320)는 사용자 요청(310) 정보에서 해싱값추출기(321)를 통해 1이라는 해싱값을 추출하고, 해싱테이블(322)에서 해싱값 1에 할당된 서버(330) 2를 찾아 사용자의 요청을 서버(330) 2로 보내는 역할을 수행한다.
도 4는 본 발명의 동적 해싱 기반의 부하분산기(400)의 구조를 나타내는 블 록도이다.
본 발명에 따른 동적 해싱 기반의 부하분산기(400)는 해싱값 추출기(420), 해싱테이블(430), 해싱값 이동정보테이블(440), 세션테이블(450), 부하분산제어 및 장애감시부(410)로 구성되어있다.
해싱값 추출기(420)는 사용자의 요청에서 임의의 정보를 해싱값으로 계산하는 기능을 담당하고, 해싱테이블(430)은 계산된 해싱값을 이용하여 처리 가능한 서버를 선택할 수 있도록 하는 기능을 담당한다.
해싱값 이동정보테이블(440)은 서버 추가/삭제 또는 특정 서버의 과부하시 사용자의 요청과 서버간의 연결성을 보장하면서 해싱값과 서버와의 연결관계를 동적으로 바꾸기 위해 해싱값 이동시간, 세션기록시간 그리고 해싱값에 대한 과부하 상태 정보 등 해싱값이 이동할 수 있는 상황 정보를 포함한다.
세션테이블(450)은 서버의 추가/삭제 또는 과부하시 해싱값 이동을 원활하게 하기 위하여 일정 시간 동안 사용자 요청에 대한 세션 정보를 기록하는 역할을 수행한다. 부하분산제어 및 장애감시부(410)는 상기테이블 정보를 이용하거나 또는 테이블 정보를 갱신하면서 사용자 요청을 전달할 대상 서버를 여러 서버 중에서 하나를 선택하면서, 주기적으로 서버들의 상태를 확인하여 장애가 발생하면 해당 서버를 후보에서 제외하는 기능을 담당한다.
도 5는 본 발명의 동적 해싱 기반의 부하분산기가 사용자의 요청(510)을 처리하는 과정을 나타내는 블록도이다.
서버 삭제/장애/추가/과부하와 같은 상황이 발생하지 않는 일반적인 상황에서 본 발명인 동적 해싱 기반의 부하분산기(400)가 사용자의 요청(510)을 처리하는 과정은 종래의 부하분산기(320)가 사용자의 요청(310)을 처리하는 과정과 동일하다. 부하분산기(400)는 사용자 요청(510) 정보에서 해싱값추출기(420)를 통해 5라는 해싱값을 추출하고, 해싱테이블(430)에서 해싱값 5에 할당된 서버그룹(530)의 서버2를 찾아 사용자의 요청(510)을 서버 2로 보내는 역할을 수행한다.
그러나 서버그룹(530)의 서버 삭제/장애/추가/과부하와 같은 특수한 상황에서는 본 발명의 실시 예를 나타내는 도 7, 8, 9, 10을 따른다.
도 6a 및 도 6b는 본 발명의 동적 해싱 기반의 부하분산기 내 해싱값 이동정보테이블(440)과 세션테이블(450)의 구조를 나타내는 블록도이다.
해싱값 이동정보테이블(440)은 이동시간, 세션기록시간, 과부하 1단계의 임계값, 과부하 2단계의 임계값으로 구성된다. 이동시간은 스케줄링에 의해 실제 해싱값이 이동하는데 걸리는 시간을 나타내고, 세션기록시간은 이동할 해싱값의 세션을 기록하는 시간을 나타낸다. 서버의 상황에 따라 이동이 결정된 해싱값은 스케줄링에 의해 이동시간 60초 안에 다른 서버로 이동이 수행되어야 한다. 세션기록시간은 해당 해싱값을 이동해도 되는지를 판단하는 기준으로 사용된다. 부하분산기는 세션기록시간을 기반으로 60초 동안 더 이상의 요청이 없는 세션일 경우 세션을 더 이상 유지할 필요가없다고 판단하여 해당 해싱값만을 이동한다. 과부하의 임계값은 서버의 부하와 비교되는 값으로 서버의 부하가 과부하 1단계의 임계값 80과 과부하 2단계의 임계값 100 사이라면 부하분산기는 서버가 과부하 1단계 상황이라고 판단한다. 또한 서버의 부하가 과부하 2단계의 임계값 100과 같다면 부하분산기는 서버 가 과부하 2단계 상황이라고 판단한다. 세션테이블(450)은 출발지 주소 및 포트, 목적지 주소 및 포트, 실제 서버 주소 및 포트, 해싱값으로 구성된다.
일반적인 해싱 기반의 부하 분산 방법은 서버 삭제/장애 및 추가의 경우 사용가능한 서버의 수를 이용하여 해싱값을 재계산하기 때문에 이전의 사용자와 서버의 연결 상태가 보전되지 않고 재계산된 형태로 연결이 변경된다. 이러한 경우, 웹 어플리케이션의 경우 사용자의 접속이 종료되고, 캐싱 서버의 경우 히트율이 급격이 저하된다. 도 7과 도 8은 이러한 문제를 해결하기 위해 서버의 삭제/장애 및 추가의 경우에 해싱값의 재계산을 최소화하는 방법에 대한 것이다.
도 7은 본 발명의 동적 해싱 기반의 부하분산기(400)를 이용하여 서버의 삭제/장애 시에 이를 처리하는 동작 과정을 나타내는 블록도이다. 예를 들어, 서버 3이 삭제 혹은 장애가 발생하면 서버 3이 처리하던 해싱값이 서버1과 2로 옮겨진다. 이 예에서는 서버 3이 처리하던 해싱 값 6과 7이 서버 1로 옮겨지며(화살표 721, 722), 서버 3이 처리하던 해싱 값 8이 서버 2로 옮겨진다(화살표 723). 서버 장애시에는 사용자 요청과 서버와의 연결성보장이 깨질 수밖에 없으므로 위의 해싱값 이동이 바로 일어나게 된다. 반면에 서버 삭제의 경우 사용자 요청과 서버와의 연결성보장을 위해서 해싱값 이동을 점진적으로 수행할 수 있다. 서버 삭제가 필요한 상황이 되면 일정시간동안 들어오는 세션에 대한 정보들을 세션테이블에 기록하게 된다. 그 후에 사용자 요청이 들어오게 되면 일단 세션테이블을 검색하여 기존 세션인지 여부를 판단한다.
만일 신규 세션이라면 위에서 정한 재배정 원칙에 따라 예를 들어 해싱값이 8이면 서버 2로 배정한다. 만일 기존 세션이라면 일정시간안에 들어온 요청여부를 판단한다. 만일 일정 시간동안에 다시 들어온 사용자 요청이라면 기존 서버 3에 배정하며(이는 도 11 F123 단계에 의하여 결정된다. 서버 3이라는 정보는 해당 세션에 등록되어 있는데 도 6b의 세션테이블(450)내 해당 세션에서 실제서버 주소/port 필드에 서버 3에 관한 정보가 들어 있다고 할 수 있다),
일정 시간후에 들어온 요청이라면 세션을 계속 유지하지 않아도 된다고 판단하여 위에서 정한 재배정 원칙에 따라 예를 들어 해싱값이 8이면 서버 2로 배정한다. 기존 서버 3에서 처리되는 요청들이 다 끝나서 더 이상 서버 3이 담당하는 일이 없게 될 경우 서버 3을 삭제하게 된다. 서버 삭제시 해싱값을 이동하는 과정에 있어서 해싱값 이동정보테이블(440)에 있는 해싱 이동시간, 세션기록 시간 정보들을 이용하여 점진적으로 해싱값을 이동한다. 세션테이블은 해싱값 이동을 위해 한시적으로만 운영한다.
도 8은 본 발명의 동적 해싱 기반의 부하분산기(400)를 이용하여 서버의 추가 시에 이를 처리하는 동작 과정을 나타내는 블록도이다. 예를 들어, 서버 4가 새로이 추가되면 기존 서버들이 가지던 해싱값들이 새로운 서버 4로 옮겨진다. 예에서는 서버 2가 처리하던 해싱값 5가 서버 4(832)로 옮겨지며(화살표 821), 서버 3이 처리하던 해싱값 8이 서버 4(832)로 옮겨진다(화살표 822). 여기에서 해싱값 이동도 사용자 요청과 서버와의 연결보장성을 보장하기 위해 도 7의 서버 삭제과정에서 설명한, 해싱값 이동정보테이블(440) 정보를 이용한 점진적인 이동방식과 동일한 방법으로 처리된다.
일반적인 해싱 기반의 부하 분산 방법은 사용자의 요청이 하나 혹은 일부의 서버로 과부하됨으로써 전체적인 서버들의 성능이 요청이 과부하되는 서버에 의존하는 경향이 존재한다. 도 9와 도 10은 이러한 문제를 해결하기 위해 요청 과부하가 발생하는 상황에서 사용자의 요청을 서버들이 균일하게 처리하는 방법에 관한 것이다.
도 9는 본 발명인 동적 해싱 기반의 부하분산기(400)를 이용하여 서버가 계속 처리할 수 는 있으나 과부하 상태인 1차 과부하가 걸렸을 때 이를 처리하는 동작 과정을 나타내는 블록도이다. 예를 들어, 사용자의 요청(921)이 들어와 서버 2(941)에 1차 과부하가 걸린 경우 서버 2가 처리하고 있는 해싱 값 중 다른 서버로 옮기는 방법으로 동작한다. 1차 과부하의 임계값은 도 6의 해싱값 이동정보테이블(440)에 명시되어 있다. 이 예에서는 서버 2(941)가 처리하고 있는 해싱 값 3이 서버 1로 이동하고(화살표 931), 해싱 값 5가 서버 3으로 이동하여(화살표 932) 사용자의 요청들을 서버들에게 균등하게 분산(해싱값의 이동 후 모든 서버들이 100인 부하를 가짐)됨을 볼 수 있다. 여기에서 해싱값 이동도 사용자 요청과 서버와의 연결보장성을 보장하기 위해서 도 7의 서버 삭제과정에서 설명한, 해싱값 이동정보테이블(440) 정보를 이용한 점진적인 이동방식과 동일한 방법으로 처리된다.
도 10은 본 발명인 동적 해싱 기반의 부하분산기(400)를 이용하여 서버가 더 이상 계속 처리할 수 없는 과부하 상태인 2차 과부하가 걸렸을 때 이를 처리하는 동작 과정을 나타내는 블록도이다. 예를 들어, 서버 2(941)가 2차 과부하에 걸린 경우 서버 2가 이를 혼자서 처리할 수 없기 때문에 다른 서버들과 함께 라운드 로빈의 형태로 재 분산 처리한다. 2차 과부하의 임계값은 도 6의 해싱값 이동정보테이블(440)에 명시되어 있는데 예를 들면 100이다. 서버 2에서 혼자서 처리할 수 없는 해싱 값 4를 가지는 요청(1021)이 들어와 2차 과부하라고 판단하면 그 다음부터 해싱값 4로 오는 사용자 요청은 스케줄링 방식(라운드 로빈)으로 서버를 결정한다 (이는 도 11 F140 단계에 의해 처리된다).
예를 들면, 첫 번째 요청은 서버 1이 처리하고(화살표 1031), 두 번째 요청은 서버 2가 처리하고(화살표 1032), 세 번째 요청은 서버 3이 처리하고(화살표 1033), 네 번째 요청은 서버 1이 다시 처리하는(화살표 1031) 방법으로 분산 처리된다.
본 발명의 동적 해싱 기반의 부하 분산 기법을 도 11, 도 12, 도 13을 참조하여 구체적으로 설명한다.
도 11은 본 발명의 실시 예에 따른 사용자 요청에 대한 전체적인 세션 처리 과정을 나타내는 흐름도이다.
F101: 전체적인 동작을 시작한다.
F110: 세션을 수신한다.
F120: 세션 테이블에 해당 세션이 있는지 확인한다.
F121: 세션 테이블에 해당 세션이 존재하면 세션이 만료되었는지 확인한다.
F122: 세션이 만료되었다면 세션 정보를 파기한다.
F123: 세션이 만료되지 않았다면 세션 테이블에 기록된 서버를 선택한다.
F130: 세션 테이블에 해당 세션이 없다면 해싱값을 계산하고 서버를 선택한다.
F140: 해싱값에 대한 부하 분산이 라운드 로빈인가를 확인한다.
F141: 해싱값에 대한 부하 분산이 라운드 로빈이라면 라운드 로빈으로 서버를 선택한다.
F150: 해싱값에 대한 부하 분산이 라운드 로빈이 아니라면 해싱값에 대한 세션 기록이 활성화되어 있는지 확인한다.
F151: 해싱값에 대한 세션 기록이 활성화되어 있다면 세션 기록을 종료한다.
F152: 세션을 기록한다.
F160: 세션을 전송한다.
F170: 전체적인 동작을 종료한다.
도 12는 본 발명의 실시 예에 따른 도 11의 해싱값 계산 및 서버를 선택(F130)하기 전에 서버의 상태 변화를 관리하는 흐름도를 나타낸다.
F201: 전체적인 동작을 시작한다.
F210: 서버가 삭제되었는지 확인한다.
F211: 서버가 삭제되었다면 삭제된 서버의 해싱값을 남아 있는 서버로 분산한다. 구체적인 예는 도 7을 따른다.
F220: 서버가 삭제되지 않았다면 장애가 발생한 서버가 있는지 확인한다.
F221: 장애가 발생한 서버가 존재한다면 장애 서버의 해싱값을 남아 있는 서버로 분산한다. 구체적인 예는 도 7을 따른다.
F230: 장애가 발생한 서버가 존재하지 않는다면 서버가 추가되었는지 확인한다.
F231: 서버가 추가되었다면 기존 서버에서 추가된 서버로 이동할 해싱값에 대한 세션을 기록하도록 설정한다. 구체적인 예는 도 8을 따른다.
F232: 추가된 서버로 보낼 해싱값을 기존 서버들의 부하율 및 상태에 따라 선정한다.
F240: 추가된 서버가 없다면 서버의 상태가 서버가 처리할 수 있는 과부하 1의 상태인지 확인한다.
F241: 서버의 상태가 서버가 처리할 수 있는 과부하 상태 1이라면 서버들의 부하율 및 상태에 따라 이동할 해싱값을 선정한다. 구체적인 예는 도 9를 따른다.
F242: 이동할 해싱값은 스케줄링 정책에 따라 서서히 이동한다.
F250: 서버의 상태가 서버가 처리할 수 있는 과부하 상태 1이 아니라면 서버의 상태가 서버가 처리할 수 없는 과부하 상태 2인지를 확인한다.
F251: 서버의 상태가 서버가 처리할 수 없는 과부하 상태 2라면 과부하 상태의 해싱값을 라운드 로빈으로 변경하여 스케줄링을 수행한다. 구체적인 예는 도 10을 따른다.
도 13은 본 발명의 실시 예에 따른 도 12의 스케줄링 정책에 의하여 해싱값을 이동(F242)하는 동작 과정을 나타내는 흐름도이다.
F301: 전체적인 동작을 시작한다.
F310: 세션 기록을 시작한 해싱값이 있는지 확인한다.
F311: 세션 기록을 시작한 해싱값이 있다면 해싱값에 대한 세션 기록 시간이 만료되었는지 확인한다.
F312: 해싱값에 대한 세션 기록 시간이 만료되었다면 해싱값에 대한 세션 기록을 중지한다.
F320: 세션 기록을 시작한 해싱값이 없다면 타 서버로 이동할 해싱값이 있는지 확인한다.
F321: 타 서버로 이동할 해싱값이 있다면 지정된 스케줄링 방식에 의하여 해싱값을 이동한다.
본 발명의 동적 해싱 기반의 부하 분산 기법은 서버의 추가/삭제/장애/과부하 상황에서 사용자의 요청을 서버들 사이로 균등하게 분산하고(부하의 균등분산) 사용자의 요청과 서버간에 지속적인 연결 관계가 성립되도록 한다. 이러한 분산 및 연결은 해당 서버들을 사용하는 모든 사용자에게 서버 추가/삭제/장애/과부하로 인한 지연 시간 없는 안정적인 서비스를 보장한다.
본 발명은 기재된 구체 예에 대해서만 상세히 설명되었지만 본 발명의 사상과 범위 내에서 다양하게 변경 또는 변형할 수 있음은 본 발명이 속하는 기술 분야의 담당자에게는 명백한 것이며, 따라서 그러한 변경 또는 변형은 첨부된 특허청구의 범위에 속한다 해야 할 것이다.
도 1은 종래의 부하 분산기가 사용되는 일반적인 상황을 나타내는 블록도이다.
도 2는 종래의 해싱 기반 부하분산기의 구조를 나타내는 블록도이다.
도 3은 종래의 해싱 기반 부하분산기가 사용자의 요청을 처리하는 과정을 나타내는 블록도이다.
도 4는 본 발명의 동적 해싱 기반의 부하분산기의 구조를 나타내는 블록도이다.
도 5는 본 발명의 동적 해싱 기반의 부하분산기가 사용자의 요청을 처리하는 과정을 나타내는 블록도이다.
도 6a 및 도 6b는 본 발명의 동적 해싱 기반의 부하분산기 내 해싱값 이동정보테이블과 세션테이블의 구조를 나타내는 블록도이다.
도 7은 본 발명의 동적 해싱 기반의 부하분산기를 이용하여 서버의 삭제/장애 시에 이를 처리하는 동작 과정을 나타내는 블록도이다.
도 8은 본 발명의 동적 해싱 기반의 부하분산기를 이용하여 서버의 추가 시에 이를 처리하는 동작 과정을 나타내는 블록도이다.
도 9는 본 발명의 동적 해싱 기반의 부하분산기를 이용하여 서버가 계속 처리할 수 는 있으나 과부하 상태인 1차 과부하가 걸렸을 때 이를 처리하는 동작 과정을 나타내는 블록도이다.
도 10은 본 발명의 동적 해싱 기반의 부하분산기를 이용하여 서버가 더 이상 계속 처리할 수 없는 과부하 상태인 2차 과부하가 걸렸을 때 이를 처리하는 동작 과정을 나타내는 블록도이다.
도 11은 본 발명의 실시 예에 따른 사용자 요청에 대한 전체적인 세션 처리 과정을 나타내는 흐름도이다.
도 12는 본 발명의 실시 예에 따른 도 11의 해싱값 계산 및 서버를 선택하기 전에 서버의 상태 변화를 관리하는 흐름도를 나타낸다.
도 13은 본 발명의 실시 예에 따른 도 12의 스케줄링 정책에 의하여 해싱값을 이동하는 동작 과정을 나타내는 흐름도이다.
<도면의 주요부분에 대한 부호의 설명>
400: 부하분산기
410: 부하분산제어 및 장애감시부
420: 해싱값 추출기
430: 해싱테이블
440: 해싱값 이동정보테이블
450: 세션테이블도

Claims (11)

  1. 사용자의 요청을 서버그룹(530)들에 분산하여 전달하는 해싱기반의 부하분산기에 있어서,
    사용자의 요청에서 임의의 정보를 해싱값으로 계산하는 해싱값 추출기(420);
    계산된 해싱값을 이용하여 처리가능한 서버그룹(530)중 어느 하나의 서버를 선택하게 하며, 서버의 추가/삭제/장애/과부하시 상기 선택된 어느 하나의 서버를 변경하기 위해 해싱값을 이동하는 해싱테이블(430);
    서버그룹(530)의 어느 하나의 서버의 추가/삭제 또는 어느 하나의 서버 과부하시 사용자의 요청과 서버그룹(530)의 서버들 간의 연결성을 보장하면서 해싱값과 서버와의 연결관계를 동적으로 바꾸기 위해 해싱값 이동시간, 세션기록시간 그리고 해싱값에 대한 과부하 상태 정보와 같은 해싱값이 이동할 수 있는 상황 정보를 포함하는 해싱값이동정보테이블(440);
    서버의 추가/삭제 또는 과부하시 해싱값 이동을 원활하게 하기 위하여 일정시간 동안 사용자 요청에 대한 세션 정보를 기록할 수 있는 세션테이블(450);
    상기 테이블(430, 440, 450)들의 정보를 이용하거나 또는 테이블(430, 440, 450)들의 정보를 갱신하면서 사용자 요청을 전달할 대상서버를 서버그룹(530) 중에서 하나를 선택하면서, 주기적으로 서버들의 상태를 확인하여 장애가 발생하면 그 선택된 서버를 후보에서 제외하는 기능을 포함하는 부하분산제어 및 장애감시부(410)로 구성되어 있는 것을 특징으로 하는 동적 해싱기반의 부하분산시스템.
  2. 제 1항에 있어서, 상기 해싱값 추출기(420)는 해싱값 계산을 위해 사용자 요청 정보내 임의의 일부 정보가 사용될 수 있으며; 이러한 정보는 IP 주소, TCP/UDP 포트, HTTP에 포함된 Cookie, URL, 또는 URI 인 것을 특징으로 하는 동적 해싱기반의 부하분산 시스템.
  3. 제 1항에 있어서, 상기 부하분산제어 및 장애감시부(410)는 부하분산 서버그룹(530)내 하나의 임의 서버3(741)이 장애가 발생한 경우에 상기 서버3(741)이 처리했던 해싱값이 나머지 부하분산대상 서버에게 고르게 분배하기 위해, 각 해싱값에 대한 부하정보 평균값을 이용하여 해싱값을 고르게 분산하거나 또는 해싱값의 개수를 고르게 분배하는 것을 특징으로 하는 동적 해싱기반의 부하분산 시스템.
  4. 제 1항에 있어서, 상기 부하분산제어 및 장애감시부(410)는 부하분산 서버 그룹(530)내 하나의 임의 서버3(741)이 삭제된 경우에 상기 서버3(741)이 처리했던 해싱값이 나머지 부하분산대상 서버에게 고르게 분배하기 위해, 각 해싱값에 대한 부하정보 평균값을 이용하여 해싱값을 고르게 분산하거나 또는 해싱값의 개수를 고르게 분배하는 것을 특징으로 하는 동적 해싱기반의 부하분산 시스템.
  5. 제 1항에 있어서, 상기 부하분산제어 및 장애감시부(410)는 부하분산 서버그룹(530)내 새로운 서버4(832)가 추가되는 경우에 서버들이 처리했던 해싱값이 새로 추가된 서버4(832)에게 고르게 분배하기 위해, 각 해싱값에 대한 부하정보 평균값을 이용하여 해싱값을 고르게 분산하거나 또는 해싱값의 개수를 고르게 분배하는 것을 특징으로 하는 동적 해싱기반의 부하분산 시스템.
  6. 제 1항에 있어서, 상기 부하분산제어 및 장애감시부(410)는 부하분산 서버그룹(530)내 특정 서버2(941)가 계속 처리할 수 있으나 부하가 해싱값 이동정보테이블(440)에 지정된 1차 과부하 임계치를 넘었을 때, 상기 서버2(941)의 해싱값의 부하정보를 이용하여, 이들 중 부하가 작은 해싱값들을 상기 서버2(941)보다 부하가 작은 서버들로 분배하는 것을 특징으로 하는 동적 해싱기반의 부하분산 시스템.
  7. 제 1항에 있어서, 상기 부하분산제어 및 장애감시부(410)는 부하분산 서버그룹(530)내 특정 서버2(941)가 계속 처리 할 수 없는 상태가 되는, 해싱값 이동정보테이블(440)에 지정된 2차 과부하 임계치를 넘었을 때, 상기 서버2(941)에서 과부하를 유발하는 해싱값을 찾아내어, 해당 해싱값으로 들어오는 사용자 요청을 모든 또는 부하가 작은 서버들에게 순차 분배하는 것을 특징으로 하는 동적 해싱기반의 부하분산 시스템.
  8. 제1항에 있어서, 해싱테이블(430)에서 서버그룹(530)의 서버 대수보다 더 많은 해싱값을 가지게 하며, 서버그룹(530)에서 어느 하나의 서버의 장애/삭제/추가로 인하여 동작하는 서버그룹(530)의 서버 대수가 변경되거나 어느 하나의 서버에서 과부하 발생시 타 서버로의 부하 재분배를 하고자 하는 경우를 포함한 서버 재배정 상황에서 해싱값 크기는 변경하지 않고 해싱테이블(430)내 해싱값들이 서버그룹(530) 중의 배정된 어느 하나의 서버들을 동적으로 변경함으로써, 해싱값 이동을 통하여 서버 재배정하는 것을 특징으로 하는 동적 해싱기반의 부하분산 시스템.
  9. 제1항에 있어서, 해싱테이블(430)에서 서버그룹(530)의 서버 대수보다 더 많은 해싱값을 가지게 하며, 서버그룹(530)에서 어느 하나의 서버 삭제/추가로 인하여 동작하는 서버 대수가 변경되거나 어느 하나의 서버에서 과부하 발생시 타 서버로의 부하 재분배를 하고자 하는 경우를 포함한 서버 재배정 상황에서 모든 해싱값을 임의의 지정된 시간 없이 타 서버로 이동시키지 않고, 사용자의 요청과 서버와의 기존 연결성이 끊어지지 않도록 임의의 지정된 시간을 기준으로 이동하는 것을 특징으로 하는 동적 해싱기반의 부하분산시스템.
  10. 제1항에 있어서, 해싱테이블(430)에서 서버그룹(530)의 대수보다 더 많은 해싱값을 가지게 하며, 서버그룹(530)에서 어느 하나의 서버 삭제/추가로 인하여 동작하는 서버들의 대수가 변경되거나 어느 하나의 서버에서 과부하 발생시 타 서버로의 부하 재분배를 하고자 하는 경우를 포함한 서버 재배정 상황에서, 서버 재배정 상황이 발생한 시점부터 사용자의 요청과 서버와의 연결성이 끊이지 않게 해싱값 이동들이 끝날 때 까지 사용자의 요청과 서버와의 연결 정보 저장 및 참조를 위하여 세션테이블(450)을 운영하는 것을 특징으로 하는 동적 해싱기반의 부하분산방법.
  11. 제1항에 있어서, 해싱테이블(430)에서 서버그룹(530)의 서버 대수보다 더 많은 해싱값을 가지게 하며, 서버그룹(530)에서 어느 하나의 서버 삭제/추가로 인하여 동작하는 서버의 대수가 변경되거나 어느 하나의 서버에서 과부하 발생시 타 서버로의 부하 재분배를 하고자 하는 경우를 포함한 서버 재배정 상황에서, 사용자의 연결성을 보장하기 위하여 타 서버로 이동이 결정된 해싱값에 대하여 지정된 시간동안 상기 해싱값으로 들어온 사용자의 요청에 대한 세션정보를 생성하며;
    상기 생성된 세션 정보는 일정시간동안 유지하며;
    일정 시간 내에 기존 세션에 대한 사용자의 요청이 들어오면 지정된 시간만큼 세션을 더 유지시키며;
    상기 유지 되고 있는 세션에 대해서는 서버와의 접속을 지정된 시간동안 유지하며;
    기존 세션이 서버와의 접속을 유지하는 상기 지정된 시간 내에 세션에 등록되지 않은 사용자의 요청에 대해서는 사용자의 요청에서 임의의 정보를 해싱값으로 계산하고, 계산된 해싱값을 이용하여 처리가능한 서버를 선택하는 해싱방법에 의하여 사용자의 요청을 전달하며;
    세션이 기록된 사용자의 요청은 일정 시간이 지난 이후에 사용자의 요청에서 임의의 정보를 해싱값으로 계산하고, 계산된 해싱값을 이용하여 처리가능한 서버를 선택하는 해싱방법에 의하여 새로운 서버 또는 다른 서버에 전달하는 것을 특징으로 하는 동적 해싱기반의 부하분산시스템.
KR1020070076426A 2007-07-30 2007-07-30 동적 해싱 기반의 부하 분산 시스템 및 그 방법 KR100907946B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070076426A KR100907946B1 (ko) 2007-07-30 2007-07-30 동적 해싱 기반의 부하 분산 시스템 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070076426A KR100907946B1 (ko) 2007-07-30 2007-07-30 동적 해싱 기반의 부하 분산 시스템 및 그 방법

Publications (2)

Publication Number Publication Date
KR20090012523A KR20090012523A (ko) 2009-02-04
KR100907946B1 true KR100907946B1 (ko) 2009-07-16

Family

ID=40683278

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070076426A KR100907946B1 (ko) 2007-07-30 2007-07-30 동적 해싱 기반의 부하 분산 시스템 및 그 방법

Country Status (1)

Country Link
KR (1) KR100907946B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11574372B2 (en) 2017-02-08 2023-02-07 Upstream Data Inc. Blockchain mine at oil or gas facility
US11907029B2 (en) 2019-05-15 2024-02-20 Upstream Data Inc. Portable blockchain mining system and methods of use

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101294268B1 (ko) * 2012-03-07 2013-08-09 주식회사 시큐아이 복수 개의 로그서버들을 이용한 로그 분산 처리 방법 및 로그 분산 처리 시스템
US10097628B2 (en) 2014-01-29 2018-10-09 Microsoft Technology Licensing, Llc Resource affinity in a dynamic resource pool
WO2019139633A1 (en) 2018-01-11 2019-07-18 Lancium Llc Method and system for dynamic power delivery to a flexible growcenter using unutilized energy sources
US10873211B2 (en) 2018-09-14 2020-12-22 Lancium Llc Systems and methods for dynamic power routing with behind-the-meter energy storage
US11025060B2 (en) 2018-09-14 2021-06-01 Lancium Llc Providing computational resource availability based on power-generation signals
US11016553B2 (en) 2018-09-14 2021-05-25 Lancium Llc Methods and systems for distributed power control of flexible datacenters
US11031787B2 (en) 2018-09-14 2021-06-08 Lancium Llc System of critical datacenters and behind-the-meter flexible datacenters
US10367353B1 (en) 2018-10-30 2019-07-30 Lancium Llc Managing queue distribution between critical datacenter and flexible datacenter
US11031813B2 (en) 2018-10-30 2021-06-08 Lancium Llc Systems and methods for auxiliary power management of behind-the-meter power loads
US10452127B1 (en) 2019-01-11 2019-10-22 Lancium Llc Redundant flexible datacenter workload scheduling
US11128165B2 (en) 2019-02-25 2021-09-21 Lancium Llc Behind-the-meter charging station with availability notification
US11868106B2 (en) * 2019-08-01 2024-01-09 Lancium Llc Granular power ramping
US11397999B2 (en) 2019-08-01 2022-07-26 Lancium Llc Modifying computing system operations based on cost and power conditions
US10618427B1 (en) 2019-10-08 2020-04-14 Lancium Llc Behind-the-meter branch loads for electrical vehicle charging
US10608433B1 (en) 2019-10-28 2020-03-31 Lancium Llc Methods and systems for adjusting power consumption based on a fixed-duration power option agreement
US11042948B1 (en) 2020-02-27 2021-06-22 Lancium Llc Computing component arrangement based on ramping capabilities
CN112817752B (zh) * 2021-01-21 2023-12-19 西安交通大学 一种分布式数据库动态负载均衡方法
CN117914783B (zh) * 2024-03-20 2024-07-02 鹏城实验室 流量数据的实时处理方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030021114A (ko) * 2001-09-05 2003-03-12 주식회사 미리텍 부하분산기
KR20040034741A (ko) * 2002-10-15 2004-04-29 엘지전자 주식회사 해싱을 이용한 기지국 프레임 오프셋 할당 방법
KR20060066603A (ko) * 2004-12-13 2006-06-16 한국전자통신연구원 부하 분산 시스템 및 그 방법
KR20070025535A (ko) * 2005-09-02 2007-03-08 삼성전자주식회사 부하 분산 시스템의 과부하 제어 방법 및 그 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030021114A (ko) * 2001-09-05 2003-03-12 주식회사 미리텍 부하분산기
KR20040034741A (ko) * 2002-10-15 2004-04-29 엘지전자 주식회사 해싱을 이용한 기지국 프레임 오프셋 할당 방법
KR20060066603A (ko) * 2004-12-13 2006-06-16 한국전자통신연구원 부하 분산 시스템 및 그 방법
KR20070025535A (ko) * 2005-09-02 2007-03-08 삼성전자주식회사 부하 분산 시스템의 과부하 제어 방법 및 그 장치

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11574372B2 (en) 2017-02-08 2023-02-07 Upstream Data Inc. Blockchain mine at oil or gas facility
US11907029B2 (en) 2019-05-15 2024-02-20 Upstream Data Inc. Portable blockchain mining system and methods of use

Also Published As

Publication number Publication date
KR20090012523A (ko) 2009-02-04

Similar Documents

Publication Publication Date Title
KR100907946B1 (ko) 동적 해싱 기반의 부하 분산 시스템 및 그 방법
US10778801B2 (en) Content delivery network architecture with edge proxy
US7685310B2 (en) Computer system and dynamic port allocation method
US10116737B2 (en) Optimized consistent request distribution for balanced load distribution in a content delivery network
JP5179359B2 (ja) ネットワークに接続されたサーバ・クラスタ内のクライアント・セッションの動的リバランシングを行う方法及びシステム
US7680938B2 (en) Video on demand digital server load balancing
JP5901024B2 (ja) コンテンツ配信に利用される動的バインド
KR101383905B1 (ko) 해시 함수 결과를 이용한 서버 부하 분산 처리 방법 및 그 장치
US9116752B1 (en) Systems, methods, devices and arrangements for server load distribution
KR20010088742A (ko) 분산처리 및 피어 대 피어 통신을 이용한 네트워크 상의정보전송 병렬화 방법
KR20150055556A (ko) 네임―기반의 콘텐츠 분산 시스템에서 서버 핸드오프를 수행하는 방법 및 장치
US20130024583A1 (en) System and method for managing buffering in peer-to-peer (p2p) based streaming service and system for distributing application for processing buffering in client
Xu et al. Effective load balancing in p2p systems
US9203706B2 (en) System and method for enabling demand-based pooling of endpoint resources in a multi-application environment
KR20080082227A (ko) 로드 밸런싱 시스템의 요청 배정 장치 및 로드 밸런싱 방법
EP4115580B1 (en) Hostname pre-localization
JP5992813B2 (ja) プログラム、アクセス制御方法および情報処理装置
KR20190109842A (ko) 스토리지 시스템의 qos 관리 장치 및 그 방법
KR102579474B1 (ko) 네트워크 부하 분산 방법 및 장치
Pandey Capacity/Context Aware Load Balancing
Ramana et al. NDLB: Nearest Dispatcher Load Balancing approach for Web Server Cluster
CN112671905A (zh) 服务调度方法、装置及***
Kurita et al. Load Balancing of Requests with Keys Whose Frequencies Exhibit a Big-Head and Long-Tail Distribution
Irani et al. Semi-continuous transmission for cluster-based video servers
Vijayabharathi Customized Automatic Load Sharing For a Network of Workstations

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130625

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140707

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150703

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160704

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170704

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180704

Year of fee payment: 10