KR101992508B1 - 고가용성 클러스터에서의 스플릿브레인 방지 페일오버 - Google Patents
고가용성 클러스터에서의 스플릿브레인 방지 페일오버 Download PDFInfo
- Publication number
- KR101992508B1 KR101992508B1 KR1020147014185A KR20147014185A KR101992508B1 KR 101992508 B1 KR101992508 B1 KR 101992508B1 KR 1020147014185 A KR1020147014185 A KR 1020147014185A KR 20147014185 A KR20147014185 A KR 20147014185A KR 101992508 B1 KR101992508 B1 KR 101992508B1
- Authority
- KR
- South Korea
- Prior art keywords
- master
- current
- machines
- candidates
- cluster
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/142—Reconfiguring to eliminate the error
- G06F11/1425—Reconfiguring to eliminate the error by reconfiguration of node membership
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
- G06F11/187—Voting techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/2028—Failover techniques eliminating a faulty processor or activating a spare
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2097—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Hardware Redundancy (AREA)
Abstract
본 발명은 클러스터 머신들 사이의 스플릿브레인 현상을 피하면서 마스터 후보군의 클러스터 머신들 사이에 페일오버를 제공하는 것에 관한 것이다. 본 발명에 따라, 고가용성 클러스터의 노드들 사이에서 페일오버를 제공하기위해 상태들을 동기적으로 복제하는 방법이 제공된다. 클러스터의 노드들은 컴퓨터, 서버, 기타 네트웍 클라이언트를 서비스하는 다른 장치와 같은 머신들을 갖는다. 이 방법에 의하면, 마스터 후보의 수 m과 정족수 머신의 수 n이 클러스터에 속하는 머신들 중에서 확인된다. 페일오버를 제공하려면 m≥2이어야 한다. 정족수가 의미를 가지려면, n≥3이면서 홀수여야 한다.
Description
본 발명은 네트웍 클라이언트를 서비스하는 고가용성 머신 클러스터들에서의 장애와 데이터손실의 제한에 관한 것으로, 구체적으로는 클러스터 머신들 사이의 스플릿브레인(split brain) 현상을 피하면서 마스터 후보군의 클러스터 머신들 사이에 페일오버를 제공하는 것에 관한 것이다.
현대 컴퓨터 클러스터는 대개 지리적으로 묶여있다. 이런 클러스터는 대량의 노드로 이루이지기도 한다. 각각의 노드는 간단히 머신이라고 하는 해당 서버나 컴퓨터나 다른 노드장치에 연계된다. 클러스터는 하드디스크나 다른 대량저장장치와 같은 저장장치와 같은 리소스는 물론, 많은 종류의 주변 리소스(예; 모니터, 프린터)를 갖는다. 또, 일반 컴퓨터 클러스터의 인프라스트럭처는 스위치, 라우터, 허브 등을 포함한다. 이런 인프라스트럭처의 도움으로, PC와 같은 클라이언트는 인터넷과 같은 WAN(wide area network)을 통해 클러스터에 연결되고, 클러스터의 서비스와 리소스를 이용한다. 가장 일반적인 서비스는 전자메일과 같은 원격 어플(또는 애플리케이션)이다.
클러스터가 WAN에 연결된다 해도, 자체 별도의 LAN(local area network)을 통해 동작하는 것이 보통이다. LAN은 노드들 사이의 사적 연결을 제공한다. 이런 연결은 노드들과 다른 유용한 기능들 사이의 통신에 사용되기도 한다. 이런 기능에, 동기화 신호의 분산(마스터 클럭)과 노드들 사이의 심박신호의 전달을 통해 상태를 확인하거나 각종 클러스터 리소스들에 독립적으로 접속하는 것이 있다.
최근까지 클러스터 리소스들과 대량저장장치들은 노드들 사이에서 공유되는 것이 보통이지만, 이렇게 공유된 저장 리소스들은 클러스터에서 장애를 일으키는 것이 일반적이다. 또, 공유된 저장 리소스들은 클러스터 노드들은 살아있지만 노드들 사이의 네트웍 연결은 잃는 스플릿브레인 현상에 아주 민감하다. 이런 현상에서는 노드들이 개별적으로 클러스터와 그 리소스들의 제어를 경쟁적으로 취할 수 있어, 예컨대 2개 이상의 노드들이 파일시스템들에 대해 동시에 설치와 쓰기(라이트)를 관리할 때 아주 치명적 결과를 초래할 수 있다.
클러스터의 노드들은 노드 장애에 견디기 위한 조정이 필요하다. 이런 이유로, 능동적이거나 리더격의 마스터노드로 어떤 한 노드를 선택하는 것이 보통이다. 마스터 노드가 장애를 가지면, 클러스터는 자동적으로 새 마스터로 바꾸는데, 이런 과정을 페일오버(failover)라 한다. 페일오버 과정이 신속하고 클라이언트가 겪는 모든 서비스 중단은 최소화해야 하는 것이 당연하다. 특히 많은 클라이언트에게 거의 중단없는 서비스를 제공하고자 하는 최근의 "고가용성" 클러스터에는 더욱 그렇다.
물론, 컴퓨터 클러스터의 등장 이전에도, 개별 컴퓨터에서의 장애허용은 문제였다. 특히, CPU, 파워, 버스 등이 달려있고 이들 사이에 페일오버를 실현하는 컴퓨터의 개념이 많이 소개되었다. 예를 들어, Abe의 USP7,441,150은 장애허용 컴퓨터 시스템과 중단제어 방법을 소개하고 있다.
불행히도, 장애허용 컴퓨터의 시스템과 장애허용 클러스터의 시스템 사이의 페일오버에 관한 문제는 새로운 개념의 도래와 마찬가지로 충분하지 않다. 한편, 과거 20년간의 트렌드는 싱글머신 디자인에서 각개 요소가 많이 달려있는 개별 서버나 메인프레임보다는 개별 머신들이 많이 달려있고 장애를 겪을 수 있는 분산시스템이 선호되고 있다.
장애허용을 위한 종래의 많은 방법들 중에서도, 신뢰성 없는 프로세서나 컴퓨터의 네트웍에서의 합의를 본 많은 프로토콜들이 있다. 합의는 일단의 참가자들 중에서 네트웍 리더와 같은 하나의 결과에 동의하는 과정이다. 참가자, 즉 개별 컴퓨터나 프로세서나 통신매체들이 장애를 겪을 때는 이 문제가 어려워진다. 이 문제를 해결하는 가장 효과적인 방법은 참가 컴퓨터들 중의 정족수가 투표하여 리더를 선출하고 바꾸는 것이다. Paxos 프로토콜은 정족수 투표와 필요한 단계들을 하는 기존의 가장 널리 알려진 방식들 중의 하나이다. 이런 프로토콜의 많은 핵심 특징들이 Lamport의 USP5,261,085에 소개되었다.
컴퓨터 클러스터에서의 페일오버를 가속하고 서비스중단을 최소화하기 위한 적절한 동기화 아키텍처와 방법들도 많다. 예컨대, Zhou의 USP7,194,652에 소개된 "high availability" 시스템에서는 한쪽 제어 프로세서가 "활동"인 동안 다른 제어 프로세서는 "대기"모드에 있다. 대기 프로세서는 "대기 영상" 형태로 활동 프로세서의 상태정보를 지속적으로 받는다. 대기영상이 활동영상에 동기화되기 때문에, 활동중인 제어프로세서에 장애가 있을 때 대기 프로세서에 의한 활동모드로의 급속변화가 가능하다. 이 방식은 고가용성 클러스터의 페일오버에는 적절하지만, 스플릿브레인 문제는 해결하지 못한다.
Moscirella의 USP7,590,886은 장애허용 시스템에서의 디바이스 리던던시를 촉진하는 문제를 제시한다. 이 시스템의 장치는 활동모드와 대기모드에 있다. 컨피그 시퀀스 넘버를 증분하면서 주기적인 광고를활동모드의 장치들 각각과 리던던시 그룹과 교체하여 장애허용을 보장한다. 장치들의 상태변화는 비동기적으로 전파된다. 이 방법에서는 장애허용은 되지만 많은 노드와 리소스와 대량의 상태정보를 갖는 고가용성 클러스터에는 부적절하다. 특히, 클러스터 어플에서는 이 방법으로 충분한 페일오버를 할 수 없고 스플릿브레인 현상도 피할 수 없다.
Katkar의 USP7,953,890에서는 새로운 클러스터 리소스나 클러스터 머신으로 바꾸는 방법을 소개한다. 스플릿브레인 현상을 방지하기 위해, 코디네이터는 어떤서비스를 주어진 시점에 운용할지 말지를 결정하는 싱글 머신이다. 이 방식에서는, 클러스터내의 각 노드가 새 코디네이터 리소스를 사용할 수 있어야 한다. 이것은 하나 이상의 노드가 오프라인일 때 클러스터나 그 일부는 불능화된다는 것을 의미한다. 또, 이 방식은 개별 클러스터 노드의 저레벨보다는 전체 클러스터의 레벨에 적당하다. 끝으로, 코디네이터가 싱글 머신이기 때문에, 코디네이터가 백업되지 않으면 효율적인 페일오버를 할 수 없다.
클러스터 레벨에서 스플릿브레인 현상의 방지를 보조하면서 페일오버를 하는 기술이 Wetmore의 USP8,001,413에 소개되었다. 이 기술은 전체 데이터센터측의 레벨로 적용된다. 데이터센터는 서비스를 작동할 시기를 결정하는 코디네이터를 등록한다. 패시브/백업 데이터센터와 전에 활동한 데이터센터가 둘다 동시에 작동하지 못하도록 하여 스플릿브레인 현상의 방지에 도움을 주도록 타임아웃제를 이용한다. 여기서는 스플릿브레인 현상을 해결해 2개의 데이터센터가 동시에 온라인되는 것은 피했지만, 클러스터 노드들 사이의 자동 페일오버에는 부적절하다.
사실상 많은 유용한 방법과 프로토콜들이 있지만, 종래에는 고가용성 클러스터에서 스플릿브레인 현상을 피하면서 페일오버를 보장하는 통합적이고 효과적인 방법이 없다.
본 발명의 목적은 고가용성 클러스터에서 스플릿브레인 방지 페일오버를 달성하는 방법을 제공하는데 있다. 구체적으로는 높은 장애허용 클러스터 동작을 보장하도록 시한(time-limited) 리스(lease)와 정족수기반 다수결 투표 전략을 결합하는 것이 본 발명의 목적이다.
본 발명의 다른 목적은 Paxos 프로토콜이나 ZooKeeper Atomic Broadcast 프로토콜을 포함해 정족수기반 다수결 투표를 이용하는 표준 네트웍 프로토콜로 쉽게 적용되는 방법을 제공하는데 있다.
본 발명의 또다른 목적은 동기적 상태복제의 도움으로 로컬 하드디스크에 쓰기를 하는 레거시 어플의 안전한 페일오버도 허용하는 신속한 스플릿브레인 방지 페일오버를 제공하는데 있다.
본 발명의 이런 목적들과 장점들은 고가용성 클러스터의 노드들 사이에서 페일오버를 제공하기위해 상태들을 동기적으로 복제하는 방법에 의해 달성된다. 이런 노드들은 컴퓨터, 서버, 기타 네트웍 클라이언트를 서비스하는 다른 장치와 같은 머신들을 갖는다. 이 방법에 의하면, 마스터 후보의 수 m과 정족수 머신의 수 n이 클러스터에 속하는 머신들 중에서 확인된다. 페일오버를 제공하려면 m≥2이어야 한다. 정족수가 의미를 가지려면, n≥3이면서 홀수여야 한다.
머신이 기능을 공유할 수 있어, 마스터 후보들이 원칙적으로는 정족수 머신일 수 있지만, 마스터 후보와 정족수 머신은 다른 머신인 것이 바람직하다. 또, 정족수 머신이 주어진 클러스터에서 모여있는 것이 보통이지만, 서로 격리되는 것이 바람직하다.
동작중에 각각의 마스터 후보는 현재 상태를 유지하도록 동기적으로 업데이트된다. 상태는 머신에서 돌아가는 어플(코드)에 의해 결정적으로 실행되는 머신 입력값 세트를 포함한다. 동잃머신 입력값으로 시작하고 동일한 어플을 운용하는 모든 머신의 출력값들은 같다. 머신들 사이의 동기적 업데이트는 LAN을 통해 이루어지는 것이 좋다. 한편, 서비스는 보통 WAN을 통한 통신에 의하고, 네트웍 클라이언트는 WAN을 통해 클러스터에 접속한다. WAN의 일례로 인터넷이 있다.
이 방법은 m개의 마스터 후보들 중에서 현행 마스터를 선출하기도 한다. 이런 선거는 정족수 머신들 사이에서의 정족수기반 다수결 투표에 의한다. 이렇게 선출된 현행 마스터는 수초 내지 수십초 정도의 시간의 현행 시한 리스를 발급받는다. 이 리스는 현행 마스터에 속하는 로컬클럭에 의해 측정된다. 리스를 유지하거나 리스가 끝날 때까지 현행 마스터는 네트웍 클라이언트가 요청한 서비스를 운용한다.
본 발명에 의하면, 현행 시한 리스의 상대적 클럭스큐(clock skew)의 상한을 정하는데, 이 단계는 데이터 수정치들 사이의 진연을 비교하여 상대적 클럭스큐를 추정하는 것을 기반으로 한다. 이어서, 이런 지연들을 근거로 상한을 조정한다. 한편, 로컬클럭의 물성에서 상한이 결정되기도 한다. 여기서 물성이라고 하는 각종 요인들로 인해 클럭이 드리프트한다고 알려져 있다. 본 발명에 가장 적합한 물성으로는 온도 드리프트와 진동 드리프트가 있다. 상대적 클럭스큐를 결정하는 다른 방식은 클러스터에 모여있거나 외부에 있는 중앙 클럭과 비교하는 것이다.
본 발명의 방법으로 구성했을 때, 현행 마스터의 장애로 인해 m개의 마스터 후보들 사이에서 새 마스터로의 페일오버가 일어난다. 새 마스터는 새 시한 리스를 발급받고, 최대 클럭스큐보다 작지 않은 시간을 대기한 뒤 마스터 서비스를 개시한다. 이 방법은 마스터 후보들이 현행 마스터이든 아니든 후보들 사이의 스플릿브레인 현상을 효과적으로 방지한다.
본 발명은 m개 마스터 후보들로부터 현행 백업마스터를 선출하기도 한다. 따라서, 현행 마스터가 장애를 가질 때, 페일오버 전에 승계가 결정된다. 정족수 머신들 사이에서 한번더 정족수기반 다수결 투표가 이루어진다. 현행 마스터가 장애인 경우, 현행 백업마스터로 페일오버가 진행한다.
어떤 경우에는 후보 마스터 머신들의 수 m을 늘이거나 줄일 수 있다. 늘일 때는, 클러스터에 속하는 새 후보 머신을 확인하고 현행 상태를 유지하도록 동기적으로 업데이트한다. 일단 새 후보 머신이 현재상태를 가지면, m에 새 후보머신을 추가하고 m을 m+1로 증분한다. 마찬가지로, m을 줄일 때는, m개의 마스터 후보들 중의 어떤 후보머신을 확인하고 제거하여, m을 m-1로 감분한다.
본 발명은 네트웍 클라이언트에게 레거시 어플을 서비스할 때 특히 적합하다. 레거시 어플은 클러스터의 모든 적당한 리소스에 있을 수 있다.
본 발명의 방법은 네트웍 클라이언트에게 서비스하는 고가용성 클러스터를 작동하는데까지 확장된다.
본 발명의 방법은 스플릿브레인 현상 없이 고가용성 클러스터의 노드들 사이에서 페일오버를 할 수 있다. 전술한 바와 같이, m≥2이고 n≥3의 홀수인 것을 확인한다. 현 상태를 유지하도록 마스터 후보들이 동기적으로 업데이트된다. 현행 마스터는 정족수 머신들 사이에서 한 정족수기반 다수결 투표를 통해 m 마스터 후보들 사이에서 선출된다. 현행 마스터는 로컬클럭에서 측정된 현행 시한 리스를 발급받고, 이 시한 리스를 유지하면서 네트웍 클라이언트가 요청한 서비스를 운용한다.
시한 리스는 상대적 클럭스큐로 상한을 결정한다. 현행 마스터에 장애가 생기면, 새 시한 리스를 발급받은 새 마스터로의 페일오버가 시작한다.
본 발명은 스플릿브레인 현상 없이 머신들 사이에서 페일오버를 하는 고가용성 클러스터에 관한 것이기도 하다. 한번 더, m≥2이고 n≥3의 홀수인 것을 확인한다. 마스터 후보들을 동기적으로 복제하고 업데이트하는데 로컬 네트웍을 이용한다.
정족수 머신으로 정족수기반 다수결 투표 프로토콜을 실행해 m개 마스터 후보들 사이에서 현행 마스터를 선출한다. 또, 현행 시한 리스를 현행 마스터에게 발급하는 메커니즘을 제공한다. 현행 시한 리스는 현행 마스터에 속하는 로컬클럭으로 측정한다. 현행 시한 리스의 상대적 클럭스큐가 물성의 도움으로 상한을 결정한다.
현행 마스터의 장애가 새 마스터로의 페일오버를 발동시키고, 새 시한 리스가 새 마스터에게 발급된다. 상대적 클럭스큐에서 상한을 결정한 시한 리스를 사용하면 스플릿브레인 현상을 피할 수 있다. 이런 상황은 다른 마스터 후보들이 머신들 사이의 연결단절과 같은 장애 상태 동안 현행 마스터인 것으로 가정했을 때 생긴다.
정족수기반 다수결 투표 프로토콜을다르게 구현할 수도 있다. 예를 들어, Paxos 프로토콜이나 ZooKeeper 클러스터 관리 프로토콜을 사용할 수 있다. 또, 본 발명에 따른 고가용성 클러스터는 도메인 네임과 같은 갑작스런 겹쳐쓰기에 극히 민감한 데이터를 서비스하는데 특히 적합하다. 따라서, 마스터 후보들이 NameNode 마스터 후보일 때 본 발명을 유리하게 적용할 수 있다.
클러스터는 각종 컨피규레이션과 아키텍처를 구현할 수 있다. 또, 노드는 클러스터를 통해 리소스들이 분산된 저장시스템을 활용하는 것이 좋다. 이런 저장시스템은 예컨대 하드디스크 드라이브와 같은 여러가지 차단저장장치로 구성된다.
이하, 첨부 도면들을 참조하여 본 발명에 대해 자세히 설명한다.
도 1은 본 발명의 주요 특징을 보여주는 고가용성 클러스터를 갖춘 네트웍 시스템의 블록도;
도 2는 도 1의 클러스터의 정족수 머신군의 블록도;
도 3은 도 1의 클러스터의 마스터 후보군의 블록도;
도 4는 본 발명에 따른 상대적 클럭스큐로 결정된 시한 리스의 동작을 설명하는 그래프들;
도 5는 상대적 클럭스큐에서 경계가 결정된 시한 리스를 채택하고 정족수기반 다수결 투표를 하는 본 발명에 따른 다른 고가용성 클러스터의 블록도.
도 2는 도 1의 클러스터의 정족수 머신군의 블록도;
도 3은 도 1의 클러스터의 마스터 후보군의 블록도;
도 4는 본 발명에 따른 상대적 클럭스큐로 결정된 시한 리스의 동작을 설명하는 그래프들;
도 5는 상대적 클럭스큐에서 경계가 결정된 시한 리스를 채택하고 정족수기반 다수결 투표를 하는 본 발명에 따른 다른 고가용성 클러스터의 블록도.
도 1은 본 발명의 네트웍시스템(100)의 블록도로서, 네트웍 클라이언트(102a~b)가 고가용성 클러스터(104)에 연결되어 있다. 도면에는 설명의 편의상 2개의 클라이언트(102a~b)만 표시되어 있지만, 이런 클러스터(104)는 보통 수천 내지 수만 또는 그 이상의 클라이언트를 지원한다.
인터넷이나 다른 단독/다중 광역망과 같은 WAN(106)이 고가용성 클러스터(104) 서비스가 제공되는 장소에서 클라이언트(102a~b)에 접속할 수 있다. 클라이언트(102a~b)와 WAN(106) 사이의 물리적 연결(108a~b)은 유무선이나 광도파관 등의 기술로 이루어질 수 있다. WAN(106)은 NNI(110; network-to-network interface)를 통해 클러스터(104)에 연결되며, NNI로는 VHT(very high-throughput) 파이프가 바람직하다.
클러스터(104)에는 많은 노드들이 있지만, 편의상 도 1에는 그중 몇개(112a~q)만 도시하였다. 일반적으로 이런 노드들(112a~q)은 지리적으로 구분되지만, 같은 빌딩에 있을 수도 있고, LAN(116)의 라인(114a~d)에 의해 서로 연결되어 WAN(106)이 아닌 LAN(116)을 통해 내부적으로 통신을 할 수도 있다.
각 노드(112a~q)는 처리용량을 갖는 프로세서나 서버나 컴퓨터와 같은 장치를 갖는데, 이런 장치를 이하 머신(118a~q)라 하며, 일단의 리소스(120a~1; 122a~q; 124a~q)와 연결되기도 한다. 물론 노드마다 이것외의 다른 노드도 있을 수 있다. 도 1에는 편의상 전체가 아닌 일부의 머신(118a~q)과 리소스(120a~1; 122a~q; 124a~q)만 도시한다.
표시된 리소스(120a~1; 122a~q; 124a~q)와 그외의 다른 리소스들은 가능한 어떤 방식으로도 분배될 수 있다. 예컨대, 노드마다의 리소스가 다른 노드와 같을 수도 있고, 다를 수도 있다. 클러스터(104)의 특정 노드의 리소스가 완전히 다를 수도 있다. 예로 든 리소스(120a~1; 122a~q; 124a~q)는 프린터, 모니터, 주문형 프로세서, 하드드라이브를 포함한 블록 저장장치(예; SATA와 같은 직렬 또는 병렬형), 플래시 드라이브 및 기타 다른 클러스터 리소스들을 포함한다. 실제로는 클러스터(104)내에서 온/오프 라인으로 관리되고 노드(112a~q) 각각에 의해 한번에 수용되는 모든 물리적/논리적 요소를 리소스(120a~1; 122a~q; 124a~q)로 표현할 수 있다.
본 발명에서는 클러스터(104)에 속하는 머신(118a~q)중의 m개의 마스터 후보들이 확인된다. 구체적으로 도 1에서는 2개의 머신(118a~b)이 마스터 후보로 확인된다. 따라서 본 실시예에서는 m=2이고, 이 숫자는 본 발명에 따른 마스터 후보들의 가능한 최소 갯수이다.
일점쇄선으로 표시된 박스는 마스터 후보군(126)을 나타내고, 마스터 후보(118a~b)는 이 후보군(126)에 속한다. 생략 표시로 알 수 있듯이, 머신(118c~q) 중에서 선택된 다른 마스터 후보들도 이 후보군(126)에 속할 수 있다. 실제로는 m이항상 2 이상이기만 하면 이 후보군(126)은 다이나믹하게 증분/감분될 수 있다. 또, 후보군(126)내의 마스터 후보의 수 m의 이론적 상한도 없다. 실제로는 후술하는 이유로, 현재의 마스터의 현상태를 계속 업데이트하기 위해 모든 마스터 후보들 사이에 라이트가 동시에 복제되어야할 것이다. 따라서, 마스터 후보가 4개 이상인 설정을 이용하면 시스템 용량을 분수에 맞지않게 개선하지 않고도 라이트 레이턴시(write latency)가 현저히 높아진다.
파단선 박스는 클러스터(104)에 속하는 머신들(118a~q) 중에서 확인된 정족수 머신군(128)으로서, 본 실시예에서는 군내의 머신의 갯수는 3개(n=3)로 118o~q가 있지만, 다른 정족수 머신들이 있을 수 있다. 그러나, 본 발명에서 n은 항상 3 이상의 홀수이다(3≤n이고 홀수). 군(128)을 한번에 2개 머신씩 확장하거나 축소할 수 있음을 의미한다. n을 홀수로 유지하는 이유는 군(128)을 2개 소집합으로 어떻게 분할해도 한쪽 소집합은 항상 머신수가 많도록 하기 위해서이다.
머신(118a~q)이 기능을 공유하도록, 즉 마스터 후보가 정족수 머신도 되도록 할 수는 있지만, 마스터 후보와 정족수 머신을 구분하는 것이 바람직하다. 요컨대, 마스터 후보군(126)의 머신(118a~b)과 정족수 머신군(128)의 머신(118o~q)은 본 실시예에서는 어떤 머신도 공유하지 않는다. 다시 말해 양 군(126,128)은 서로 겹치지 않는다.
정족수 머신(118o~q)은 보통 클러스터(104)에 있어도 서로 독립적이어야 한다. 요컨대, 클러스터(104)의 모든 머신들(118a~q)이 보통 항상 같은 빌딩에 있기 때문에, 전술한 바와 같이, 정족수 머신들(118o~q)을 격리하기 위한 설비도 있어야 한다. 이런 설비가 도 1에는 표시되지 않았다. 일반적으로, 적절히 격리된 환경에서, 정족수 머신들(118o~q)은 별도의 네트웍 스위치를 사용하고 같은 전원을 공유하지 않는다.
본 발명에 의하면, 마스터 후보(118a~b)의 상태는 화살표(130)로 표시한 것처럼 동기적으로 업데이트된다. 마스터 후보들(118a~b) 사이의 LAN(116) 선(114a)을 통한 연결은 이런 목적으로 사용되는 것이다. 요컨대, 마스터 후보로 확인된 머신들(118a~b) 사이의 동기적 업데이트는 WAN(106)이나 다른 네트웍 연결이 아닌 LAN(116)을 통해 이루어진다.
동기적 업데이트에 있어서, 노드(112a~b)에 있는 마스터 후보들(118a~b) 사이에는 조정이 없다. 오히려, 업데이트가 완료될 때까지 마스터 후보들(118a~b)이 이전 출력을 이용할 수 있어야 한다. 따라서, 동기적 업데이트를 위해서는 현행상태벡터와 다음상태벡터 둘다 저장해야 한다. 상태나 상태벡터는 머신(118a~b)에서 운용되는 어플(코드)에 의해 확정적으로 실행되는 머신 입력 세트를 포함한다. 이는, 같은 머신 입력으로 시작하고 같은 어플을 운용하는 모든 머신의 출력이 동일하기 때문이다. 머신(118a~b)에 저장된 입출력 상태벡터들이 동일하여 장애에 대비해 높은 안전도를 제공한다.
본 발명의 목적을 위해, 마스터 후보들(118a~b) 사이의 동기 업데이트 동안 저장된 가장 최근의 상태벡터를 현행상태라 한다. 현행상태는 모든 마스터 후보들(118a~b)에 영향을 미치는 정전에 대비해 비휘발성 매체(자기 하드드라이브, 플래시드라이브, 테이프)에 저장될 수 있다. 이런 응용례를 당업자라면 알 수 있으므로, 현행상태를 저장하는데 사용되는 실제 리소스들을 도면에는 표시하지 않는다. 리소스들(120a~q, 122a~q, 124a~q) 사이에 모두 비휘발성 매체를 사용해 현행상태를 저장할 수 있다. 또, 이렇게 복제된 현행상태를 모두 휘발성 메모리에 저장하는 고가용성 아키텍처도 설계할 수 있다. 그러나, 이런 설계에서는 정전으로 현행상태 정보를 잃을 수 있다.
클러스터(104)도 중앙 클럭(132)에 접속할 수 있다. 중앙 클럭(132)은 클러스터(104)에 속하는 로컬 장치이거나 원격 장치일 수 있지만, 여기서는 클러스터(104)에 속하는 로컬장치이다. 예컨대, 중앙 클럭(132)이 클러스터(104)의 특정 노드(112)에 있을 수 있다. 또, 본 실시예에서는 클럭(132)의 시간을 외부 표준, 예컨대 원자시계나 기타 다른 표준시 기준에 맞춰 주기적으로 조정한다.
고가용성 클러스터(104)를 갖춘 네트웍 시스템(100)은 네트웍 클라이언트(102a~b)에게 다양한 종류의 서비스를 제공하기에 아주 적합하다. 이런 서비스로는 전자메일, 금융거래, DNS(Domain Name Service) 등의 아주 다양한 어플은 물론, 네트웍 시스템(100)을 통해 제공되는 레거시 어플도 있다. 이런 서비스 중의 일부는 정전에 극히 민감하다. 특히, 클라이언트(102a~b)나 다른 이벤트들이 DNS 입력 과 같은 데이터의 갑작스런 중복쓰기를 초래하는 장애는 피해야 한다.
고가용성 클러스터의 해당 마스터에 전술한 종류의 장애를 방지하도록 하는 것은 잘 알려져 있다. 마스터는 모든 요청을 처리하여, 특히 클러스터내 모든 상태를 업데이트하는 처리(예; 라이트를 포함한 모든 요청)를 하여 클러스터를 감시한다. 마스터는 요청들을 처리하는 방법에 대한 동의를 위해 클러스터의 나머지를 처리, 허용 및 알려준다. 이런 마스터 기반 계층적 방식은 갑작스런 겹쳐쓰기나 다른 장애에 의한 데이터 붕괴를 방지한다.
마스터 기반 클러스터 관리는 적당한 방송프로토콜(예; 원자적 방송프로토콜)과 ZooKeeper와 같은 관리 소프트웨어로 이루어진다. 이런 클러스터 관리 소프트웨어에 관한 더이상의 정보는 보스톤에서 2010년 6월 24일 개최된 USENIX ATC(Annual Technical Conference)의 Patric Hunt의 "ZooKeeper: Wait-free coordination for Internet-scale systems"의 1~14 페이지를 보면 된다. 적당한 방송프로토콜에 대한 종래의 기술은 2008 Workshop on Large Scale Distributed System and Middleware (LADIS)의 Benjamin Reed의 "A simple totally ordered broadcast protocol"을 참조한다.
또, 마스터를 감시해야 하는 것도 잘 알려져 있다. 현행 마스터가 고장나면, 적격 머신들 중에서 새로운 마스터를 뽑아야 한다. 선출을 위한 많은 프로토콜들이 당 분야에 잘 알려져 있다. 그중 가장 강력한 것은 정족수 기반 다수결로서, L. Lamport가 제시한 공지의 프로토콜인 Paxos 프로토콜이 위키피디아와 백과사전에 알려져있다.
마스터기반 클러스터 관리와 적당한 방송프로토콜과 정족수기반 다수결에 대한 종래의 방식은 장애 수를 제한하는데 분명한 도움을 준다. 그러나, 고장난 현행 마스터에서 새로운 마스터로 자동 이동(자동 스위치오버)하거나 페일오버하는 과정에도 장애가 일어날 수 있다. 이런 장애는 대부분 페일오버 도중에 생기는 스플린브레인 상황 때문에 생기는 것이 대부분이다. 이런 상태에서는, 2개 이상의 클러스터 머신들이 마스터로 동작하여 데이터의 겹쳐쓰기와 같은 장애를 일으킨다.
본 발명에 의하면, 고가용성 클러스터(104)가 스플린브레인 상황 없이 페일오버를 지원하도록 설계된다. 1단계로 군(126)내의 mro의 마스터 후보(118a~b) 중에서 현행 마스터를 선출하는데, 이런 선출은 군(128)을 구성하는 정족수 머신(118o~q)에 의해 이루어진다.
도 2는 정족수 머신(118o~q)의 군(128)의 블록도이다. 전술한 바와 같이, 정족수 머신이 3개 이상의 홀수이지만, 여기서는 n=3을 예로들어 설명한다. 선출은 정족수기반 다수결로 이루어지고, 이를 "정족수기반 다수결 리더쉽 선출"이나 "정족수기반 분산합의"라 한다. n이 홀수여서 항상 다수결이 가능하다.
도 3은 정족수 머신(118o~q)이 투표하는 마스터 후보(118a~b)의 군(126)의 블록도이다. 여기서도 마스터 후보는 2개(m=2)를 예로 들었지만, 그 이상 있을 수 있다.
클러스터(104)의 동작을 위해, 정족수 머신(118o~q)이 현행 마스터를 선출한다. 여기서는 머신(118a)이 현행 마스터로 다수결 선출된다. 도 2에 해칭선으로 표시한 것처럼, 머신(118o~q)이 머신(118a)에 대한 다수결 투표를 한다. 마찬가지로, 도 3에 해칭선으로 표시한 것처럼, 머신(118a)이 현행 마스터이다. 실제 정족수기반 다수결 투표 프로토콜은 당업계에 잘 알려져 있으므로 더이상 설명하지 않는다. 이에 대한 자세한 사항은 Paxos 프로토콜의 설명을 참조한다.
정족수기반 다수결로 선출된 현행 마스터(118a)는 현행 시한 리스(134a)를 발행한다. 도 3에는 리스(134a)가 현행 마스터(118a)에 속하는 로컬 클럭(136a)에 화살표로 표시되어 있지만, 실제로는 로컬 클럭(136)으로 측정하도록 설계된다. 리스(134a) 기간은 수초에서 수십초 정도가 좋다. 도 3에서는 리스(134a) 기간이 40초 정도이다.
시한 리스(134a) 시간은 페일오버 이벤트의 비용에 비해 현행 마스터(118a)가 실제 장애를 감지한 시간 사이의 합리적인 거래로 선택된다. 리스(134a) 기간이 아주 짧으면 현행 마스터(118a)가 장애가 있고 불필요할 때 페일오버를 개시하라고 부정확하게 결정할 수 있다. 기간이 아주 길면 불필요한 페일오버를 시작하지는 않겠지만, 고장난 현행 마스터(118a)를 감지하는데 걸리는 시간이 길어진다. 적당한 시간의 결정은 불필요한 마스터의 비용과 페일오버 동작을 하는데 걸리는 시간에 좌우된다. 실제로는 동기적으로 기복제되는 (메가바이트 내지 기가바이트 정도의) 현행 상태의 사이즈에 대해 수초 내지 수십초의 시간이 적당하다.
현행 마스터(118a)가 리스(134a)를 갖는 동안, 마스터 후보(118b)도 로컬 클럭(136b)에서 동일한 리스를 측정한다. 그러나, 뒤에 자세히 설명하겠지만, 클럭(136a~b)은 일반적으로 동기화되지 않고 같은 주파수로 움직이지 않는다. 따라서, 클럭(136a)으로 측정한 리스(134a) 기간은 리스(136ab)로 표시되고 로컬 클럭(136a)으로 측정된 리스(134a)의 기간과는 절대시간으로 다를 수 있다.
현행 마스터(118a)는 리스(134a)를 유지하는 동안의 마스터로서 동작할 권한을 갖는다. 요컨대, 리스(134a)가 자체 로컬 클럭(136a)으로 측정한 시간이 만료되지 않는 동안, 현행 마스터(118a)는 클라이언트(102a~b)가 요청한 서비스를 할 권한을 갖는다. 이런 서비스는 쓰기(라이트)요청 실행을 포함하는 것이 보통이다.
현행 마스터(118a)로 활동하면서 화살표(130)로 표시된 것처럼 그 상태나 상태벡터들이 다른 마스터 후보(118b)에 동기적으로 복제된다. 실제로는 마스터 후보군(126)의 모든 머신들(118)이 마스터후보로 간주되도록 현행 마스터(118a)의 현행 상태들을 동기적으로 복제해야 한다. 이렇게 되면 모든 단계에서 마스터 후보군(126)의 마스터 후보(118b)와 다른 모든 마스터 후보들이 업데이트되고 현행 마스터(118a)의 현행 상태를 유지한다. 동기적 업데이트는 LAN(116)을 통해 구체적으로는 선(114a)을 통해 이루어진다.
페일오버중에 스플릿-브레인 현상을 피하기 위해, 현행 시한 리스(134a)의 상대적 클럭스큐(clock skew)의 상한이 정해진다. 구체적으로, 시한 리스(134a)는 시간과 추가 허용시간의 합인 Δt+ε로 설정된다. 이렇게 되면 리스(134a)가 상한이 최대 Δt+ε인 시간으로 결정된다(도 3 참조). ε로 사용될 실제 값은 로컬 클럭(136a~b)의 상대적 클럭스큐를 기반으로 한다.
새 마스터가 새 시한 리스를 발급받고, 최대 클럭스큐보다 작지 않은 시간을 대기한 뒤 마스터 서비스를 개시한다.
ε를 결정하는 방법을 알려면 먼저 클럭스큐를 이해해야 한다. 모든 클러스터 노드(112a~q)는 물론 라우터(도시 안됨)와 클라이언트(102a~b)는 로컬 클럭을 소유한다. 이런 클럭들은 당업계에 알려진 하드웨어와 소프트웨어로 구성된다. 본 실시예에서는 마스터 후보(118a~b)의 로컬 클럭(136a~b)과 클럭스큐들에 주의한다.
로컬 클럭(136a~b) 각각은 정상 주파수로 똑딱이는 수정발진기와, 똑딱 횟수를 세는 카운터를 갖는다. 이런 클럭 요소들은 잘 알려져 있으므로 도시하지 않는다. 로컬 클럭(136a~b)의 구성 때문에 실제 주파수는 온도, 습도, 결정의 종류와 같은 환경인자에 좌우된다. 클럭(136a~b)에 의해 적당한 단위시간당 등록되는 똑딱 갯수에 드리프트를 일으키는 것은 카운터에 의해 등록된 실제 주파수의 변동이다. 이런 드리프트를 클럭스큐라 한다.
환경인자는 물론 (온도에 직접 영향을 주는) 가변적인 프로세서 부하를 바꾸면 클럭(136a~b)의 클럭스큐도 동적으로 변한다. 동적으로 변하는 클럭스큐의 직접적인 결과로서, 로컬클럭(136a~b)에서 보내진 클럭신호들이 각각 다른 시간에 다른 요소에 도달한다.
원격 클럭의 실제 클럭스큐를 직접 측정하기는 불가능하다. 따라서, 마스터 후보(118a)가 마스터 후보(118b)의 로컬 클럭(136b)의 클럭스큐를 직접 측정할 수 없고, 그 반대도 마찬가지다.
다행히도, 클럭들(136a~b) 사이의 상대적 클럭스큐를 원격으로 추정하여 ε를 결정할 수 있다. 클러스터(104)의 시동 전에 일정 주기로 마스터 후보들(118a~b)이 이런 추정을 하는 것이 좋은데, 이때 현행 마스터(118a)와 마스터 후보(118b)에 대한 처리부하와 환경인자의 변화로 인한 상대적 클럭스큐의 동적인 변화를 고려한다.
본 발명에서는 데이터 수정값들 사이의 지연을 비교해 상대적 클럭스큐를 추정한다. 이때 Nework Time 프로토콜과 같은 적당한 알고리즘의 도움을 받는 것이 좋다. 이런 프로토콜은 머신들 사이의 테스트 패킷들을 전송하고, 네트웍 전송지연을 고려한 뒤 상대적 클럭스큐를 추정한다.
로컬클럭들(134a~b) 사이의 상대적 클럭스큐가 결정되면, ε의 값이 할당된다. ε 값은 수정 데이터 사이의 지연을 비교해 추정된 상대적 클럭스큐의 최대값으로 선택되는 것이 바람직하다. 한편, 다수의 추정치들에 대해 통계적 알고리즘을 적용해 ε 값을 정할 수도 있다. 통계적으로 중요한 다수의 추정치들이 현재의 환경인자들과 처리부하로 얻을 수 있을 때 이것이 가능하다. 이런 조건하에, 로컬클럭들(134a~b) 사이의 평균 추정 상대적 클럭스큐에 대한 여러 표준편차에서 ε를 정할 수 있다. 당업자라면 장애방지 클러스터(104)가 클라이언트(102a~b)에게 제공할 어플의 종류를 받아야 하는 방법에 기초하여 정확한 표준편차 수를 조정할 수 있을 것이다.
로컬클럭(134a~b)의 클럭스큐는 물론 클러스터 노드(112)에 속하는 다른 클럭들의 스큐들도 수집한다. 또, 클럭스큐 때문에 클러스터(104)가 노드에 상당히 다른 로컬 시간을 등록하게 된다. 이런 시차를 없애기 위해, 클러스터 노드(112)의 클럭들을 절대시간을 측정하는 중앙 클럭(132)에 동기화할 수 있다. 그러나, 본 발명은 노드(112)의 동기화, 특히 마스터 후보들(118a~b)의 노드(112a~b)들을 동일한 절대시간에 동기화하지 않는데, 이는 상대적 클럭스큐에 의존하기 때문이다. 이때문에 고품질 로컬 클럭이 없는 저렴한 머신(118)을 클러스터(104)에 배치할 수 있다.
도 4는 최대 Δt+ε 시간으로 정한 현행 마스터(118a)의 전술한 시한 리스(132a)가 스플릿브레인 현상을 방지하는 방법을 보여주는 타이밍 그래프이다. 도 4의 그래프에서 알 수 있듯이, 현행 마스터(118a)와 마스터 후보(118b)의 로컬클럭들(136a~b)은 절대시간에 동기되지 않고, 중앙 클럭(132)에 등록된 절대 초기시간 toc는 마스터 후보(118b)의 로컬클럭(136b)에 등록된 초기 시간 tob보다 뒤에 있다. 반면에 현행 마스터의 로컬클럭(136a)에 등록된 초기 시간 toa는 중앙클럭의 절대 초기시간 toc보다 뒤에 있다.
도 2에서 설명한 것처럼, 군(128)의 정족수 머신들(118o~q)에 의한 다수결 투표는 선거시간 Δte 동안에 일어난다. 선거시간 Δte는 설명의 편의상 마스터 후보(118a)의 로컬클럭(136a)의 시간선에만 표시한다. 선거시간 Δte의 끝이자 로컬클럭(136a)에 등록된 시간 t1a에서 후보 머신(118a)이 클러스터의 현행 마스터로 선출된다. 이 시간은 마스터 후보(118b)의 로컬클럭(136b)과 중앙클럭(132)에서의 각각의 시간 t1b, t1c에 해당한다.
로컬클럭(136a)의 시간 t1a에서 현행 마스터(118a)는 로컬클럭(136a)의 상대적 클럭스큐로 정해진 시한 리스(134a)를 받는다. 전술한대로, 데이터 수정치들 사이의 지연을 비교했을 때 구해진 최대값 ε=εa를 선택하여 클럭(136b)과 클럭(136a)의 최대 상대적 클럭스큐를 근거로 상한을 설정한다. 따라서, 현행 시한 리스(134a)는 최대 Δt+ε 시간을 상한으로 한다. 본 발명에 의하면, 자체 로컬클럭(136a)으로 측정한 Δt 동안, 현행 마스터(118a)가 클러스터(104)의 나머지 마스터를 추정할 수 있다.
이제, 현행 마스터(118a)의 로컬클럭(136a)의 시간 t1a에서 t2a까지 Δt+ε이 계속된다. 그러나, 스플릿브레인 현상을 피하려면, Δt 이후 시한 리스(134a)의 시간 εa동안 마스터 후보(118b)가 클러스터(104)의 제어를 위해 경쟁할 수 있도록 현행 마스터(118a)가 준비해야만 한다. 예컨대, 현행 마스터(118a)가 리스(134a) 동안 알수없는 장애를 갖는다면 이렇게 될 수 있다.
이제, 본 발명에 따라 구성된 클러스터(104)에서, 현행 마스터(118a)의 장애로 인해 가능한 마스터 후보들 중에서 새로운 마스터로의 페일오버가 시작된다. 본 실시예에서는 m=2이기 때문에 마스터 후보(118b)만이 페일오버될 수 있다.
도 4에서 보듯이, 자체 로컬클럭(136a)에 등록된 것처럼 현행 마스터(118a)의 장애는 t2a 이전의 tfa에서 일어난다. 이런 장애는 현행 마스터(118a)와 LAN(116) 사이의 연결단절, 고의적인 접속분리 또는 불안정을 포함한 오작동으로 기인할 수 있다. 실제, 현행 마스터(118a)는 클러스터(104)에서의 자체 장애조차 인식하지 못한채 계속해서 시한 리스(134a)를 측정하면서 Δt가 끝날 때까지 마스터의 임무를 수행할 수 있다.
한편, 마스터 후보(118b)도 현행 마스터(118a)에 할당된 리스(134a) 시간 Δt+εa를 측정하되, 자체 로컬클럭(136b)를 이용해 측정한다. 로컬클럭(136b)에 따라 마스터 후보(118b)는 시간 Δt+εa를 t1b에서 t2b까지의 시간(134ab) 동안 지속되는 것으로 등록한다. 이 시간(134ab)이 시간(134a)과 같지 않은 것은 분명하다. 물론, 이런 시간차는 전술한 바와 같이 로컬클럭들(136a~b) 사이의 상대적 클럭스큐 때문이다.
마스터 후보(118b)는 상대적 클럭스큐로 인해 결정된 시간 Δt가 현행 마스터(118a)에서 측정한 시간 Δt와는 다를 수 있음을 알고있어, 자체 클럭(136b)에 의해 기록된 추기 시간 εa를 대기한다. 요컨대, 마스터 후보(118b)는 상대적 클럭스큐로 인해 현행 마스터(118a)가 마스터 후보의 로컬클럭(136b)의 시간 t2b까지 여전히 마스터로 행동할 가능성이 있다고 가정한다. 따라서, 본 발명에 의하면, 마스터 후보(118b)는 t2b가 지날 때까지는 새로운 마스터가 되려는 시도를 하지 말라는 명령을 받는다.
이제, 마스터 후보(118b)의 로컬클럭(136b)에 따른 tfb와 t2b 사이의 시간(136ab) 동안에는 클러스터(104)가 마스터를 갖지 않는다. 이런 식으로 생기는 마스터없는 기간(138)을 도 4에 해칭선을 표시했다. 전술한 바와 같이, 클러스터(104)의 클라이언트(102a~b)가 기꺼이 감내하는 마스터없는 기간(138)의 길이는 시한 리스(134a) 시간을 정할 때 손해볼 것으로 보아야 한다.
마스터 후보(118b)의 로컬클럭(136b)의 시간 t2b에서, 장애 마스터(118a)로부터의 페일오버(140)가 시작되고 마스터 후보(118b)가 새로운 마스터로 된다. 클럭(136b)이 클럭(136a)보다 빠르기 때문에, 시간(134ab)의 끝의 시간 t2b는 장애를 갖는 현행 마스터(118a)의 클럭(136)의 시간(134a)이 완전히 끝나기 조금 전에 시작한다. 그러나, 클럭들(136a~b) 사이의 가능한 최대의 상대적 클럭스큐를 εa로 선택했기 때문에, 새 마스터(118b)의 로컬클럭(136b)의 시간 t2b에서도 마스터(118a)가 여전히 클러스터의 마스터로 행동할 가능성은 실제로는 거의 없다. 실제로는 전술한 바와 같이, 현행 마스터(118a)가 Δt가 지난 뒤 마스터로서의 역할을 중단하고, 이 시간은 새 마스터(118b)의 로컬클럭(136b)의 시간 t2b 이전에 안전하게 종료한다. 즉, 본 발명에 의하면 스플린브레인 현상을 효과적으로 피할 수 있다.
페일오버시, 새 마스터(118b)가 새 시한 리스(134b)를 발급받는다. 새 리스(134b)는 로컬클럭들(136a~b) 사이의 최대 상대적 클럭스큐에 의거해 시간 Δt+ε를 정하는데 이때 ε=εb이다. εb도 전술한 것처럼 데이터 추정치들 사이의 지연값에 의거해 계산하는 것이 좋다. 상대적 클럭스큐의 값이 시간의 함수로 변하므로, εa와 εb는 다를 수 있다(도 4 참조).
중앙 클럭(132)와의 동기화 부족이 페일오버를 지연시키지 않고 스플릿브레인 현상을 피하는 이유를 알아보는 또다른 방법은 중앙 클럭(132)에서 인식한 위의 활동들을 보는 것이다. 이런 관점에서, 시한 리스(134a)가 t1c에서 현행 마스터(118a)에 발급된다. 중앙 클럭(132)에서 측정한 리스(134a) 시간은 마스터 후보(118b)의 로컬클럭(136b)에 등록된 시간(134ab)과는 다르다. 즉, 중앙 클럭(132)에서 측정한 리스(134a) 시간은 134ac이다.
이 시간(134ac)은 134ab 보다도 짧다. 그러나, 로컬클럭(136b)의 시간 t2b가올때까지는 마스터 후보(118b)가 제어하지 않으므로 문제는 없다. 이 시간은 중앙 클럭(132)의 시간 t2c에 해당한다. 중앙 클럭(132)에 의해 기록된 잠정 시간 Δtic 동안에 스플릿브레인 현상이 없는 것은 εb 값을 적절히 선택하여 클럭들(136a~b) 사이의 상대적 클럭스큐의 상한을 정한 덕분이다.
한편, 시한 리스(134a~b)의 상한은 로컬클럭(136a~b)의 물성에서 결정된다. 전술한 바와 같이, 클럭들(136a~b)은 온도나 습도와 같은 각종 환경요인은 물론 자체 결정이나 진동 특성으로 인해 드리프트한다. 환경요인들과 진동특성들을 모두 물성이라 한다. 본 발명의 목적을 위해 가장 안정적인 물성으로는 온도 드리프트와 진동 드리프트이다.
이런 실시예에서, 모든 시한 리스의 상한은 마스터 후보들 사이의 여러 물성이나 선택된 물성의 차이로 인한 상대적 클럭스큐의 최대값을 Δt에 더한 것과 같다. 가장 안정된 물성들은 당업계의 공지의 방식으로 효과적으로 추정할 수 있어 로컬클럭의 온도 드리프트 및/또는 진동 드리프트이다.
상대적 클럭스큐를 결정하는 물성을 채택할 때, 관찰된 스큐의 최대값을 ε 값으로 정하는 것이 좋다. 시한 리스 시간을 구하기 위해 전처럼 Δt에 ε를 더한다. 물론, 스플릿브레인 현상의 가능성을 더 낮추기 위해 ε 값을 보수적으로 더 크게 정할 수도 있지만, ε 값을 아주 크게 정하면 페일오버 이전에 마스터없는 기간(138)의 길이가 길어져 클러스터(104)의 성능에 영향을 준다. 따라서, ε 값의 선택은 원하는 클러스터(104) 성능과 균형을 맞춰야 한다.
상대적 클럭스큐를 결정하는 다른 방버은 중앙 클럭(132)과 비교하는 것이다. 중앙 클럭(132)의 장점을 취하려면 중앙 클럭이 로컬클럭들(136a~b)보다 상당히 큰 신뢰성을 가져야 한다. 이를 위해, 중앙 클럭(132)을 적절히 제어된 환경에 두거나 원자시계와 같은 외부 표준에 맞게 자주 중앙클럭을 조정한다.
마스터 선출을 위한 정족수 기반 다수결 투표와 시한 리스를 하는 콘서트에서, 클러스터(104)는 각종 락리스(lock lease)와 모든 종류의 다른 안전장치를 사용할 수 있다. 분산시스템과 고가용성 클러스터에 채택된 다른 안정장치와 프로토콜과 본 발명 사이에 이렇게 충돌이 없는 것은 아주 큰 장점이다. 예컨대 본 발명의 방법과 클러스터에서 구현될 수 있는 이런 락리스와 해당 과정들에서 리더를 "Mike Burrows"라 하는데, 이에 대해서는 OSDI 2006의 구글사의 "The Chubby lock service for loosely-coupled distributed systems"를 보면 된다.
도 5는 본 발명에 따른 다른 클러스터(200)의 블록도로서, 이 클러스터는 다수의 머신(202a~z)를 갖지만, 5개의 머신(202a~e)가 정족수 머신군(204)에 속하는 정족수 머신이다. 따라서 n=5로서 3 이상의 홀수이다. 3개의 머신인 202s~u가 마스터 후보군(206)의 마스터 후보이므로, m=3으로서 필요한대로 2보다 크다.
클러스터(300)는 전술한 바와 같이 상대적 클럭스큐에서 결정된 경계값을 갖는 현행 마스터에 시한 리스를 사용한다. 또, 정족수 머신들(202a~e)은 서로 격리되고, 다수결 투표를 통해 군(206)에서 현행 마스터를 선택한다. 본 실시예에서 선출된 현행 마스터는 머신(202t)이다.
이전 실시예와는 대조적으로, 마스터 후보(202s~u)의 갯수가 3이므로(m=3), 페일오버를 위한 새 마스터 후보가 없다. 이 경우, 페일오버 이벤트 이전에 안전을 위해 현행 마스터(202t) 외에 현행 백업마스터를 선출하는 것이 좋다. 현행 마스터(202u)를 선거할 때와 같은 다수결 투표 프로토콜을 이용해 군(204)의 정족수 머신들(202a~e) 중에서 선거가 이루어진다.
물론, 현행 마스터(202u)는 이미 선출되었으므로 백업마스터로 투표되지 않는다. 본 실시예에서는 정족수 머신(202a~e)이 머신(202t)을 백업마스터로 선출한다.
가능한 모든 페일오버 전에 기선출된 백업마스터(202t)가 있어, 현행 마스터(202u)에 장애가 있을 때 클러스터(200)가 군(204)의 정족수 머신들(202a~e)의 동작에 의지할 필요가 없다. 이런 식으로, 페일오버를 하는 동안에는 선거를 할 필요가 없다. 승계는 현행 마스터(202u)에 장애가 있을 때 페일오버 이전에 결정되고, 페일오버를 발동하는 장애 이벤트 동안에 생길 수 있는 잠재적 다의성(potential ambiguities)에 노출되지 않는다.
경우에 따라서는, 후보 머신들(202s~u)의 수 m을 크게 줄이거나 늘일 수 있다. 이것은 머신(202)을 클러스터(200)에서 제거하거나 추가하기 때문에 유용하다. 즉, 현재 머신들(202)의 의무와 책임을 재배열한다는 점에서 필요하다.
m을 늘릴 때는, 클러스터(200)에 속하는 새로운 후보 머신(202h)을 확인해 화살표(208)와 같이 동기적으로 업데이트하여 현행 마스터(202u)의 현행상태를 유지할 수 있다. 현행상태로 업데이트될 때 새로운 후보머신(202h)을 군(206)내의 m개 마스터후보(202s~u)에 추가하면서 m이 증분된다(m=m+1 또는 m=4). 그러나, 전술한 바와 같이, 군(206)의 수를 m=4보다 크게 확장하는 것은 서비스 시간지연이 있을 수 있어 좋지 않다.
마찬가지로, m을 줄일 때는 마스터 후보들(202s~u) 중의 머신(202s)를 확인하고 군(206)에서 제거하면 되고, 이에 따라 m이 감분된다(m=m-1 또는 m=2). 머신(202s)의 제거는 언제라도 할 수 있는데, 이는 이 머신이 제거할 때의 현행 마스터도, 백업마스터도 아니기 때문이다. 일단 제거되면, 더이상은 머신(202s)을 현 상태로 동기적으로 업데이트할 필요가 없다.
본 발명의 방법은 네트웍 클라이언트에 어플(210)과 같은 레거시 어플을 서비스할 때 특히 좋다. 레거시 어플(210)은 머신(202g)의 리소스(212g)와 같이 고가용성 클러스터의 어떤 리소스에도 있을 수 있다.
레거시 어플(210)은 Linux Kernel의 Distributed Repricated Block Device와 같은 네트웍 차단 장치를 이용해 필요한 모든 상태 복제를 투명하게 실행하여 최고의 지원을 받는다. 레거시 어플(210)은 네트웍 차단장치가 지원하는 디렉토리내의 디스크에 자신의 상태를 라이트하고, 이 상태는 마스터 후보(202s~u)의 원격 하드드라이브에 어플 디스크 라이트를 투명하고 동기적으로 복제한다. 차단장치들은 (자기 하드디스크나 플래시드라이브와 같은) 고정된 크기의 멀티플-바이트 청크에서의 리드/라이트 동작을 지원하는 모든 장치의 COSA(computer operating system abstractions)이다. 네트웍 차단장치는 모든 차단 라이트 동작을 로컬 차단장치와 원격 차단장치에 동기적으로 보낸다.
페일오버 이벤트가 일어날 때, 새 마스터는 기존의 마스터의 로컬 차단장치의 정확한 라이트-포-라이트(write-for-write) 복제인 자체 로컬 차단장치를 설치하고, 최대 클럭스큐 시간에 대한 라이트를 대기하고 네트웍 차단장치 레이어를 구성해 모든 차단 라이트를 군(206)의 나머지 다른 마스터 후보에 복제한 뒤 어플(210)의 서비스인 레거시 서비스를 시작한다.
본 발명은 Hadoop Distributed File System과 같은 대규모 싱글-마스터 분산시스템에 특히 유용한데, 이는 모든 파일시스템의 메타데이터를 관리하는 싱글-마스터 서비스의 자동 페일오버를 위한 기구를 제공하기 때문이다. 대형 분산시스템에서 데이터 전체를 저장하는 슬레이브 머신의 수는 하나면 되고 수십 내지 수천개일 필요가 없다. 마스터가 데이터손실을 겪으면 모든 데이터가 쓸모없어지고, 마스터에 접속할 수 없으면 모든 데이터에 접속할 수 없다. 고가용성 페일오버를 투명하게 실행하는 시스템은 이런 2가지 문제점을 모두 해결할 수 있다.
본 발명의 디자인은 (상태를 파일에 저장하는 것처럼) 차단장치 라이트를 거쳐 상태를 유지하는 레거시 시스템에 특히 적용할 수 있다. Kerberos나 모든 파일백 관계 데이터베이스(예; PostgreSQL)와 같은 많은 서비스들에 이 설명이 적용된다. 이런 디자인에서는 데이터손실이 없는 동기적 투명 페일오버를 제공하는 환경에서 이런 서비스를 지원할 수 있으며, 싱글-머신 레거시 서비스를 고가용성 서비스로 바꿀 수 있다.
Claims (23)
- 적어도 하나의 네트웍 클라이언트에서 서비스하는 고가용성 클러스터의 머신들을 포함한 노드들 사이에서 페일오버를 제공하기위해 상태들을 동기적으로 복제하는 방법에 있어서:
a) 상기 머신들 중에서 마스터 후보의 수 m(m≥2)을 확인하는 단계;
b) 상기 머신들 중에서 정족수 머신의 수 n(n≥3인 홀수)을 확인하는 단계;
c) 상기 m개의 마스터 후보들 각각을 동기적으로 업데이트하여 현 상태를 유지하는 단계;
d) 상기 정족수 머신에서의 다수결 투표를 통해 상기 m개의 마스터 후보들 중에서 현행 마스터를 선출하는 단계;
e) 현행 마스터에 속하는 로컬클럭에서 측정되는 현행 시한 리스를 이 리스를 유지하는 동안 상기 네트웍 클라이언트가 요청한 서비스를 운용하는 현행마스터에게 발급하는 단계; 및
f) 상기 현행 시한 리스의 상대적 클럭스큐의 상한을 정하는 단계;를 포함하고,
상기 현행 마스터의 장애가 m개의 마스터 후보들에서 새 마스터로의 페일오버와, 상기 새 마스터로의 새 시한 리스의 발급을 하여, 상기 마스터 후보들 사이의 스플릿브레인 현상을 방지하는 것을 특징으로 하는 방법. - 제1항에 있어서, 상기 n개 정족수 머신들의 다수결 투표를 통해 상기 m개 마스터 후보들로부터 현행 백업마스터를 선출하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제2항에 있어서, 상기 새 마스터가 상기 현행 백업마스터이고, 상기 페일오버는 상기 현행 백업마스터로의 페일오버인 것을 특징으로 하는 방법.
- 제1항에 있어서, 상기 상대적 클럭스큐를 정하는 단계에서,
a) 데이터 수정치들 사이의 지연들을 비교하여 상대적 클럭스큐를 추정하고;
b) 데이터 수정치들 사이의 상기 지연들에 의거해 상기 상한을 조정하는 것을 특징으로 하는 방법. - 제1항에 있어서, 상기 상한이 로컬클럭의 물성에서 결정되는 것을 특징으로 하는 방법.
- 제5항에 있어서, 상기 물성이 온도 드리프트 또는 진동 드리프트인 것을 특징으로 하는 방법.
- 제1항에 있어서, 상기 상한이 중앙 클럭과의 비교에서 결정되는 것을 특징으로 하는 방법.
- 제1항에 있어서, 상기 현행 시한 리스가 수초 내지 수십초인 것을 특징으로 하는 방법.
- 제1항에 있어서, a) 상기 고가용성 클러스터에 속하는 새 후보 머신을 확인하고; b) 상기 새 후보 머신을 동기적으로 업데이트하여 현재 상태를 유지하며; c) 상기 m개 마스터 후보들에 상기 새 후보 머신을 추가하고 m을 증분하여, 상기 마스터 후보의 수 m을 동적으로 확장하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제1항에 있어서, a) 상기 m개의 마스터 후보들 중에서 소정의 후보 머신을 확인하고; b) 상기 소정의 후보 머신을 마스터 후보에서 제거하여 m을 감분하여, 상기 마스터 후보군을 동적으로 축소하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제1항에 있어서, 상기 서비스가 고가용성 클러스터의 리소스로부터 상기 네트웍 클라이언트에게 서비스되는 레거시 어플을 포함하는 것을 특징으로 하는 방법.
- 제1항에 있어서, 상기 동기적으로 업데이트하는 단계가 LAN을 통해 실행되고, 상기 서비스가 WAN을 통한 통신을 포함하는 것을 특징으로 하는 방법.
- 제1항에 있어서, 상기 m과 n이 서로 다른 것을 특징으로 하는 방법.
- 제13항에 있어서, 상기 n개의 정족수 머신들을 서로 격리하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 적어도 하나의 네트웍 클라이언트에서 서비스하는 고가용성 클러스터를 운용하여, 스플릿브레인 현상 없이 이 클러스터의 머신들을 포함한 노드들 사이에서 페일오버를 제공하는 방법에 있어서:
a) 상기 머신들 중에서 마스터 후보의 수 m(m≥2)을 확인하는 단계;
b) 상기 머신들 중에서 정족수 머신의 수 n(n≥3인 홀수)을 확인하는 단계;
c) 상기 m개의 마스터 후보들 각각을 동기적으로 업데이트하여 현 상태를 유지하는 단계;
d) 상기 정족수 머신에서의 다수결 투표를 통해 상기 m개의 마스터 후보들 중에서 현행 마스터를 선출하는 단계;
e) 현행 마스터에 속하는 로컬클럭에서 측정되는 현행 시한 리스를 이 리스를 유지하는 동안 상기 네트웍 클라이언트가 요청한 서비스를 운용하는 현행마스터에게 발급하는 단계; 및
f) 상기 현행 시한 리스의 상대적 클럭스큐의 상한을 정하는 단계;를 포함하고,
상기 현행 마스터의 장애가 m개의 마스터 후보들에서 새 마스터로의 페일오버와, 상기 새 마스터로의 새 시한 리스의 발급을 하여, 상기 마스터 후보들 사이의 스플릿브레인 현상을 방지하는 것을 특징으로 하는 방법. - 제15항에 있어서, 상기 m개 마스터 후보들로부터 현행 백업마스터를 선출하는 단계를 더 포함하는 것을 특징으로 하는 방법.
- 제16항에 있어서, 상기 새 마스터가 상기 현행 백업마스터이고, 상기 페일오버는 상기 현행 백업마스터로의 페일오버인 것을 특징으로 하는 방법.
- 제15항에 있어서, 상기 상대적 클럭스큐를 정하는 단계가 데이터 수정치들 사이의 지연, 로컬클럭의 물성, 및 로컬클럭과 중앙 클럭 사이의 드리프트로 이루어진 군에서 선택된 물성으로 결정된 조정값을 포함하는 것을 특징으로 하는 방법.
- 스플릿브레인 현상 없이 고가용성 클러스터의 머신들을 포함한 노드들 사이에 페일오버를 할 수 있는 고가용성 클러스터에 있어서:
a) 상기 머신들 중에서 확인된 m(m≥2)개의 마스터 후보;
b) 상기 머신들 중에서 확인된 n(n≥3인 홀수)개의 정족수 머신;
c) 현 상태를 유지하기 위해 상기 m개의 마스터 후보들 중에서 상태를 동기적으로 복제하고 업데이트하기 위한 LAN;
d) 상기 m개의 마스터 후보들 중에서 현행 마스터를 선출하기 위해 정족수 머신 기반의 다수결투표 프로토콜;
e) 현행 마스터에 속하는 로컬클럭에서 측정되는 현행 시한 리스를 현행마스터에게 발급하기위한 메커니즘; 및
f) 상기 현행 시한 리스의 상대적 클럭스큐의 상한을 정하기 위한 물성;을 포함하고,
상기 현행 마스터의 장애가 m개의 마스터 후보들에서 새 마스터로의 페일오버와, 상기 새 마스터로의 새 시한 리스의 발급을 하여, 상기 마스터 후보들 사이의 스플릿브레인 현상을 방지하는 것을 특징으로 하는 고가용성 클러스터. - 제19항에 있어서, 상기 정족수 머신 기반 다수결투표 프로토콜이 Paxos인 것을 특징으로 하는 고가용성 클러스터.
- 제19항에 있어서, 상기 마스터 후보들이 NameNode 마스터 후보인 것을 특징으로 하는 고가용성 클러스터.
- 제19항에 있어서, 상기 물성이 데이터 수정치들 사이의 지연, 로컬클럭의 물성, 및 로컬클럭과 중앙 클럭 사이의 드리프트로 이루어진 군에서 선택되는 것을 특징으로 하는 고가용성 클러스터.
- 제19항에 있어서, 상기 노드가 차단저장장치를 갖춘 분산저장 시스템을 포함하는 것을 특징으로 하는 고가용성 클러스터.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/317,803 | 2011-10-28 | ||
US13/317,803 US8595546B2 (en) | 2011-10-28 | 2011-10-28 | Split brain resistant failover in high availability clusters |
PCT/US2012/061740 WO2013063152A1 (en) | 2011-10-28 | 2012-10-24 | Split brain resistant failover in high availability clusters |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140088176A KR20140088176A (ko) | 2014-07-09 |
KR101992508B1 true KR101992508B1 (ko) | 2019-09-30 |
Family
ID=48168449
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147014185A KR101992508B1 (ko) | 2011-10-28 | 2012-10-24 | 고가용성 클러스터에서의 스플릿브레인 방지 페일오버 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8595546B2 (ko) |
EP (1) | EP2771789A4 (ko) |
JP (1) | JP6084624B2 (ko) |
KR (1) | KR101992508B1 (ko) |
CA (1) | CA2853465C (ko) |
WO (1) | WO2013063152A1 (ko) |
Families Citing this family (63)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9424272B2 (en) | 2005-01-12 | 2016-08-23 | Wandisco, Inc. | Distributed file system using consensus nodes |
US9361311B2 (en) * | 2005-01-12 | 2016-06-07 | Wandisco, Inc. | Distributed file system using consensus nodes |
US8595546B2 (en) * | 2011-10-28 | 2013-11-26 | Zettaset, Inc. | Split brain resistant failover in high availability clusters |
TWI461929B (zh) * | 2011-12-09 | 2014-11-21 | Promise Tecnnology Inc | 雲端數據儲存系統 |
US9515999B2 (en) | 2011-12-21 | 2016-12-06 | Ssh Communications Security Oyj | Automated access, key, certificate, and credential management |
US9069827B1 (en) | 2012-01-17 | 2015-06-30 | Amazon Technologies, Inc. | System and method for adjusting membership of a data replication group |
US9116862B1 (en) | 2012-01-17 | 2015-08-25 | Amazon Technologies, Inc. | System and method for data replication using a single master failover protocol |
US9489434B1 (en) * | 2012-01-17 | 2016-11-08 | Amazon Technologies, Inc. | System and method for replication log branching avoidance using post-failover rejoin |
US8843441B1 (en) | 2012-01-17 | 2014-09-23 | Amazon Technologies, Inc. | System and method for maintaining a master replica for reads and writes in a data store |
US10037346B1 (en) | 2012-07-25 | 2018-07-31 | Google Llc | Time reservations for ensuring consistent reads in a distributed database without logging |
US9753954B2 (en) * | 2012-09-14 | 2017-09-05 | Cloudera, Inc. | Data node fencing in a distributed file system |
US9146794B2 (en) * | 2012-10-01 | 2015-09-29 | Microsoft Technology Licensing, Llc | Enhanced arbitration protocol for nodes in a cluster |
US10432703B2 (en) * | 2012-11-26 | 2019-10-01 | Facebook, Inc. | On-demand session upgrade in a coordination service |
US20140258771A1 (en) | 2013-03-06 | 2014-09-11 | Fortinet, Inc. | High-availability cluster architecture and protocol |
US10229181B2 (en) * | 2013-07-16 | 2019-03-12 | Pankaj Sharma | System and method for synchronizing data between communication devices in a networked environment without a central server |
JP6091376B2 (ja) * | 2013-08-12 | 2017-03-08 | 日本電信電話株式会社 | クラスタシステムおよびSplit−BrainSyndrome検出方法 |
IN2013MU02794A (ko) * | 2013-08-27 | 2015-07-03 | Tata Consultancy Services Ltd | |
US9569513B1 (en) * | 2013-09-10 | 2017-02-14 | Amazon Technologies, Inc. | Conditional master election in distributed databases |
US9686161B2 (en) * | 2013-09-16 | 2017-06-20 | Axis Ab | Consensus loss in distributed control systems |
US9465698B2 (en) * | 2014-03-06 | 2016-10-11 | Software Ag | Systems and/or methods for data recovery in distributed, scalable multi-tenant environments |
US9251017B2 (en) | 2014-03-25 | 2016-02-02 | International Business Machines Corporation | Handling failed cluster members when replicating a database between clusters |
US9742692B2 (en) * | 2014-06-23 | 2017-08-22 | Microsoft Technology Licensing, Llc | Acquiring resource lease using multiple lease servers |
JP6367630B2 (ja) * | 2014-07-17 | 2018-08-01 | Necネットワーク・センサ株式会社 | 冗長系システム、冗長機器及びその切替方法 |
US9047246B1 (en) * | 2014-07-31 | 2015-06-02 | Splunk Inc. | High availability scheduler |
US20160080249A1 (en) * | 2014-09-17 | 2016-03-17 | Telefonaktiebolaget L M Ericsson (Publ) | Prevent vrrp master / master split in active / standby icr system |
US9984140B1 (en) * | 2015-02-05 | 2018-05-29 | Amazon Technologies, Inc. | Lease based leader election system |
CN106155780B (zh) * | 2015-04-02 | 2020-01-31 | 阿里巴巴集团控股有限公司 | 一种基于时间的节点选举方法及装置 |
US10609137B2 (en) | 2015-08-24 | 2020-03-31 | Microsoft Technology Licensing, Llc | Global logical timestamp |
US10341252B2 (en) * | 2015-09-30 | 2019-07-02 | Veritas Technologies Llc | Partition arbitration optimization |
US9916214B2 (en) | 2015-11-17 | 2018-03-13 | International Business Machines Corporation | Preventing split-brain scenario in a high-availability cluster |
US9858011B2 (en) * | 2015-12-16 | 2018-01-02 | International Business Machines Corporation | Repopulating failed replicas through modified consensus recovery |
US10187255B2 (en) | 2016-02-29 | 2019-01-22 | Red Hat, Inc. | Centralized configuration data in a distributed file system |
US11075806B1 (en) | 2016-06-30 | 2021-07-27 | Juniper Networks, Inc. | Hierarchical naming scheme for state propagation within network devices |
US10461991B1 (en) * | 2016-09-19 | 2019-10-29 | Amazon Technologies, Inc. | Dynamic replication peering |
US10666569B1 (en) | 2016-09-23 | 2020-05-26 | Amazon Technologies, Inc. | Journal service with named clients |
US10346366B1 (en) | 2016-09-23 | 2019-07-09 | Amazon Technologies, Inc. | Management of a data processing pipeline |
US10423459B1 (en) | 2016-09-23 | 2019-09-24 | Amazon Technologies, Inc. | Resource manager |
US10805238B1 (en) * | 2016-09-23 | 2020-10-13 | Amazon Technologies, Inc. | Management of alternative resources |
CN107919977B (zh) * | 2016-10-11 | 2021-09-03 | 阿里巴巴集团控股有限公司 | 一种基于Paxos协议的在线扩容、在线缩容的方法和装置 |
US10664866B2 (en) * | 2016-11-30 | 2020-05-26 | Facebook, Inc. | Conversion optimization with long attribution window |
US11803420B1 (en) * | 2016-12-20 | 2023-10-31 | Amazon Technologies, Inc. | Execution of replicated tasks using redundant resources |
US11316775B2 (en) | 2016-12-21 | 2022-04-26 | Juniper Networks, Inc. | Maintaining coherency in distributed operating systems for network devices |
US10887173B2 (en) | 2016-12-21 | 2021-01-05 | Juniper Networks, Inc. | Communicating state information in distributed operating systems |
US11316744B2 (en) | 2016-12-21 | 2022-04-26 | Juniper Networks, Inc. | Organizing execution of distributed operating systems for network devices |
US10521344B1 (en) * | 2017-03-10 | 2019-12-31 | Pure Storage, Inc. | Servicing input/output (‘I/O’) operations directed to a dataset that is synchronized across a plurality of storage systems |
US10534767B2 (en) | 2017-03-14 | 2020-01-14 | International Business Machines Corporation | Disaster recovery for split storage cluster |
CN109240840B (zh) * | 2017-07-11 | 2022-04-19 | 阿里巴巴集团控股有限公司 | 集群系统的容灾方法、装置和机器可读介质 |
US10992598B2 (en) | 2018-05-21 | 2021-04-27 | Pure Storage, Inc. | Synchronously replicating when a mediation service becomes unavailable |
CN108989391B (zh) * | 2018-06-19 | 2021-09-07 | 北京百悟科技有限公司 | 一种一致性处理的方法及系统 |
US10884879B2 (en) | 2018-10-18 | 2021-01-05 | Oracle International Corporation | Method and system for computing a quorum for two node non-shared storage converged architecture |
US10963353B2 (en) * | 2018-10-23 | 2021-03-30 | Capital One Services, Llc | Systems and methods for cross-regional back up of distributed databases on a cloud service |
US11095742B2 (en) | 2019-03-27 | 2021-08-17 | Juniper Networks, Inc. | Query proxy for delivery of dynamic system state |
US11614769B2 (en) * | 2019-07-15 | 2023-03-28 | Ecole Polytechnique Federale De Lausanne (Epfl) | Asynchronous distributed coordination and consensus with threshold logical clocks |
CN110417600B (zh) * | 2019-08-02 | 2022-10-25 | 秒针信息技术有限公司 | 分布式系统的节点切换方法、装置及计算机存储介质 |
CN110455370B (zh) * | 2019-08-18 | 2020-10-02 | 安徽省(水利部淮河水利委员会)水利科学研究院(安徽省水利工程质量检测中心站) | 防汛抗旱远程遥测显示系统 |
US20210191826A1 (en) * | 2019-12-20 | 2021-06-24 | Johnson Controls Technology Company | Building system with ledger based software gateways |
US11544228B2 (en) | 2020-05-07 | 2023-01-03 | Hewlett Packard Enterprise Development Lp | Assignment of quora values to nodes based on importance of the nodes |
US11477117B1 (en) | 2020-11-23 | 2022-10-18 | Juniper Networks, Inc. | High-availability switchover based on traffic metrics |
US11785077B2 (en) | 2021-04-29 | 2023-10-10 | Zoom Video Communications, Inc. | Active-active standby for real-time telephony traffic |
US11575741B2 (en) | 2021-04-29 | 2023-02-07 | Zoom Video Communications, Inc. | System and method for active-active standby in phone system management |
US12045667B2 (en) * | 2021-08-02 | 2024-07-23 | International Business Machines Corporation | Auto-split and auto-merge clusters |
US11438224B1 (en) | 2022-01-14 | 2022-09-06 | Bank Of America Corporation | Systems and methods for synchronizing configurations across multiple computing clusters |
CN115967669B (zh) * | 2023-03-16 | 2023-06-27 | 北京志凌海纳科技有限公司 | 基于vrrp拓展协议的脑裂抑制方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011210106A (ja) | 2010-03-30 | 2011-10-20 | Nippon Telegr & Teleph Corp <Ntt> | メッセージキュー管理システム及びロックサーバ及びメッセージキュー管理方法及びメッセージキュー管理プログラム |
JP2011210107A (ja) | 2010-03-30 | 2011-10-20 | Nippon Telegr & Teleph Corp <Ntt> | メッセージキュー管理システム及びロックサーバ及びメッセージキュー管理方法及びメッセージキュー管理プログラム |
Family Cites Families (38)
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 |
US7774469B2 (en) * | 1999-03-26 | 2010-08-10 | Massa Michael T | Consistent cluster operational data in a server cluster using a quorum of replicas |
US6487622B1 (en) * | 1999-10-28 | 2002-11-26 | Ncr Corporation | Quorum arbitrator for a high availability system |
US6687846B1 (en) * | 2000-03-30 | 2004-02-03 | Intel Corporation | System and method for error handling and recovery |
US7228453B2 (en) * | 2000-10-16 | 2007-06-05 | Goahead Software, Inc. | Techniques for maintaining high availability of networked systems |
JP4478321B2 (ja) * | 2000-11-27 | 2010-06-09 | 富士通株式会社 | ストレージシステム |
US7640582B2 (en) * | 2003-04-16 | 2009-12-29 | Silicon Graphics International | Clustered filesystem for mix of trusted and untrusted nodes |
US6944785B2 (en) * | 2001-07-23 | 2005-09-13 | Network Appliance, Inc. | High-availability cluster virtual server system |
WO2003023633A1 (en) * | 2001-09-06 | 2003-03-20 | Bea Systems, Inc. | Exactly once cache framework |
KR100753564B1 (ko) * | 2001-12-24 | 2007-08-30 | 엘지엔시스(주) | 고가용성 시스템의 정보 유지방법 |
US6950855B2 (en) * | 2002-01-18 | 2005-09-27 | International Business Machines Corporation | Master node selection in clustered node configurations |
US7421478B1 (en) * | 2002-03-07 | 2008-09-02 | Cisco Technology, Inc. | Method and apparatus for exchanging heartbeat messages and configuration information between nodes operating in a master-slave configuration |
EP1550036B1 (en) * | 2002-10-07 | 2008-01-02 | Fujitsu Siemens Computers, Inc. | Method of solving a split-brain condition in a cluster computer system |
US7194652B2 (en) | 2002-10-29 | 2007-03-20 | Brocade Communications Systems, Inc. | High availability synchronization architecture |
WO2004105303A1 (en) * | 2003-04-29 | 2004-12-02 | Telefonaktiebolaget Lm Ericsson (Publ) | Multiphase clock recovery |
US7478263B1 (en) * | 2004-06-01 | 2009-01-13 | Network Appliance, Inc. | System and method for establishing bi-directional failover in a two node cluster |
US7334154B2 (en) * | 2004-06-18 | 2008-02-19 | Microsoft Corporation | Efficient changing of replica sets in distributed fault-tolerant computing system |
GB0416074D0 (en) * | 2004-07-17 | 2004-08-18 | Ibm | Controlling data consistency guarantees in storage apparatus |
US7711820B2 (en) * | 2004-11-08 | 2010-05-04 | Cisco Technology, Inc. | High availability for intelligent applications in storage networks |
JP4182948B2 (ja) | 2004-12-21 | 2008-11-19 | 日本電気株式会社 | フォールト・トレラント・コンピュータシステムと、そのための割り込み制御方法 |
US7953890B1 (en) | 2006-01-27 | 2011-05-31 | Symantec Operating Corporation | System and method for switching to a new coordinator resource |
CN101548268B (zh) | 2006-10-05 | 2014-05-21 | 瓦拉泰克有限公司 | 更新存储器位置的内容的方法和系统 |
US20080133690A1 (en) | 2006-10-05 | 2008-06-05 | Holt John M | Contention detection and resolution |
US7590886B2 (en) | 2006-11-21 | 2009-09-15 | General Instruments, Corporation | Method and apparatus for facilitating device redundancy in a fault-tolerant system |
US7814301B2 (en) | 2007-04-11 | 2010-10-12 | Hewlett-Packard Development Company, L.P. | Clock architecture for multi-processor systems |
KR100864987B1 (ko) * | 2007-04-12 | 2008-10-22 | 디비코 주식회사 | 클라이언트 동기화 시스템 및 그 방법 |
US20090249174A1 (en) * | 2008-04-01 | 2009-10-01 | International Business Machines Corporation | Fault Tolerant Self-Correcting Non-Glitching Low Power Circuit for Static and Dynamic Data Storage |
US8001413B2 (en) | 2008-05-05 | 2011-08-16 | Microsoft Corporation | Managing cluster split-brain in datacenter service site failover |
US8108557B2 (en) * | 2009-01-22 | 2012-01-31 | Hewlett-Packard Development Company, L.P. | System and method for measuring clock skew on a network |
GB0914815D0 (en) * | 2009-08-25 | 2009-09-30 | Univ City | Improvements relating to database replication protocols |
US9081888B2 (en) * | 2010-03-31 | 2015-07-14 | Cloudera, Inc. | Collecting and aggregating log data with fault tolerance |
US9323775B2 (en) * | 2010-06-19 | 2016-04-26 | Mapr Technologies, Inc. | Map-reduce ready distributed file system |
US8627135B2 (en) | 2010-08-14 | 2014-01-07 | Teradata Us, Inc. | Management of a distributed computing system through replication of write ahead logs |
US8949558B2 (en) * | 2011-04-29 | 2015-02-03 | International Business Machines Corporation | Cost-aware replication of intermediate data in dataflows |
US8595546B2 (en) * | 2011-10-28 | 2013-11-26 | Zettaset, Inc. | Split brain resistant failover in high availability clusters |
US9069827B1 (en) * | 2012-01-17 | 2015-06-30 | Amazon Technologies, Inc. | System and method for adjusting membership of a data replication group |
US9116862B1 (en) * | 2012-01-17 | 2015-08-25 | Amazon Technologies, Inc. | System and method for data replication using a single master failover protocol |
US9146794B2 (en) * | 2012-10-01 | 2015-09-29 | Microsoft Technology Licensing, Llc | Enhanced arbitration protocol for nodes in a cluster |
-
2011
- 2011-10-28 US US13/317,803 patent/US8595546B2/en active Active
-
2012
- 2012-10-24 EP EP12843454.5A patent/EP2771789A4/en not_active Withdrawn
- 2012-10-24 CA CA2853465A patent/CA2853465C/en active Active
- 2012-10-24 KR KR1020147014185A patent/KR101992508B1/ko active IP Right Grant
- 2012-10-24 WO PCT/US2012/061740 patent/WO2013063152A1/en active Application Filing
- 2012-10-24 JP JP2014538959A patent/JP6084624B2/ja not_active Expired - Fee Related
-
2013
- 2013-11-12 US US14/078,488 patent/US9460183B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011210106A (ja) | 2010-03-30 | 2011-10-20 | Nippon Telegr & Teleph Corp <Ntt> | メッセージキュー管理システム及びロックサーバ及びメッセージキュー管理方法及びメッセージキュー管理プログラム |
JP2011210107A (ja) | 2010-03-30 | 2011-10-20 | Nippon Telegr & Teleph Corp <Ntt> | メッセージキュー管理システム及びロックサーバ及びメッセージキュー管理方法及びメッセージキュー管理プログラム |
Also Published As
Publication number | Publication date |
---|---|
US9460183B2 (en) | 2016-10-04 |
JP2014532921A (ja) | 2014-12-08 |
US20140188794A1 (en) | 2014-07-03 |
JP6084624B2 (ja) | 2017-02-22 |
EP2771789A4 (en) | 2015-09-16 |
CA2853465A1 (en) | 2013-05-02 |
EP2771789A1 (en) | 2014-09-03 |
WO2013063152A1 (en) | 2013-05-02 |
US8595546B2 (en) | 2013-11-26 |
KR20140088176A (ko) | 2014-07-09 |
US20130111261A1 (en) | 2013-05-02 |
CA2853465C (en) | 2016-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101992508B1 (ko) | 고가용성 클러스터에서의 스플릿브레인 방지 페일오버 | |
WO2019085875A1 (zh) | 存储集群的配置修改方法、存储集群及计算机系统 | |
JP4896438B2 (ja) | 分散障害許容型コンピューティングシステムにおける効率のよいレプリカセットの変更 | |
EP0988596B1 (en) | Method and system for recovery in a partitioned shared nothing database system using virtual shared disks | |
US8412790B2 (en) | Method, system and computer readable recording medium for determining major group under split-brain syndrome | |
US8301600B1 (en) | Failover recovery in a distributed data store | |
US9880753B2 (en) | Write requests in a distributed storage system | |
EP3459211B1 (en) | High-availability network controller | |
EP2643771B1 (en) | Real time database system | |
US20210089662A1 (en) | Encrypted cross-zone replication for cross-zone replicated block storage devices | |
WO2016070375A1 (zh) | 一种分布式存储复制系统和方法 | |
US20120079090A1 (en) | Stateful subnet manager failover in a middleware machine environment | |
US11231885B2 (en) | Hierarchical authority store for cross-zone replicated block storage devices | |
CN109446169B (zh) | 一种双控磁盘阵列共享文件系统 | |
CN104994168A (zh) | 分布式存储方法及分布式存储系统 | |
US20210089212A1 (en) | Failover for failed secondary in cross-zone replicated block storage devices | |
Zhou et al. | A highly reliable metadata service for large-scale distributed file systems | |
US10761745B1 (en) | System and method for managing parity within a database management system | |
CN109218386B (zh) | 一种管理Hadoop命名空间的高可用方法 | |
US11249868B2 (en) | Method of fault management in a network of nodes and associated part of network of nodes | |
Zhou et al. | MAMS: A highly reliable policy for metadata service | |
Chaurasiya et al. | Linux highly available (HA) fault-tolerant servers | |
US20240272989A1 (en) | High availability for backup and restore applications in public clouds | |
Cottrell et al. | Fault-Tolerant Design | |
CN118092778A (zh) | 一种主动变更的方法、系统、服务器及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |