KR100387700B1 - 분산 컴퓨팅 시스템 내의 정족수 프로세서 그룹의 동적재구성 - Google Patents

분산 컴퓨팅 시스템 내의 정족수 프로세서 그룹의 동적재구성 Download PDF

Info

Publication number
KR100387700B1
KR100387700B1 KR10-2000-0048267A KR20000048267A KR100387700B1 KR 100387700 B1 KR100387700 B1 KR 100387700B1 KR 20000048267 A KR20000048267 A KR 20000048267A KR 100387700 B1 KR100387700 B1 KR 100387700B1
Authority
KR
South Korea
Prior art keywords
processor
quorum
processors
group
list
Prior art date
Application number
KR10-2000-0048267A
Other languages
English (en)
Other versions
KR20010050140A (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 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20010050140A publication Critical patent/KR20010050140A/ko
Application granted granted Critical
Publication of KR100387700B1 publication Critical patent/KR100387700B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • G06F11/1425Reconfiguring to eliminate the error by reconfiguration of node membership

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)

Abstract

비공유 분산 컴퓨팅 시스템(shared nothing distributed computing system)에 대해 정족수의 프로세서 그룹(a quorum group of processors)의 동적 재구성과 복구 처리(recovery processing)가 제공된다. 정족수의 나머지 프로세서들이 존재한다는 가정하에 정족수의 프로세서 그룹내의 적어도 하나의 프로세서가 비가용 상태임에도 불구하고 동적 재구성이 진행된다. 동적 재구성 동안에 비가용 상태였던 적어도 하나의 프로세서가 일단 가용 상태가 되면 현재 상태 정보를 획득할 수 있도록 프로세서 그룹에 의해 복구 처리가 구현된다. 프로세서 그룹내의 각각의 프로세서는 인카네이션 번호(incarnation number)와 인카네이션 번호를 이끌어낸 과정에 참여한 멤버 프로세서들의 리스트를 포함한다. 복구 처리는 정족수의 프로세서 그룹의 현재 상태가 가용 상태가 된 적어도 하나의 프로세서로 전파할 수 있도록 프로세서들의 인카네이션 번호와 프로세서들의 리스트를 교환한다. 분산 컴퓨팅 시스템의 정족수 기반의 동작에 대해 완화된 정족수(relaxed quorum number)의 결정도 제공된다.

Description

분산 컴퓨팅 시스템 내의 정족수 프로세서 그룹의 동적 재구성{DYNAMIC RECONFIGURATION OF A QUORUM GROUP OF PROCESSORS IN A DISTRIBUTED COMPUTING SYSTEM}
본 출원은, 본 명세서에서 참고용으로 인용되며 본 출원의 양수인과 동일한 양수인에게 양도된 (Docket No. PO9-99-070호인) 브리스키등에 의한 "분산 컴퓨팅 시스템 내의 정족수의 프로세서 그룹의 동적 재구성(DYNAMIC RECONFIGURATION OF A QUORUM GROUP OF PROCESSORS IN A DISTRIBUTED COMPUTER SYSTEM)"과, (Docket No. PO9-99-131호인) 브리스키등에 의한 "분산 컴퓨터 시스템 내의 동적으로 재구성된 정족수의 프로세서 그룹에 대한 복구 처리(RECOVERY PROCEDURE FOR A DYNAMICALLY RECONFIGURED QUORUM GROUP OF PROCESSORS IN A DISTRIBUTED COMPUTER SYSTEM)"와, (Docket No. PO9-99-133호인) 브리스키등에 의한 "분산 컴퓨팅 시스템의 정족수 기반 동작을 위한 완화된 정족수 결정(RELAXED QUORUM DETERMINATION FOR A QUORUM BASED OPERATION OF A DISTRIBUTED COMPUTING SYSTEM)"에서 논의되는 주제와 관련된 주제를 포함하고 있다.
본 발명은 분산 컴퓨팅 시스템(distributed computing system)에 관한 것으로, 보다 구체적으로는 분산 컴퓨팅 시스템 내의 프로세서의 정족수 그룹(quorum group of processor)의 동적 재구성(dynamic reconfiguration)에 관한 것이며, 아울러, 동적 재구성 동안에 비가용 상태였던 하나 이상의 프로세서 그룹의 복구 처리(recovery procedure)에 관한 것이다.
분산 컴퓨팅 시스템은 복수개의 처리 요소를 포함한다. 이들 처리 요소는 네트워크에서 함께 연결된 개개의 프로세서일 수도 있고 조율된 환경에서 동시에 작동중인 복수개의 소프트웨어 인스턴스(software instance)일 수도 있다. 전자의 경우 프로세서들은 네트워크 프로토콜을 지원하는 네트워크를 통해 서로 통신한다. 프로토콜은 하드웨어 및 소프트웨어 요소의 조합을 사용하여 구현될 수도 있다. 처리 요소는 공통 인터페이스를 통해 메시지나 패킷을 송수신함으로써 서로 통신한다. 분산 컴퓨팅 시스템의 한 유형은 처리 요소들이 저장 장치를 공유하지 않는 비공유 분산 시스템(shared nothing distributed system)이다. 이와 같은 시스템 내에서 요소들은 분산 시스템의 상태에 동의하기 위해 메시지를 교환해야만 한다.
따라서, 비공유 분산 처리 시스템에서는 메시지 교환 프로토콜이 필요하다. 예를 들어, 메시지 교환 프로토콜은 분산 처리 시스템에서 데이타베이스의 현재 상태의 문제 해결을 추구할 것이다. 특히, 프로토콜은 어떤 처리 요소가 최신 버젼의 데이타베이스를 가지는지를 정의할 필요가 있다. 알려진 바와 같이, 높은 가용성의 시스템(high availability system)은 시스템이 처리 수행을 지속하는 동안 하나 이상의 처리 요소가 비가용 상태가 되는 것을 허용한다. 따라서, 하나 이상의 처리 요소가 비가용 상태(즉, 오프 라인)가 되어있는 동안 데이타베이스는 높은 가용성의 시스템내에서 수정될 수 있다. 앞서 비가용 상태였던 처리 요소가 가용 상태가 되었을 때, 이 처리 요소에는 갱신된 버젼의 데이타베이스가 제공되어야 한다.
종래의 비공유 처리 시스템은 정족수 기반형 복구(quorum driven recover)에 참여하는 처리 요소 그룹은 정적(static)이어야 한다는 제약을 가진다. 즉, 일단 서버 그룹이 정의되면, 데이타베이스가 운영중이고 하나 이상의 멤버들이 잠재적으로 비가용 상태인 동안에는 멤버들은 동적으로 추가 또는 삭제될 수 없다는 것이다. 종래의 비공유 분산 처리 시스템에서 재구성 변경을 행하는 유일한 방법은 시스템 내의 모든 서버에 있는 구성 파일들에 변경을 가하는 재정의 동작(redefine operation)을 사용하는 것이다.
상술한 문제점에도 불구하고, 데이타베이스 서버와 같은 높은 가용성의 분산 처리 시스템의 경우, 서버 그룹 내의 모든 서버들이 가용 상태일 것을 요구하지 않고도 서버들의 추가 또는 삭제를 허용하는 것이 바람직하다. 본 명세서에서 제공되는 분산 서버 복구 처리(Distributed Server Recovery Procedure; DSRP)는, 현재 정의된 서버들 중 다수(정족수, quorum)만 가용 상태이기만하면 수정을 진행할 수 있는 서버 그룹 구성 수정을 제공한다. 예를 들어, 일부 서버는 그들이 다운(down)된 동안 구성변경되지 않고(그룹으로부터 제외됨), 다른 서버들이 추가될 수 있다. 하나 이상의 서버가 비가용 상태인 동안 서버들을 추가 또는 삭제하는 절차는 정족수 프로세서 그룹의 "동적 재구성"이라 불린다. 다시 한번, 종래의 분산 서버 복구 처리는 정적인 구성 환경을 필요로 함을 밝혀 둔다.
요약하면, 분산 컴퓨팅 시스템의 정족수 기반의 동작을 위한 완화된 정족수를 결정하기 위한 방법이 제공된다. 이 방법은, 정족수의 프로세서들 내의 활성프로세서의 개수를 판별하는 단계; 활성 프로세서들의 개수가 짝수를 포함하면, 정죽수 프로세서 그룹의 활성 프로세서의 다수개(majority number)를 결정하고 이값으로부터 1을 감산하여 정족수 기반의 동작에서 사용하기 위한 완화된 정족수에 도달하도록 하는 단계를 포함한다.
상기 요약된 방법에 대응하는 시스템 및 컴퓨터 프로그램 제품도 역시 설명되고 청구될 것이다.
다시 설명하면, 그룹 내의 하나 이상의 프로세서가 비가용 상태이더라도 정족수 프로세서 그룹을 재구성할 수 있는 재구성 능력, 및 앞서 비가용 상태였던 하나 이상의 프로세서가 가용 상태일 때 그룹 내의 프로세서들에 의한 복구 처리가 제공된다. 하나 이상의 프로세서가 비가용 상태인 동안 프로세서 그룹을 동적으로 재구성할 수 있음에 의해, 시스템 관리자는 하나 이상의 프로세서가 비가용 상태가 되더라도 정족수의 프로세서만 남아 있다면 중요한 시스템이 유지될 수 있음을 보장할 수 있다. 따라서, 본 명세서에서 기술하는 동적 구성 능력과 복구 처리는 높은 가용성의 분산 컴퓨팅 환경에 상당한 유연성을 제공한다. 본 명세서에서 기술되는 복구 처리와 같은 정족수 기반의 동작에서 사용하기 위한 완화된 정족수 계산(relaxed quorum calculation)도 역시 제공된다.
도 1은 3개 서버 시스템에 대해 그룹 정족수 2를 도시하는 제1 상태(인카네이션 1)에 있는 3개 서버 분산 처리 시스템.
도 2는 서버 1이 비가용 상태이고 서버2와 서버3과 새로운 서버4를 포함하는 새로운 그룹 인카네이션 2인 도 1의 분산 처리 시스템.
도 3은 정족수 계산을 위해 서버1이 정의해제(undefine)되고 새로운 그룹 정족수가 3인 도 2의 분산 처리 시스템.
도 4는 서버 2와 서버3이 정의해제되고 새로운 서버7이 시스템에 추가된 새로운 그룹 인카네이션 4인 도 3의 분산 처리 시스템.
도 5는 서버2와 서버3이 정의해제되어 그룹 정족수가 3으로 교정되고 새로운 그룹 인카네이션이 3인 도 4의 분산 처리 시스템.
도 6은 본 발명의 원리에 따른 동적 서버 복구 처리의 한 실시예의 흐름도.
도 7a 및 7b는 본 발명의 원리에 따른 메시지_처리_프로시져의 한 실시예의 흐름도.
도 8은 본 발명의 원리에 따른 정족수 계산 프로시져의 한 실시예의 흐름도.
도 9는 본 발명의 원리에 따른 프로세서 그룹의 구성을 변경시키기 위한 프`로시져의 한 실시예의 흐름도.
본 발명에 의해 해결되는 문제는 데이타베이스 서버와 같은 높은 가용성의 분산 처리 시스템의 동적 재구성 및 복구 문제이다. 이와 같은 시스템의 높은 가용성은 서버 그룹 내의 일부 서버(peer)가 가용치 않을 때에도 시스템이 가능할 수있도록 해준다. 한 실시예가 데이타베이스 서버와 관련하여 기술되고 있지만, 당업자는 이러한 개념이 다수의 처리 요소를 갖는 분산 처리 시스템의 소정 그룹의 프로세서에도 역시 적용가능하다는 것을 이해할 것이다. 본 명세서에서, 프로세서란 개개의 프로세서 또는 소프트웨어로 구현된 프로세싱 인스턴스(processing instance)를 포함하는 처리 요소를 의미한다. 본 명세서에서 논의되는 데이타베이스 서버는 프로세서 그룹의 단지 한 예로서 제공되는 것이다.
시스템의 높은 가용성 특징으로 인해, 어떤 프로세서들은 분산된 데이타베이스에 대한 갱신을 하지 못하고, 이들 프로세서들이 가용 상태가 될 때 복구 처리를 거쳐야 할 필요가 있다. 전형적으로, 복구 처리는 "인카네이션 번호"라고도 불리는 데이타베이스의 버젼 번호(version number)의 검사를 포함한다. 복구는 복잡한 절차인데, 이는 본 발명에 따르면 서버의 서브시스템(subsystem) 구성 그 자체가 변경될 수 있기 때문이다. 즉, 시스템은 "동적 재구성"을 겪을 수 있기 때문이다. 분산 서버 복구 처리(DSRP)는 이와 같은 경우에 복구 문제를 해결해 주어 이러한 동적 재구성이 진행할 수 있도록 해준다.
본 명세서에서의 용어 "구성"은 특히 분산 시스템의 멤버 리스트를 지칭한다. 전형적인 분산 시스템은 네트워크 내에 존재하는 가용 프로세서 집단으로부터 프로세서를 선택하여 이들을 그룹화함으로써 구성된다. 전형적으로 네트워크 내의 프로세서의 개수는 소정의 주어진 분산 시스템 내에서의 프로세서의 개수보다 많다. 그 한 예가 동일한 네트워크에 서로 접속된 수개의 컴퓨터(프로세서)를 갖는 대학 캠퍼스이다. 네트워크 내에 존재하는 프로세서의 서브세트를 "분산 시스템"으로 그룹화하는 것이 종종 바람직하다. 분산 시스템은 다양한 방식으로 협동하는 기계 세트로서 정의되며, 이들간에는 태스크(task)를 분산시킬 수 있다. 예를 들어, 네트워크 내에 100개의 프로세서가 있다면, 이들을 서로 결합하여 소정 개수의 분산 시스템을 구성할 수 있다. 예를 들어, 각각 10개 프로세서의 10개 시스템 또는, 각각 5개 프로세서의 20개 시스템, 또는 이들의 조합으로 구성할 수도 있다. 이러한 "구성"의 중요한 한 특징은 어느 프로세서가 어느 특정 그룹의 일부를 구성하는지를 나타내는 리스트이다. 이러한 리스트는 동일한 그룹에 참여하는 멤버 세트를 정의하며, 이러한 결정은 그룹 내의 다른 멤버로부터의 요청을 올바르게 허락 또는 거절하기 위해 필요하다. 그룹의 멤버들은 주어진 소정의 시간에 리스트가 일관적이어야 한다는데 동의해야 한다. 즉, 분산 시스템 내의 모든 노드(프로세서)마다 정확히 동일한 리스트 사본을 가져야 한다는 것이다.
본 명세서에서 제시하는 기술은 프로세서 그룹의 멤버들이 자신이 가지고 있는 리스트가 정확한지, 또는 그룹 내의 다른 멤버로부터 보다 갱신된 리스트를 획득할 필요가 있는지를 검증할 수 있는 방식이다. 본 발명은 발생된 각각의 리스트에 대해 "인카네이션 번호"를 부착시킴으로써 이러한 목적을 달성한다. 이 "인카네이션 번호"는, 프로세서 그룹 내의 멤버 리스트에 대한 소정의 변화가 현재 그룹을 이루는 멤버의 적어도 "정족수"에 대해 이루어지도록 보장함으로써 유지된다. 분산 시스템의 사용자가 그룹으로부터 프로세서를 삭제하거나 그룹에 프로세서를 추가하는 때에 리스트 내에 변화가 발생한다. 멤버 프로세서의 추가 또는 삭제에 의해 리스트가 변경될 때, 인카네이션 번호가 증가된다.
분산 시스템의 사용자가 구성(900)의 변화를 요청할 때, 다음과 같이 수행된다. 요청을 수신한 그룹 멤버는 다른 모든 멤버들에게 이 요청의 사본을 전송하고 자신의 구성 변경을 수행한다(910). 이 변경 동작은 리스트 변경 및 인카네이션 번호 갱신을 포함한다(920,930). 그 다음, 그룹내의 다른 멤버들의 응신을 기다린다(940,950). 정족수의 멤버가 성공 메시지를 보내오면(960), 최초의 요청을 수신한 멤버는 구성 변경을 요청했던 사용자에게 긍정 코드(affirmative code)를 리턴할 것이다(970). 그렇지 않은 경우라면, 에러가 리턴될 것이다(980)(도 9 참조). 에러가 리턴되면, 분산 시스템의 사용자는 (상술한 바와 같이) 시스템을 재정의해야 할 것이고, 따라서 동적 복구는 가능하지 않게 된다. 그러나, 리턴 코드가 성공이라면 재구성이 성공적이었음을 보장하고, 정족수의 노드간에 리스트가 서로 일치함으로 보장한다.
전형적인 분산 시스템은 소정의 구성 변경이 시스템 내의 전체 노드에 대해 이루어질 것을 요구한다. 본 발명은 이러한 구성 변경에 대한 요건을 완화하여 정족수의 노드에 대해서만 변경이 이루어질 것을 요구한다. 따라서, 소정의 멤버 노드가 재구성 동작에 대해 가용하지 않은 때라도 분산 시스템의 구성을 변경하는 것이 가능하게 된다.
복구 시나리오에서, 처리 요소들은 시스템의 최신 상태, 예를 들어, 데이타베이스의 최신 버젼을 찾아내기 위해 인카네이션 번호를 교환할 것이다. 시스템 데이타에 대한 변경 (및 인카네이션 번호의 증가)는 정족수(다수)의 등록된 프로세서들이 가용상태일때에만 허용된다. (정적 그룹에 대한) 전통적인 정족수 알고리즘은 간단한 것으로, 다수의 서버가 이용가능하고 가장 높은 인카네이션 번호를 가진 서버가 최신 버젼의 데이타베이스를 가지고 있음을 보장하도록 요구한다. 그러나, 이 알고리즘은 정족수 기반의 복구에 참여하는 그룹이 정적(static)이어야 한다는 제약을 가진다. 즉, 일단 서버 그룹이 정의되면 멤버가 동적으로 추가 또는 삭제되지 못한다. 다시 한번, 본 명세서에서 동적이라 함은, 데이타베이스가 운영중이고 잠재적으로 가용치않은 그룹 내의 하나 이상의 멤버가 있음을 의미한다. 종래에 구성 변경을 수행하는 유일한 방법은 재정의 동작(redefine operation)을 이용하는 것이다. 재정의 동작은 모든 서버의 구성 파일에 변경을 가하는 것으로서 구성 변경 동안에 모든 서버가 가용 상태일 것을 요구한다.
높은 가용성의 컴퓨팅 시스템의 경우, 모든 서버가 가용할 것을 요구하지 않고도 그룹에 대해 프로세서를 추가 또는 삭제할 수 있는 것이 바람직하다. 도 1-5는 참조번호 10으로 표시된 분산 처리 시스템의 다양한 상태를 기술하는 도면으로서, 그룹의 하나 이상의 멤버가 가용치 않을 수 있는 정족수 그룹에 변경을 가하는 경우 그 어려움을 설명하는데 유용하다. 도 1에서, 분산 처리 시스템(10)은 3개의 서버를 포함한다. 이 도면은 서버 그룹에 대한 초기 구성을 나타낸다. 이 그룹은 그룹 인카네이션이 1이고 서버1, 서버2, 및 서버3이라 명칭이 정해진 3개의 서버가 그룹 내에 있도록 구성되었다. 그룹에는 3개의 멤버가 있기 때문에, 그룹 정족수(group quorum)는 2이다. 즉, 3의 다수(majority)는 2이다.
본 발명의 DSRP에 의해 해결되는 문제점을 설명하기 위해, 예를 들어, 서버1이 비가용 상태, 즉, 다운(down)되었다고 가정하자. 나머지 2개의 서버는 살아있고 따라서 그룹은 여전히 변경을 허용하는 정족수를 가지고 있다. 나아가, 관리자는 서버1이 다운되어 또 다른 고장에 대비하기 위해 새로운 서버를 정의하기를 바란다고 가정하자. 또한, 관리자는 3개의 서버, 즉, 서버4, 서버5, 및 서버6을 정의한다고 가정하자. 이 때 서버1이 파워 오프되었기 때문에 그 내부 상태는 변경되지 않는다. 분산 시스템의 새로운 상태는 도 2에 도시되어 있다. 이 새로운 상태에서, 각각의 활성 서버의 멤버 리스트, 즉, 서버2, 서버3, 서버4, 서버5, 및 서버6은 서버1을 포함하기 때문에 그룹 인카네이션은 2이고, 그룹 정족수는 4로서 6개 서버의 다수(majority)는 4임을 의미한다.
이제 시스템 관리자가 서버1을 정의해제(undefine)할 것을 결정한다고 가정하자. 정의해제 동작은 멤버쉽 변경이고 따라서 그룹 인카네이션은 3으로 증가된다. 그 결과적 상태가 도 3에 도시되어 있다. 서버1을 정의해제함으로써 그룹의정족수는 3이 되고(5의 다수는 3), 이로써 시스템은 2개의 고장을 더 감당할 수 있으며 여전히 정족수를 유지하게 된다. 도 4 및 5는 서버 멤버들이 다운된 때에도 DSRP가 소정의 구성 변경을 어떻게 처리하는지를 도시하고 있다. 도 4에서 서버2 및 서버3은 비가용 상태가 되고 새로운 서버7이 정의되는 것으로 가정하자. 그 결과 상태가 도 4에 도시되어 있다.
도 4에 도시된 바와 같이, 그룹 정족수는 4(6의 다수)이다. 이 때에 그룹 내에는 정확히 4개의 멤버가 가동중에 있다. 따라서, 그룹은 여전히 정족수를 가진다. 그 다음, 관리자가 서버2와 서버3을 정의해제하여 전체 서버 개수를 4로 감소시키고자 한다고 가정하자. 이 경우에, 그룹 정족수는 3이 될 것이다. 시스템은 다시 한번 하나의 멤버 고장을 감당할 수 있다. 그 결과 상태(그룹 인카네이션5)가 도 5에 도시되어 있다. 이 예의 최종 상태는 이하에 기술되는 DSRP 알고리즘의 추적을 위한 시작점이 될 것이다.
몇개의 서버가 다운된 동안 도 5의 상태에 도달하도록 만들어진 "동적" 구성 변경이 발생했기 때문에, 시스템의 상태는 일관적이지 못하다. 이제 다운되었던 서버들이 다시 전원공급되었다고 가정하자. 도 5로부터 서버1은 최고 구상태(outdated state)를 가지고 있음이 명백하다. 서버1의 그룹 멤버쉽은 그룹의 현재 번호의 어떠한 것도 포함하고 있지 않다. 본 명세서에서 제공되는 DSRP의 목적은 서버1이 현재 그룹의 멤버가 누구인지를 파악할 수 있도록 하여 이들중 하나로부터 최신 구성을 판독(수신)할 수 있도록 하는 검색 절차를 제공하는 것이다. 검색은, 종료 조건(termination condition)이 TRUE에 도달하거나 현재 그룹의 활성 멤버로부터 검색 정지 메시지가 수신되는 때까지 계속되어야 한다. 종료 조건은, 검색을 수행하는 서버가 인카네이션 번호가 동일한 정족수만큼의 멤버들을 발견할 때 검색이 완료됨을 기술한다. 도 8에 도시된 바와 같이, 검색 종료 조건은 완화(정족수-1)될 수 있다.
동적 재구성을 허용하는 복구 처리에 의해 해결되어야하는 주요한 문제점은 오래된 서버에 관한 문제점이다. 잠재적으로 서버는, 서버 그룹의 정확한 멤버 리스트를 더 이상 보유하지 못할 정도의 장시간 동안 다운될 수 있다. 수개의 멤버들이 더 이상 정의되지 않는 때가 그런 경우가 될 것이며, 문제의 서버가 비가용 상태가 된 후 다른 생존 서버들에 의해 정의해제되었다면 더더욱 그러한 경우에 해당될 것이다. 본 명세서에서 제공되는 분산 서버 복구 처리는, 오래된 서버가 데이타베이스의 최신 사본으로의 액세스를 얻어 스스로를 갱신할 수 있도록 해주는 분산 통신 프로토콜이다.
DSRP 알고리즘은 서버 그룹 상태의 지속적 저장에 근거하고 있다. 이 상태는 인카네이션 번호와, 이 인카네이션 번호에 동의한, 즉 인카네이션 번호를 증가시키는 절차에 참여한 멤버들의 리스트로 구성된다. DSRP 알고리즘이 구체적인 예와 함께 이하에 기술될 것이다. 도 5의 예에서, 복구 이전의 서버 그룹의 상태에대한 스냅샷(snapshot)이 도시되어 있다. 이 상태는 모든 서버들에서 일치하지 않는데, 이는 서버들 중 일부가 갱신되지 않았기 때문이다.
데이타베이스의 최근 사본을 회수하기 위해 DSRP 알고리즘에 의해 취해지는 단계들을 추적해보자. 상술한 시나리오에서 서버1은 더 이상 데이타베이스 서버가 아니지만, 이 서버는 데이타를 액세스할 필요가 있는 다른 중요한 애플리케이션에 대해 서비스할 수도 있다. 여기서 추적되는 단계들은 서버1에서 시작하는 도 6-8에 도시된 본 발명의 DSRP 알고리즘의 실시예를 따른다. 그러나, 전체 고장의 경우(예를 들어, 상술한 시나리오에서 서버 집단이 재부팅된 경우), DSRP 알고리즘은 자신이 서버임을 가리키는 현재 상태를(비록 이 상태 정보가 오래된 정보라 할지라도) 가진 모든 노드에서 수행될 것이다.
서버1으로부터의 단계들은 다음과 같다: 1) 서버1이 그 지속 상태를 판독한다. 그 다음 현재 서버 멤버 리스트 내의 다른 서버들과 접촉을 시도하여 그 인카네이션 번호를 회수할 것이다. 서버2가 더 높은 인카네이션 번호 (3)을 가지고 있기 때문에 서버1 자신의 멤버 리스트는 오래된 것임을 알게 된다. 그 다음, 서버2로부터 서버 리스트를 회수하여 새로운 검색을 위해 사용할 것이다. 2) 앞 단계에서 회수한 리스트를 사용하여, 서버1은 새로운 리스트 내의 멤버들과 동일한 프로토콜을 수행한다. 서버1은 서버3과 접촉한다. 서버3이 서버2와 동일한 인카네이션 번호 (3)을 가지고 있음을 파악한다. 이제 동일한 인카네이션 번호를 갖는 2개의 서버를 알게 되었다(즉 서버2와 서버3 모두가 그 인카네이션 번호가 3이다). 그러나, 그러나 인카네이션 3과 관련된 정족수는 3이기 때문에, 검색을 결론짓기 위해서는 이 단계에서 서버를 하나 더 검색할 필요가 있다. 3) 이제 서버1은 서버4와 접촉하여 그 상태를 회수한다. 서버4가 더 높은 인카네이션 번호 (5)를 가지고 있음을 발견한다. 따라서, 서버2와 서버3도 역시 오래된 것임을 알게된다. 서버4로부터 회수한 상태를 이용하여 검색을 계속한다. 4) 이제 서버1은 새로이 입수한 멤버 리스트에서 방문하지 않은 다음 차례의 서버인 서버5와 접촉한다. 서버5도 역시 동일한 인카네이션 번호 5를 가지고 있음을 알게된다. 이제 인카네이션 번호가 5인 2개의서버를 알게 되었다. 하지만, 인카네이션 번호 5와 관련된 정족수는 3이기 때문에(4의 다수는 3) 하나 더 검색할 필요가 있다.
한 실시예에서, 본 명세서에서 제공하는 DSRP 알고리즘은 특정한 경우에 정족수 요건을 완화시켜 준다. 이 경우에, 예를 들어, 동일한 인카네이션 번호를 갖는 2개의 서버(서버4와 서버5)를 알고 있다. 이들은 4개 구성원으로 된 그룹의 일부이다. 이러한 정보는 2개의 나머지 멤버들이 더 높은 인카네이션 번호를 갖고 있지 않다고 결론짓기에 충분하다. 이는 데이타베이스가 변경되기 위한 정족수는 4의 다수, 즉 3이기 때문이다. 따라서, 서버6 및 서버7이 그룹 내의 다른 서버들중 적어도 하나(서버4 또는 서버5)가 참여하지 않고 구성 변경을 만든다는 것은 불가능하였을 것이다. 서버4와 서버5의 상태는 알려져 있기 때문에, 서버1이 데이타베이스의 최신 인카네이션 번호는 5라 가정하고 검색을 결론지어도 안전하다. 서버1 내의 클라이언트 애플리케이션은 이제 서버4 또는 서버5로부터의 최신 데이타베이스 사본으로 액세스 할 수 있다.
도 6-8은 본 발명의 원리에 따라 구현된 동적 복구 처리(DSRP) 알고리즘의 흐름도를 도시하고 있다. 보다 구체적으로, 도 6은 각각의 서버가 다른 서버(정족수의 프로세서 그룹 내의 다른 프로세서)로부터의 메시지에 지속적으로 주목하는 동적 서버 복구 처리를 도시한다. 그 상태를 갱신할 때, 프로세서는 수신한 각각의 메시지와 더불어 도 7a 및 7b의 메시지_처리_프로시져를 실행할 것이다. 메시지_처리_프로시져는 검색을 종료하기 위해 정족수 번호와 인카네이션 변수를 적절한 상태로 설정하고, 정족수의 서버를 검색하기 위해 사용된 현재의 프로세서 리스트를 수정할 것이다. 각각의 반복의 끝에서, 프로세서는 현재의 검색 리스트 내에 있는 다른 서버들에게 최신의 인카네이션 번호와 현재의 검색 리스트 자체를 전송할 것이다. 도 8은 본 발명의 원리에 따른 "완화된" 정족수를 결정하기 위한 절차의 한 실시예를 도시한다.
도 6에 도시된 바와 같이, DSRP 처리는 정족수의 프로세서 그룹 내의 한 프로세서의 시작 또는 재시작과 더불어 개시된다(100). my_incarnation 및 current_search_list를 포함한 변수들이 초기화된다(110). 그 다음, 검색된 서버의 개수가 정족수에 도달했는지에 관한 질의가 이루어진다(120). "아니오"이면 (서버 그룹의 각각의 재시작된 서버에서 구현된) 프로시져는 또다른 그룹 멤버로부터 메시지가 수신되었는지를 판별한다(130). "아니오"이면, 현재의 서버 리스트와 인카네이션 번호를 포함하는 그룹 내의 각각의 다른 서버에게 메시지를 전송한다(140). 그 다음, 정족수만큼 수행되었는지 질의하기 위해 리턴한다(120).
서버에서 메시지가 수신되었다면, 이하에서 논의되는 도 7a 및 7b의 메시지_처리_프로시져를 실행한다. 메시지_처리_프로시져는 TRUE 또는 FALSE 값을 리턴한다. 따라서, DSRP는 메시지_처리_프로시져가 값을 리턴하는지를 판별한다(160). "아니오"이면, 동적 서버 복구 처리는 계속하고(170), 현재 검색 리스트 내에 있는 각각의 서버에게 현재 서버 리스트 및 인카네이션 번호를 전송하기 위해 되돌아간다. 메시지_처리_프로시져의 리턴값이 TRUE이면, 서버의 현재 검색 리스트 내에 있는 모든 서버에게 StopSearch 메시지를 전송하고(180), 처리를 완료한다(190).
동적 서버 복구 처리의 시작점으로 되돌아가서, 만일 정족수에 도달하면(120)(예를 들어, 정족수 프로세서 그룹내의 하나 이상의 활성 멤버로부터 검색 정지 메시지가 도달하면), 복구 처리는 완료된다(190).
도 7a 및 7b의 메시지_처리_프로시져는 이하의 필드를 포함하는 메시지 데이타 유형을 이용한다:
주 IP 어드레스 : 전송자측의 접촉 어드레스
백업 IP 어드레스 : 주 IP 어드레스의 실패시에 사용되는 백업 접촉 어드레스
인카네이션 : 전송자측에 의해 발견된 가장 최신 정보
서버 리스트 : 전송자측에 의해 발견된 가장 최신의 리스트
메시지의 필드들은 흐름도에서 "." 연산자를 사용하여 표시되어 있다. 예를 들어, msg.incarnation은 메시지의 인카네이션 필드를 지칭한다.
메시지_처리_프로시져는 서버가 수신한 가장 높은 인카네이션 번호를 갖는 메시지의 개수를 셈하여, 이를 도 8의 정족수_계산_프로시져로부터 한 실시예에서 계산된 "완화된" 정족수 요건과 비교할 것이다. 도 7a 및 7b는 정족수 요건이 이루어졌는지를 판별하여 DSRP 태스크가 종료하기 위한 적절한 값들을 설정할 것이다. 그렇지 않은 경우, 루틴은 그 카운터와 검색 리스트를 갱신하고 검색을 계속할 것이다.
도 7a 및 7b를 참조하여, 본 발명의 원리에 따른 메시지_처리_프로시져는 수신된 메시지의 판독과 더불어 시작한다(200). 그 후에, 처리는 메시지의 stop_search 필드가 TRUE인지를 판별한다(210). 만일 그렇다면, 처리는 데이타베이스를 전송자측의 데이타베이스 사본으로 갱신하기 위해 메시지의 전송자측과 접촉하며, 인카네이션 번호를 전송자측의 인카네이션 번호로 갱신한다(220). 그 다음, 메시지_처리_프로시져의 TRUE 리턴 값이 도 6의 동적 서버 복구 처리에게 리턴된다(230).
메시지의 stop_search 필드가 true가 아니라면, 프로시져는 msg.incarnation을 my_incarnation과 비교한다(240). 이 비교의 결과는 3가지 결과가 있을 수 있는다. 첫째, msg.incarnation이 my_incarnation가 동일하다면(250), 처리는 카운터 값을 증가시키고 정족수를 계산한다(260). "완화된" 정족수를 계산하기 위한 한 실시예가 도 8에 도시되어 있다(이하에서 기술된다). 정족수를 계산한 후에, 카운터값이 정족수와 같거나 큰지를 판별한다(270). "예"이면, TRUE값이 동적 서버 복구 처리로 리턴되고(280), 그렇지 않다면, FALSE 값이 리턴되고(290), 처리가 완료된(300).
메시지 헤더 내의 인카네이션 값(msg.incarnation)이 서버의 인카네이션 값보다 크다면, 서버의 현재 리스트를 메시지와 함께 수신된 검색 리스트로 대체하고 카운터를 1로 설정하고 서버의 인카네이션 값을 메시지와 함께 수신된 인카네이션 값으로 갱신한다(320). 그 다음, 처리는 카운터값이 정족수와 같거나 큰지를 판별하고(270), 상술한 바와 같이 진행한다. 수신된 인카네이션 값이 서버의 인카네이션값보다 작다면(330), 메시지의 전송자는 서버의 비활성 서버 리스트에 추가되고, 메시지의 전송자는 활성 서버 리스트로부터 삭제되고, 예를 들어, 도 8의 절차를 이용하여 정족수를 위한 값이 계산된다(340). 정족수를 계산한 후에, 처리는 카운터 값이 정족수보다 큰지를 판별하기 위해 리턴하고, 상술한 바와 같이 진행한다.
다수 개수(majority number)를 사용하는 것에 대한 대안으로서, 도 8에 도시된 바와 같이 정족수가 계산될 수 있다. 이 절차는, 현재의 검색 리스트에서 정족수를 달성하기에 충분한 응답이 수신되었는지를 판별하는데 필요한 최소 개수의 응답을 계산한다. 집합 S는 현재의 검색 리스트에 정의된 모든 등록 서버를 포함한다. 집합 I는 더 낮은 인카네이션 번호로 응답한 서버들을 포함한다. 따라서, 검색으로부터 배제된다. 집합 N은 S-I로서 정의되며 S에 관한 I의 상보값(complement)으로서, 어떠한 응답도 수신되지 않은 멤버를 식별하거나 현재의 인카네이션 번호로 응답한 서버를 식별하기 위한 집합이다. 만일 조건 {S-I>q}이 TRUE이면, 집합 N의 다수값에 해당하는 정족수 요건으로부터 1을 삭감하는 것도 가능하다. 연산자 maj<>는, 연산수(operand)를 2로 나누어 소수부를 버린 결과치에 1을 추가함으로써 계산된다.
도 8을 참조하여, "완화된" 정족수를 계산하기 위한 한 절차가 개시되어(400), 변수 S, I, N, q를 설정한다(410). (다시 한번, 본 명세서에서 S는 정족수 그룹 내의 정의된 서버 개수를 나타내고, I는 그룹 내의 비활성 서버 개수를 나타내고, N은 그룹내의 활성 서버의 개수를 나타내고, q는 정의된 서버 개수의 다수(majority)를 나타낸다) 그 후, 정의된 서버 개수-비활성 서버 개수-1이 정의된 서버의 다수(majority)보다 작은지가 판별된다(420). 만일, 그렇다면, 변수 "U"가 1로 설정되고(430), 그렇지 않다면 "U"는 0으로 설정된다(440). 메시지_처리_프로시져에 리턴되는 정족수 Q는 활성 서버의 다수 - U와 같다(450). 당업자는 상술한 정족수 계산이 다른 정족수 기반 시스템의 계산과 결합하여 사용될 수 있다는 것을 이해할 것이다. 나아가, 본 명세서에서 제시된 동적 서버 복구 처리는 도 8의 "완화된" 다수가 아닌 통상의 정족수인 "다수"를 이용할 수 있다.
본 발명은 컴퓨터가 이용할 수 있는 매체를 갖는 제품 내에 포함될 수 있다. 이 매체는 본 발명의 능력을 제공하고 이용할 수 있도록 해주는 컴퓨터 판독가능 프로그램 코드를 포함한다. 컴퓨터 제품은 컴퓨터 시스템의 일부로서 포함되거나 독립적으로 판매될 수 있다.
추가적으로, 기계에 의해 실행가능한 적어도 하나의 명령으로된 프로그램을담고 있는, 기계가 판독할 수 있는 적어도 하나의 프로그램 저장 장치가 본 발명의 능력을 수행하기 위해 제공된다.
본 명세서에서 설명한 흐름도는 예시적으로 제공된 것이다. 이 흐름도는 본 발명의 정신으로부터 벗어나지 않고 다양한 수정이 만들어 질 수 있다. 예를 들어, 어떤 경우에는 다른 순서로 수행될 수도 있고, 단계들이 추가, 삭제 또는 수정될 수도 있다. 이러한 변경은 첨부된 청구범위에서 인용하는 바와 같이 본 발명의 일부로서 간주된다.
본 발명이 양호한 실시예를 참조하여 상세히 기술되었지만, 당업자에 의해 많은 수정 및 변경이 이루어질 수 있다. 따라서, 첨부된 청구범위는 본 발명의 정신 및 영역 내에 포함되는 이러한 수정 및 변경을 포함하도록 의도된 것이다.
높은 가용성의 분산 컴퓨팅 환경에 상당한 유연성을 제공하는 동적 구성 능력과 복구 처리가 제공된다.

Claims (16)

  1. 분산 컴퓨팅 시스템 내의 프로세서들을 재구성하는 정족수 기반의 방법(quorum based method)에 있어서,
    상기 분산 컴퓨팅 시스템의 정족수의 프로세서 그룹 내에서 정족수의 존재를 식별하는 단계와,
    상기 정족수의 프로세서 그룹중 적어도 하나의 프로세서가 비가용 상태인 동안 상기 정족수의 프로세서 그룹을 동적으로 재구성하는 단계를 포함하고,
    상기 동적 재구성은, 상기 적어도 하나의 프로세서의 비가용 상태에도 불구하고 상기 정족수 프로세서 그룹의 상기 정족수의 프로세서의 존재와 더불어 진행하며,
    상기 동적재구성은, 실행 프로세스(commit process)에 의해, 상기 프로세서의 정족수 그룹의 다중 프로세서를 추가 및/또는 삭제하는 단계를 포함하는 프로세서 재구성 방법.
  2. 제1항에 있어서, 상기 적어도 하나의 프로세서가 가용 상태가 된 후에 복구 처리(recovery processing)를 수행하는 단계를 더 포함하고, 상기 복구 처리는 상기 정족수 그룹의 프로세서들 중 하나 이상의 프로세서로부터 상기 동적으로 재구성된 정족수의 프로세서 그룹의 현재 상태(current state)를 회수하는 단계를 포함하는 프로세서 재구성 방법.
  3. 제2항에 있어서, 상기 복구 처리는
    상기 적어도 하나의 프로세서로부터, 상기 동적으로 재구성된 프로세서 그룹들에 대한 상기 현재 상태를 요청하는 상기 정족수 그룹의 프로세서들 중 적어도 하나의 다른 프로세서에게 메시지를 전송하는 단계를 포함하는 프로세서 재구성 방법.
  4. 제3항에 있어서, 상기 현재 상태는 상기 정족수 그룹의 프로세서들에 대한 멤버 프로세서의 현재 리스트를 포함하고, 상기 복구 처리는 상기 적어도 하나의 프로세서에 있는 프로세서 멤버 리스트를, 상기 정족수 그룹의 프로세서들 중 적어도 하나의 다른 프로세서로부터 회수된 멤버 프로세서들의 상기 현재 리스트로 갱신하는 단계를 더 포함하는 프로세서 재구성 방법.
  5. 분산 컴퓨팅 시스템 내의 프로세서들을 재구성하는 정족수 기반의 방법(quorum based method)에 있어서,
    상기 분산 컴퓨팅 시스템의 정족수의 프로세서 그룹 내에서 정족수의 존재를 식별하는 단계와,
    상기 정족수의 프로세서 그룹중 적어도 하나의 프로세서가 비가용 상태인 동안 상기 정족수의 프로세서 그룹을 동적으로 재구성하는 단계를 포함하고,
    상기 동적 재구성은, 상기 적어도 하나의 프로세서의 비가용 상태에도 불구하고 상기 정족수 프로세서 그룹의 상기 정족수의 프로세서의 존재와 더불어 진행하며,
    상기 적어도 하나의 프로세서가 가용 상태가 된 후에 복구 처리(recovery processing)를 수행하는 단계를 더 포함하고, 상기 복구 처리는 상기 정족수 그룹의 프로세서들 또는 프로세서들 중 하나 이상의 프로세서로부터 상기 동적으로 재구성된 정족수의 프로세서 그룹의 현재 상태(current state)를 회수하는 단계를 포함하고,
    상기 복구 처리는 상기 적어도 하나의 프로세서로부터, 상기 동적으로 재구성된 프로세서 그룹들에 대한 상기 현재 상태를 요청하는 상기 정족수 그룹의 프로세서들 또는 프로세서들 중 적어도 하나의 다른 프로세서에게 메시지를 전송하는 단계를 포함하고,
    상기 복구 처리를 수행하는 단계는 상기 현재 상태를 갖는 상기 정족수 그룹의 프로세서들 중 활성 프로세서로부터의 검색 정지 메시지를 전송하는 단계를 더 포함하고, 상기 검색 정지 메시지는 상기 적어도 하나의 프로세서로부터의 상기 메시지에 응답하는 프로세서 재구성 방법.
  6. 제2항에 있어서, 상기 정족수의 프로세서 그룹내의 각각의 프로세서는 인카네이션 번호(incarnation number)와 상기 인카네이션 번호를 이끌어낸 과정에 참여한 상기 실행 프로세서들의 멤버 리스트(member list)를 포함하고, 상기 복구 처리는 하나 이상의 프로세서 인카네이션 번호와 상기 인카네이션 번호를 이끌어낸 과정에 참여한 프로세서 멤버 리스트를 이용하여 상기 현재 상태를 얻기 위해 상기 정족수의 프로세서 그룹내의 상기 하나 이상의 프로세서를 검사하는 단계를 포함하는 프로세서 재구성 방법.
  7. 제6항에 있어서, 상기 복구 처리는 멤버 프로세서들의 현재 리스트를 이용하여 얻어진 프로세서의 현재 정족수를 이용하여 상기 현재 상태를 판별하는 단계를 포함하는 프로세서 재구성 방법.
  8. 분산 컴퓨팅 시스템 내의 프로세서들을 재구성하는 정족수 기반의 방법(quorum based method)에 있어서,
    상기 분산 컴퓨팅 시스템의 정족수의 프로세서 그룹 내에서 정족수의 존재를 식별하는 단계와,
    상기 정족수의 프로세서 그룹중 적어도 하나의 프로세서가 비가용 상태인 동안 상기 정족수의 프로세서 그룹을 동적으로 재구성하는 단계를 포함하고,
    상기 동적 재구성은, 상기 적어도 하나의 프로세서의 비가용 상태에도 불구하고 상기 정족수 프로세서 그룹의 상기 정족수의 프로세서의 존재와 더불어 진행하며,
    상기 적어도 하나의 프로세서가 가용 상태가 된 후에 복구 처리(recovery processing)를 수행하는 단계를 더 포함하고, 상기 복구 처리는 상기 정족수 그룹의 프로세서들 또는 프로세서들 중 하나 이상의 프로세서로부터 상기 동적으로 재구성된 정족수의 프로세서 그룹의 현재 상태(current state)를 회수하는 단계를 포함하고,
    상기 정족수의 프로세서 그룹내의 각각의 프로세서는 인카네이션 번호(incarnation number)와 상기 인카네이션 번호를 이끌어낸 과정에 참여한 상기 실행 프로세서들의 멤버 리스트(member list)를 포함하고, 상기 복구 처리는 하나 이상의 프로세서 인카네이션 번호와 상기 인카네이션 번호를 이끌어낸 과정에 참여한 프로세서 멤버 리스트를 이용하여 상기 현재 상태를 얻기 위해 상기 정족수의 프로세서 그룹내의 상기 하나 이상의 프로세서를 검사하는 단계를 포함하고,
    상기 복구 처리는 멤버 프로세서들의 현재 리스트를 이용하여 얻어진 프로세서의 현재 정족수를 이용하여 상기 현재 상태를 판별하는 단계를 포함하며,
    상기 하나 이상의 프로세서에 의해 유지되는 멤버 프로세서들의 상기 리스트는 상기 하나 이상의 프로세서들의 각각의 프로세서에 대해 상기 그룹의 비활성 프로세서 리스트와 상기 그룹의 활성 프로세서 리스트를 포함하고, 정의된 프로세서 개수 - 비활성 리스트 내의 프로세서 개수 - 1이 활성 리스트 내의 프로세서 개수의 다수(majority)보다 작다면, 상기 정족수는 특정의 프로세서에 대해 상기 정족수의 프로세서 그룹에 있어서 정의된 프로세서들의 다수보다 작은 수를 포함하는 프로세서 재구성 방법.
  9. 제2항에 있어서, 상기 복구 처리는
    상기 정족수의 프로세서 그룹의 현재 인카네이션 번호와 프로세서 현재 리스트가 가용 상태로 된 상기 적어도 하나의 프로세서에 전파될 수 있도록 상기 정족수의 프로세서 그룹내의 프로세서들의 상태를 교환하는 단계를 포함하는 프로세서 재구성 방법.
  10. 제1항에 있어서, 상기 동적으로 재구성하는 단계는 상기 정족수의 프로세서 그룹에 하나의 프로세서를 추가하거나, 상기 정족수의 프로세서 그룹으로부터 하나의 프로세서를 삭제하는 단계를 포함하는 프로세서 재구성 방법.
  11. 제1항에 있어서, 상기 분산 컴퓨팅 시스템은 비공유 분산 컴퓨팅 시스템(shared nothing distributed computing system)을 포함하는 프로세서 재구성 방법.
  12. 분산 컴퓨팅 시스템 내의 프로세서들을 재구성하는 시스템에 있어서,
    상기 분산 컴퓨팅 시스템의 정족수의 프로세서 그룹 내에서 정족수의 존재를 식별하기 위한 수단과,
    상기 정족수의 프로세서 그룹중 적어도 하나의 프로세서가 비가용 상태인 동안 상기 정족수의 프로세서 그룹을 동적으로 재구성하기 위한 수단을 포함하고,
    상기 동적 재구성을 위한 수단은, 상기 적어도 하나의 프로세서의 비가용 상태에도 불구하고 상기 정족수 프로세서 그룹의 상기 정족수의 프로세서의 존재와 더불어 상기 재구성을 진행하기 위한 수단을 포함하며,
    상기 동적재구성은, 실행 프로세스(commit process)에 의해, 상기 프로세서의 정족수 그룹의 다중 프로세서를 추가 및/또는 삭제하는 단계를 포함하는 프로세서 재구성 시스템.
  13. 분산 컴퓨팅 시스템에 있어서,
    프로세서 그룹을 포함하되, 상기 프로세서 그룹은,
    상기 프로세서 그룹 내에서 정족수의 존재를 식별하고,
    상기 프로세서 그룹 내의 적어도 하나의 프로세서가 비가용 상태인 동안 상기 프로세서 그룹을 동적으로 재구성하도록 되어 있고,
    상기 동적 재구성은, 상기 적어도 하나의 프로세서의 비가용 상태에도 불구하고 상기 프로세서 그룹의 상기 정족수의 프로세서의 존재와 더불어 진행하고,
    상기 동적재구성은 실행 프로세스(commit process)에 의해, 상기 프로세서의 정족수 그룹의 다중 프로세서를 추가 및/또는 삭제하는 단계를 포함하는 분산 컴퓨팅 시스템.
  14. 제1항 내지 제11항 중 어느 하나의 항에 기재된 액세스를 제어하는 방법을 실행시키기 위한 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체.
  15. 분산 컴퓨팅 시스템 내의 프로세서들을 재구성하는 시스템에 있어서,
    상기 분산 컴퓨팅 시스템의 정족수의 프로세서 그룹 내에서 정족수의 존재를 식별하기 위한 수단과,
    상기 정족수의 프로세서 그룹중 적어도 하나의 프로세서가 비가용 상태인 동안 상기 정족수의 프로세서 그룹을 동적으로 재구성하기 위한 수단을 포함하고,
    상기 동적 재구성을 위한 수단은, 상기 적어도 하나의 프로세서의 비가용 상태에도 불구하고 상기 정족수 프로세서 그룹의 상기 정족수의 프로세서의 존재와 더불어 상기 재구성을 진행하기 위한 수단을 포함하며,
    상기 적어도 하나의 프로세서가 가용상태가 된 후 복구처리를 수행하기 위한 수단을 더 포함하고, 복구 처리를 수행하기 위한 상기 수단은, 상기 정족수의 프로세서 그룹중 하나이상의 프로세서로부터 상기 동적으로 재구성된 정족수의 프로세서 그룹의 현재상태를 회수하기 위한 수단을 포함하며,
    복구처리를 수행하기 위한 상기 수단은, 상기 적어도 하나의 프로세서로부터 상기 동적으로 재구성된 프로세서 그룹에 대한 현재 상태를 요청하는 상기 정족수의 프로세서 그룹의 적어도 하나의 다른 프로세서에게 메시지를 전송하기 위한 수단을 포함하며,
    복구처리를 수행하기 위한 상기 수단은, 상기 현재상태를 갖는 상기 정족수 그룹의 프로세서들 중 활성프로세서로부터의 검색정지메시지를 전송하기 위한 수단을 더 포함하고, 상기 검색정지 메시지는 상기 적어도 하나의 프로세서로부터의 상기 메시지에 응답하는 프로세서 재구성 시스템.
  16. 분산 컴퓨팅 시스템 내의 프로세서들을 재구성하는 시스템에 있어서,
    상기 분산 컴퓨팅 시스템의 정족수의 프로세서 그룹 내에서 정족수의 존재를 식별하기 위한 수단과,
    상기 정족수의 프로세서 그룹중 적어도 하나의 프로세서가 비가용 상태인 동안 상기 정족수의 프로세서 그룹을 동적으로 재구성하기 위한 수단을 포함하고,
    상기 동적 재구성을 위한 수단은, 상기 적어도 하나의 프로세서의 비가용 상태에도 불구하고 상기 정족수 프로세서 그룹의 상기 정족수의 프로세서의 존재와 더불어 상기 재구성을 진행하기 위한 수단을 포함하며,
    상기 적어도 하나의 프로세서가 가용상태가 된 후 복구처리를 수행하기 위한 수단을 더 포함하고, 복구 처리를 수행하기 위한 상기 수단은, 상기 정족수의 프로세서 그룹중 하나이상의 프로세서로부터 상기 동적으로 재구성된 정족수의 프로세서 그룹의 현재상태를 회수하기 위한 수단을 포함하며,
    상기 정족수의 프로세서 그룹내의 각각의 프로세서는 인카네이션 번호(incarnation number)와 상기 인카네이션 번호를 이끌어낸 과정에 참여한 프로세서들의 멤버 리스트(member list)를 포함하고, 상기 복구 처리를 위한 수단은, 하나 이상의 프로세서 인카네이션 번호와 상기 인카네이션 번호를 이끌어낸 과정에 참여한 프로세서 멤버 리스트를 이용하여 상기 현재 상태를 얻기 위해 상기 정족수의 프로세서 그룹내의 상기 하나 이상의 프로세서를 검사하기 위한 수단을 포함하며,
    상기 복구 처리를 위한 수단은 멤버 프로세서들의 현재 리스트를 이용하여 얻어진 프로세서의 현재 정족수를 이용하여 상기 현재 상태를 판별하기 위한 수단을 포함하며,
    상기 하나 이상의 프로세서에 의해 유지되는 멤버 프로세서들의 상기 리스트는 상기 하나 이상의 프로세서들의 각각의 프로세서에 대해 상기 그룹의 비활성 프로세서 리스트와 상기 그룹의 활성 프로세서 리스트를 포함하고, 정의된 서버 개수 - 비활성 리스트 내의 서버 개수 - 1이 활성 리스트 내의 프로세서 개수의 다수(majority)보다 작다면, 상기 정족수는 특정의 프로세서에 대해 상기 정족수의 프로세서 그룹에 있어서 정의된 프로세서들의 다수보다 작은 수를 포함하는 프로세서 재구성 시스템.
KR10-2000-0048267A 1999-08-31 2000-08-21 분산 컴퓨팅 시스템 내의 정족수 프로세서 그룹의 동적재구성 KR100387700B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US9/387,666 1999-08-31
US09/387,666 1999-08-31
US09/387,666 US6490693B1 (en) 1999-08-31 1999-08-31 Dynamic reconfiguration of a quorum group of processors in a distributed computing system

Publications (2)

Publication Number Publication Date
KR20010050140A KR20010050140A (ko) 2001-06-15
KR100387700B1 true KR100387700B1 (ko) 2003-06-18

Family

ID=23530876

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-0048267A KR100387700B1 (ko) 1999-08-31 2000-08-21 분산 컴퓨팅 시스템 내의 정족수 프로세서 그룹의 동적재구성

Country Status (3)

Country Link
US (1) US6490693B1 (ko)
JP (1) JP3706531B2 (ko)
KR (1) KR100387700B1 (ko)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6694455B1 (en) * 2000-06-16 2004-02-17 Ciena Corporation Communications network and method performing distributed processing of fault and alarm objects
US6816461B1 (en) * 2000-06-16 2004-11-09 Ciena Corporation Method of controlling a network element to aggregate alarms and faults of a communications network
US7289429B2 (en) * 2001-06-01 2007-10-30 Fujitsu Network Communications, Inc. System and method to perform non-service effecting bandwidth reservation using a reservation signaling protocol
US6904448B2 (en) * 2001-12-20 2005-06-07 International Business Machines Corporation Dynamic quorum adjustment
US6990608B2 (en) * 2002-04-25 2006-01-24 Hewlett-Packard Development Company, L.P. Method for handling node failures and reloads in a fault tolerant clustered database supporting transaction registration and fault-in logic
US7363347B2 (en) * 2002-11-07 2008-04-22 Hewlett-Packard Development Company, L.P. Method and system for reestablishing connection information on a switch connected to plural servers in a computer network
US8051176B2 (en) 2002-11-07 2011-11-01 Hewlett-Packard Development Company, L.P. Method and system for predicting connections in a computer network
US8285825B1 (en) 2002-11-13 2012-10-09 Novell, Inc. Method and system for managing network resources based on a dynamic quorum
US7120821B1 (en) * 2003-07-24 2006-10-10 Unisys Corporation Method to revive and reconstitute majority node set clusters
US7366109B2 (en) * 2003-10-29 2008-04-29 Nortel Networks Limited Virtual private networks within a packet network having a mesh topology
JP3808874B2 (ja) * 2004-03-12 2006-08-16 東芝ソリューション株式会社 分散システム及び多重化制御方法
US7856502B2 (en) * 2004-06-18 2010-12-21 Microsoft Corporation Cheap paxos
US7334154B2 (en) * 2004-06-18 2008-02-19 Microsoft Corporation Efficient changing of replica sets in distributed fault-tolerant computing system
US20060080574A1 (en) * 2004-10-08 2006-04-13 Yasushi Saito Redundant data storage reconfiguration
JP4505763B2 (ja) * 2007-01-31 2010-07-21 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. ノードクラスタの管理
US8443062B2 (en) * 2008-10-23 2013-05-14 Microsoft Corporation Quorum based transactionally consistent membership management in distributed storage systems
US20100114826A1 (en) * 2008-10-24 2010-05-06 Microsoft Corporation Configuration management in distributed data systems
US8370493B2 (en) 2008-12-12 2013-02-05 Amazon Technologies, Inc. Saving program execution state
US8819106B1 (en) 2008-12-12 2014-08-26 Amazon Technologies, Inc. Managing distributed execution of programs
US8321558B1 (en) 2009-03-31 2012-11-27 Amazon Technologies, Inc. Dynamically monitoring and modifying distributed execution of programs
US8296419B1 (en) 2009-03-31 2012-10-23 Amazon Technologies, Inc. Dynamically modifying a cluster of computing nodes used for distributed execution of a program
US9135268B2 (en) * 2009-12-30 2015-09-15 Symantec Corporation Locating the latest version of replicated data files
US8103905B2 (en) * 2010-03-12 2012-01-24 Microsoft Corporation Detecting and recovering from process failures
US8443231B2 (en) * 2010-04-12 2013-05-14 Symantec Corporation Updating a list of quorum disks
US8326801B2 (en) 2010-11-17 2012-12-04 Microsoft Corporation Increasing database availability during fault recovery
JP6459702B2 (ja) * 2015-03-26 2019-01-30 日本電気株式会社 データベースシステム、情報記憶方法、プログラム
US10481963B1 (en) * 2016-06-29 2019-11-19 Amazon Technologies, Inc. Load-balancing for achieving transaction fault tolerance
CN112202746B (zh) * 2020-09-24 2023-04-21 北京百度网讯科技有限公司 Rpc成员信息获取方法、装置、电子设备和存储介质
WO2023148976A1 (ja) * 2022-02-07 2023-08-10 株式会社Pfu ノード装置、クラスタ再構成方法、プログラム及びクラスタシステム

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5261085A (en) 1989-06-23 1993-11-09 Digital Equipment Corporation Fault-tolerant system and method for implementing a distributed state machine
CA2048306A1 (en) 1990-10-02 1992-04-03 Steven P. Miller Distributed configuration profile for computing system
US5339404A (en) 1991-05-28 1994-08-16 International Business Machines Corporation Asynchronous TMR processing system
US5668986A (en) 1991-10-02 1997-09-16 International Business Machines Corporation Method and apparatus for handling data storage requests in a distributed data base environment
JP3649345B2 (ja) 1994-05-26 2005-05-18 富士ゼロックス株式会社 情報処理システム
US5659682A (en) 1994-06-16 1997-08-19 International Business Machines Corporation Scheme to determine completion of directory operations for server recovery
US5608865A (en) 1995-03-14 1997-03-04 Network Integrity, Inc. Stand-in Computer file server providing fast recovery from computer file server failures
US5604862A (en) 1995-03-14 1997-02-18 Network Integrity, Inc. Continuously-snapshotted protection of computer files
US5675723A (en) 1995-05-19 1997-10-07 Compaq Computer Corporation Multi-server fault tolerance using in-band signalling
US5696895A (en) 1995-05-19 1997-12-09 Compaq Computer Corporation Fault tolerant multiple network servers
US5682470A (en) 1995-09-01 1997-10-28 International Business Machines Corporation Method and system for achieving collective consistency in detecting failures in a distributed computing system
JP3174252B2 (ja) * 1995-10-13 2001-06-11 キヤノン株式会社 インクタンクおよびその製造方法
US5787250A (en) * 1996-04-30 1998-07-28 International Business Machines Corporation Program product for managing membership of a group of processors in a distributed computing environment
US5787249A (en) * 1996-04-30 1998-07-28 International Business Machines Coporation Method for managing membership of a group of processors in a distributed computing environment
US5896503A (en) * 1996-07-23 1999-04-20 International Business Machines Corporation Managing membership of a domain of processors in a distributed computing environment
US6002851A (en) * 1997-01-28 1999-12-14 Tandem Computers Incorporated Method and apparatus for node pruning a multi-processor system for maximal, full connection during recovery
US6108699A (en) * 1997-06-27 2000-08-22 Sun Microsystems, Inc. System and method for modifying membership in a clustered distributed computer system and updating system configuration
US5999712A (en) * 1997-10-21 1999-12-07 Sun Microsystems, Inc. Determining cluster membership in a distributed computer system
US6647508B2 (en) * 1997-11-04 2003-11-11 Hewlett-Packard Development Company, L.P. Multiprocessor computer architecture with multiple operating system instances and software controlled resource allocation
US6202067B1 (en) * 1998-04-07 2001-03-13 Lucent Technologies, Inc. Method and apparatus for correct and complete transactions in a fault tolerant distributed database system
US6163855A (en) * 1998-04-17 2000-12-19 Microsoft Corporation Method and system for replicated and consistent modifications in a server cluster
US6243744B1 (en) * 1998-05-26 2001-06-05 Compaq Computer Corporation Computer network cluster generation indicator

Also Published As

Publication number Publication date
JP2001109726A (ja) 2001-04-20
KR20010050140A (ko) 2001-06-15
US6490693B1 (en) 2002-12-03
JP3706531B2 (ja) 2005-10-12

Similar Documents

Publication Publication Date Title
KR100387700B1 (ko) 분산 컴퓨팅 시스템 내의 정족수 프로세서 그룹의 동적재구성
KR100387701B1 (ko) 정족수 기반의 동작을 위한 완화된 정족수 계산
US11265216B2 (en) Communicating state information in distributed operating systems
US6487678B1 (en) Recovery procedure for a dynamically reconfigured quorum group of processors in a distributed computing system
US11924044B2 (en) Organizing execution of distributed operating systems for network devices
US6925490B1 (en) Method, system and program products for controlling system traffic of a clustered computing environment
US6847993B1 (en) Method, system and program products for managing cluster configurations
US7103664B1 (en) Method, system and program products for ordering lists of service addresses to provide load balancing of a clustered environment
US7185076B1 (en) Method, system and program products for managing a clustered computing environment
US6725261B1 (en) Method, system and program products for automatically configuring clusters of a computing environment
US6801937B1 (en) Method, system and program products for defining nodes to a cluster
US11316775B2 (en) Maintaining coherency in distributed operating systems for network devices
US6973473B1 (en) Method, system and program products for managing identifiers of components of a clustered environment
US6892316B2 (en) Switchable resource management in clustered computer system
KR100423225B1 (ko) 클러스터링된 컴퓨터 시스템을 위한 통합 프로토콜
US6807557B1 (en) Method, system and program products for providing clusters of a computing environment
US6526432B1 (en) Relaxed quorum determination for a quorum based operation of a distributed computing system
US20240028611A1 (en) Granular Replica Healing for Distributed Databases

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: 20110502

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee