KR20040073274A - 컴퓨터 클러스터 운영 방법 - Google Patents
컴퓨터 클러스터 운영 방법 Download PDFInfo
- Publication number
- KR20040073274A KR20040073274A KR1020030101701A KR20030101701A KR20040073274A KR 20040073274 A KR20040073274 A KR 20040073274A KR 1020030101701 A KR1020030101701 A KR 1020030101701A KR 20030101701 A KR20030101701 A KR 20030101701A KR 20040073274 A KR20040073274 A KR 20040073274A
- Authority
- KR
- South Korea
- Prior art keywords
- cluster
- nodes
- configuration
- node
- quorum
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 82
- 230000009471 action Effects 0.000 claims description 14
- 238000012544 monitoring process Methods 0.000 claims description 13
- 230000008859 change Effects 0.000 claims description 11
- 230000008094 contradictory effect Effects 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 5
- 241000282414 Homo sapiens Species 0.000 claims description 4
- 230000014759 maintenance of location Effects 0.000 claims description 3
- 230000007257 malfunction Effects 0.000 claims description 2
- 230000003362 replicative effect Effects 0.000 claims 3
- 230000000977 initiatory effect Effects 0.000 claims 1
- 210000004556 brain Anatomy 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 34
- 230000006870 function Effects 0.000 description 17
- 238000007726 management method Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 13
- 230000007246 mechanism Effects 0.000 description 9
- 238000000638 solvent extraction Methods 0.000 description 6
- 238000005192 partition Methods 0.000 description 5
- 230000007704 transition Effects 0.000 description 5
- 230000010247 heart contraction Effects 0.000 description 4
- 230000002085 persistent effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000036541 health Effects 0.000 description 2
- 230000008521 reorganization Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000003449 preventive effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2289—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing by configuration test
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- 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/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/2002—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 interconnections or communication control functionality are redundant
- G06F11/2007—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 interconnections or communication control functionality are redundant using redundant communication media
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Hardware Redundancy (AREA)
Abstract
본 발명은 분할 브레인 상황을 초래할 수 있는 고장을 다룰 수 있다. 특히, 공유 리소스의 소유자가 분할 브레인 상황에 직면하더라도, 공유 리소스의 안전한 관리가 지원된다. 또한, 본 발명은 클러스터의 재편성 동안 클러스터의 구성원 중 일부에 도달할 수 없다는 사실에도 불구하고, 클러스터 구성을 업데이트 할 수 있다. 본 발명의 방법은 시작된 모든 노드들이 항상 최근의 구성을 작업 구성으로 사용하는 것을 보장하며, 만일 이것이 불가능하다면, 구성의 잠재적인 모순에 대하여 관리자에게 경고한다.
Description
본 발명은 일반적으로 컴퓨터 클러스터에 관한 것이다. 구체적으로 본 발명은 고가용성(high availability) 클러스터를 운영하는 방법 및 시스템에 관한 것이다.
본 발명은 어떤 고장 상황에서 클러스터의 컴포넌트가 고장난 것인지 아니면 그 컴포넌트로의 통신 링크가 고장난 것인지 결정하는 것이 불가능하지는 않더라도 어렵다는 사실을 다루는 클러스터링 기술에 관한 것이다. 이러한 상황은 때로 "분할 브레인 상황(split brain situation)"이라고 불리는데, 그 이유는 이러한 고장으로 인하여 상이한 집합의 클러스터 컴포넌트들이 클러스터의 의무를 대신하는 상황이 벌어질 수 있기 때문이다. 예를 들어 하나가 넘는 컴포넌트가 공유 데이터를 소유하고자 하는 경우 후자는 해로울 수 있다.
3개의 노드 클러스터에서의 다수결의 원칙 또는 상호 STONITH(Shoot the other node in the head) 방식을 사용하여 잠금(보존(reserve)/해제(release)) 보호 디스크에 데이터를 저장하는 것과 같이, 이러한 종류의 문제를 처리하기 위한 상이한 보호 메카니즘이 제안되어 왔다. 그러나, 이 모든 해결책은 특정 애플리케이션, 특수한 하드웨어의 가용성, 아니면, 특정 클러스터 토폴로지, 고정 클러스터 구성에 엄격하게 제한되어 있다.
여기서 출발하여, 본 발명의 목적은 고가용성 컴퓨터 클러스터를 안전하게 운영하는 방법 및 시스템을 제공하는 것이다.
도 1은 클러스터를 구성하는 하드웨어 컴포넌트들을 도시하는 블록도.
도 2는 실제 클러스터 분할을 겪는 클러스터의 블록도.
도 3은 잠재적인 클러스터 분할을 가진 클러스터의 블록도.
도 4는 각 노드에 구현된 클러스터의 소프트웨어 스택을 도시하는 상세한 블록도.
도 5는 제1 노드와 제2 노드의 소프트웨어 층과 하드웨어 층, 및 이들의 도달가능성과 잠재적인 고장 지점을 도시하는 블록도.
도 6은 클러스터 와이드 리소스 관리 서비스의 기능을 설명하는 제1 노드와 제2 노드의 블록도.
도 7은 구성된 클러스터의 동작을 도시하는 컴퓨터 시스템의 블록도.
도 8은 클러스터 컴포넌트들 간의 정보 흐름을 도시하는 흐름도.
도 9는 단일 노드의 상이한 동작 상태를 도시하는 상태도.
도 10은 시스템의 자체 감시의 종속성을 도시하는 흐름도.
도 11a는 클러스터 분할 상황에 있는 클러스터의 블록도.
도 11b는 연결이 재설정된 클러스터의 블록도.
도 11c는 병합 상태 1, 즉, 하위 클러스터에서 해제(dissolve)되는 상태에있는 클러스터의 블록도.
도 11d는 병합 상태 2, 즉, 제1 노드 결합 상태에 있는 클러스터의 블록도.
도 11e는 병합 상태 3, 즉, 제2 노드 결합 상태에 있는 클러스터의 블록도.
도 12a 내지 도 12e는 구성 쿼럼의 예를 도시하는 블록도.
도 13a 내지 도 13c는 핵심적인 리소스를 가진 2 노드 클러스터에 대한 동작 쿼럼의 예를 도시하는 블록도.
도 14는 핵심적인 리소스를 가진 5 노드 클러스터에 대한 동작 쿼럼의 예를 도시하는 블록도.
전술한 목적은 독립항에 기재된 방법 및 시스템에 의해 달성될 수 있다. 본 발명의 다른 유리한 실시예들은 종속항에 기재되어 있고, 다음의 설명에 나타나 있다.
본 발명은 분할 브레인 상황을 초래할 수 있는 고장 상황을 처리할 수 있게 해 준다. 특히, 공유 리소스의 소유자들이 분할 브레인 상황에 직면하더라도 공유 리소스의 안전한 관리가 지원된다. 또한, 본 발명은 재편성 동안 클러스터의 일부 구성원에 도달할 수 없다는 사실에도 불구하고 클러스터 구성을 갱신할 수 있게 해 준다. 본 발명의 정책은 시작된 모든 노드가 항상 최근의 구성을 작업 구성으로서 사용하는 것을 보장한다는 것인데, 만일 이것이 가능하지 않다면, 관리자에게 이구성의 잠재적인 모순에 대하여 경고한다.
공유 리소스의 제어는 연결된 어느 하위 클러스터가 중요한 리소스를 책임지고 있는지 결정하기 위하여 다수결(현재의 클러스터가 정의된 클러스터의 과반수의 노드들을 가짐)의 원칙을 사용하는 쿼럼에 기초를 두고 있다. 타이(tie) 상황에서는 결정을 구하기 위하여 타이브레이커(tiebreaker)를 참조할 수 있다. 타이브레이커는 경쟁 내에서 기껏해야 하나의 승자를 허용하는 (하드웨어 지원을 가지고 가능한) 메카니즘이다. 쿼럼을 가지지 않는 하위 클러스터의 경우, 노드의 정지 또는 재부팅을 강제할 수 있는 리소스 보호 메카니즘이 제공된다. 이러한 리소스 보호 메카니즘은 "핵심적인(critical)" 것으로 지정된 리소스들을 실제로 보유하는 노드들에서만 사용된다.
클러스터의 (재)구성과 관련하여, 클러스터의 정의된 노드의 절반에만 도달할 수 있는 경우 여전히 클러스터를 시작할 수 있도록 하는 반면, 최대의 고장 회수를 허용하는 (노드를 클러스터에 추가하고, 클러스터로부터 노드를 제거하고, 노드를 시작하는 것과 같은) 특정한 운영에 대하여 많은 반대가 있을 수 있다.
또한, 본 발명은 연결이 재수립된 이후에 두 개의 하위 클러스터를 병합할 것을 요구할 수 있는 일시적인 네트워크 고장을 어떻게 처리하는지에 대하여 알려준다.
전술한 본 발명의 특징과 장점 및 추가적인 목적은 다음의 상세한 설명에서 명백해질 것이다.
본 발명의 신규한 특징은 첨부된 특허청구범위에 기재되어 있다. 그러나,첨부된 도면과 함께 실시예의 상세한 설명을 참조하면, 바람직한 실시 형태, 추가적인 목적, 및 효과뿐만 아니라, 본 발명 그 자체에 대하여 이해할 수 있을 것이다.
도 1을 참조하면, 클러스터(100)를 형성하는 하드웨어 컴포넌트들을 도시하는 블록도가 도시되어 있다. 클러스터(100)는 5개의 노드(101-105)를 포함한다. 각 노드(101-105)는 운영 체제를 호스트하는 컨테이너를 형성한다. 이러한 컨테이너는 전용 하드웨어, 즉, 운영 체제당 하나의 데이터 처리 시스템에 의해, 또는 하나의 동일한 컴퓨터 시스템 상에서 다수의 독립적인 운영 체제가 동작할 수 있게 하는 가상 데이터 처리 시스템에 의해 형성될 수 있다. 또한, 각 노드(101-105)는 각각 두 개의 네트워크 어댑터(110, 111; 112, 113; 114, 115; 116, 117; 118, 119)를 구비하고 있다. 각 노드(101-105)의 하나의 네트워크 어댑터(110, 112, 114, 116, 118)가 제1 네트워크(120)에 연결되는 반면, 나머지 네트워크 어댑터(111, 113, 115, 117, 119)는 제2 네트워크(122)에 연결된다.
노드당 하나의 네트워크 어댑터와 하나의 네트워크만으로 본 발명에 의한 시스템과 방법을 구현하기에 충분하다는 것은 인식되어 있다. 그러나, 고가용성이 본 발명의 주 목표 중 하나이기 때문에, 리던던트 네트워크가 제공된다. 다른 대안으로, 네트워크들은 전용 목적을 가질 수 있다. 즉, 제1 네트워크(120)는 단지 노드들간의 서비스 메시지를 교환하는데 사용될 수 있는 반면, 제2 네트워크(122)는 노드의 도달가능성(reachability)을 모니터링하는 하트비트(heartbeat) 네트워크로서 사용될 수 있다.
제1 노드(101)는 제1 노드에 로컬인 리소스, 여기서는 로컬 디스크(124)에 연결되어 있다. 마찬가지로, 제5 노드(105)는 통신 링크를 통하여 로컬 리소스 즉, 로컬 디스크(126)에 연결되어 있다. 각 노드가 로컬 디스크를 가질 수 있다는 것은 인식되어 있다.
5개의 각 노드(101-105)에 대한 통신 링크를 가지는 하나의 공유 리소스-여기서는 공유 디스크(128)-가 제공된다. 공유 디스크는 아래에서 상세히 설명하는 바와 같이, 핵심적인 리소스를 형성할 수 있다. 공유 리소스가 클러스터 내의 모든 노드의 부분 집합간에서만 공유될 수 있다는 것은 인식되어 있다.
모든 노드가 액세스할 수 있는 정상적인 작동의 다른 대상은 타이브레이커(130)이다. 타이브레이커는 독점적인 잠금(lock) 메카니즘을 구현한다. 즉, 타이브레이커(130)에서 보유(reserve) 및 해제(release) 동작이 있다. 기껏해야 하나의 시스템이 한번에 타이브레이커를 보유할 수 있고, 타이브레이커를 보유하는 마지막 시스템만이 타이브레이커를 성공적으로 해제할 수 있다. 에러 상황에서 타이브레이커에 대한 액세스는 조사(probing) 동작을 통하여 허가될 수 있다. 이 과정에 리던던트 보유가 허용된다. 타이브레이커는 ECKD DASD(IBM's Extended Count Key Data Direct Access Storage Device) 보유/해제, SCSI-2(Smaller Computer System Interface) 보유/해제, SCSI-3(Smaller Computer System Interface) 지속적(persistent) 보유/해제, API(Application Programming Interface) 또는 CLI(command line interface) 기반의 방식, STONITH(Shoot The Other Node In The Head from the HA-Heartbeat open source project)를 통한 상호"샷(shoot out)" 또는 심지어 테스트 동안 유리하게 사용될 수 있는 항상 고장나는 유사-타이브레이커(always-failing pseudo-tiebreaker), 또는 비정상적인 사이즈의 클러스터만으로서 구현될 수 있다.
도 2를 참조하면, 실제 클러스터 분할을 거치는 클러스터(200)의 블록도가 도시되어 있다. 노드의 집합을 클러스터의 잠재적인 구성원으로 정의함으로써 클러스터(200)가 구성된다, 즉, 작동을 위해 준비된다. 또한, 클러스터(200)는 5개의 노드(201-205)와 하나의 핵심적인 리소스(210)를 포함한다. 만일 해로운 작동, 예를 들어 데이터 일관성을 해치는 작동을 피하기 위하여 동시에 이루어지는 액세스가 조정되어질 필요가 있다면, 리소스는 "핵심적(critical)"이다. 도시된 클러스터(200)는 노드(201, 202, 203)로 구성되는 제1 액티브 하위 클러스터(212)와, 나머지 노드(204, 205)로 구성되는 제2 액티브 하위 클러스터(214)로 나뉘어진다.
초기에 모든 노드들은 리던던트 통신 네트워크(220)를 통하여 서로 통신할 수 있었다. 그러나, 클러스터(200)의 본 예에서는 리던던트 네트워크(220)가 기호(224)로 표시된 바와 같은 오동작을 겪는다. 결과적으로, 통신은 제1 액티브 하위 클러스터(212)의 노드들간에, 그리고, 제2 액티브 하위 클러스터(214)의 노드들간에만 가능하다. 제1 액티브 하위 클러스터(212)로부터 제2 액티브 하위 클러스터(214)로 또는 그 반대로 정보가 전달될 수가 없다.
이러한 상황에서 핵심적인 리소스(210)에 관련된 데이터 일관성이 보장될 수 없으므로, 하나의 액티브 하위 클러스터만이 핵심적인 리소스(210)를 소유할 수 있다.
비슷한 심각한 상황에 대하여 도 3을 참조하여 설명한다. 소위 잠재적인 클러스터 분할을 가지고 있는 클러스터(300)의 블록도가 도시되어 있다. 도 1의 클러스터(200)와 마찬가지로, 클러스터(300)는 노드의 집합을 클러스터의 잠재적인 구성원으로 정의함으로써 구성된다, 즉, 작동을 위해 준비된다. 또한, 클러스터(300)는 5개의 노드(301-305)와 하나의 핵심적인 리소스(310)를 포함한다. 도시된 클러스터(300)는 노드(301, 302, 303)로 이루어진 단지 하나의 액티브 하위 클러스터(312)를 포함한다. 나머지 노드(304, 305)는 액티브하지 않다. 러던던트 통신 네트워크(320)가 업(up) 상태이며 실행 중이라는 사실에도 불구하고, 결과적으로 액티브 하위 클러스터(312)의 노드들과 나머지 노드(304, 305)간에 통신은 전혀 불가능하다.
액티브 하위 클러스터의 관점에서 볼 때, 도 3에 도시된 잠재적인 클러스터 분할과 도 2에 도시된 실제 클러스터 분할은 같은 것처럼 보인다. 즉, 노드(301-303)와 노드(201-203)는 각각 잠재적인 클러스터 분할과 실재 클러스터 분할을 구별할 수 없다. 결과적으로, 실제 클러스터 분할 동안 수행된 클러스터 구성의 변화 및/또는 잠재적인 클러스터 분할 동안 수행된 클러스터 구성의 변화는 모순된 클러스터 구성을 초래할 수 있다. 두가지 경우에 하나의 액티브 하위 클러스터의 노드들만이 핵심적인 리소스(310)를 액세스할 수 있게 하는 것을 보장할 필요가 있다.
도 4를 참조하면, 각 노드(400)에서 구현되는 클러스터의 소프트웨어 스택을 도시하는 자세한 블록도가 도시되어 있다. 전술한 바와 같이, 노드는 리소스 할당, 하위 레벨 하드웨어 인터페이스, 보안 등을 책임지는 운영 체제 커널(402), 즉, 운영 체제의 핵심 부분을 포함하는 운영 체제를 실행시키기 위한 컨테이너를 제공한다. 바람직하게는, 운영 체제(OS) 커널(402)은 소위 데드 맨 스위치(dead man switch, DMS)(404)를 구비한다. 데드 맨 스위치(404)는 핵심적인 리소스에 대한 조정되지 않은 액세스를 피하기 위하여, 실행되지 않는다면(unattended) 자동적으로 노드를 정지시키는 예방 조치 메카니즘이다. 데드 맨 스위치는 예를 들어, AIX-DMS(IBM 사) 또는 리눅스 SoftDog에 의해 구현될 수 있다.
OS 커널(402)의 상부에 토폴로지 서비스(TS)(406)가 제공된다. 토폴로지 서비스(406)는 그 서비스가 실행되고 있는 노드 및 다른 노드들간의 물리적인 연결을 모니터링한다. 그렇게 하는데 있어서, 노드는 물리적 통신 링크(도시되지 않음)를 통하여 도달할 수 있는 노드들에 대한 정보를 수집한다. RSCT 토폴로지 서비스(IBM의 Reliable Scalable Clustering Technology Topology Service) 또는 HA-하트 비트(공개 소스 고가용성 프로젝트)가 이 토폴로지 서비스를 구현할 수 있다.
다음 층은 그룹 서비스(GS)(408)에 의해 형성되는데, 이는 프로세스의 논리적 클러스터를 생성하는 것을 가능하게 하고, 그룹 조정(coordination) 서비스를 포함한다. RSCT Group Service는 그룹 서비스를 구현한 것을 제공한다.
한 층 위에, 어댑터와 같은 리소스, 파일 시스템, IP 주소, 및 프로세스를 제어하는 리소스 관리 서비스(RMS, Resource Management Service)(410)가 있다. RMS는 RSCT RMC & RMgrs(IBM의 RSCT Resource Management and Control & Resourcemanagers), CIM CIMON(Common Information Model)에 의해 형성될 수 있다.
다음 층은 액티브 노드의 하위 클러스터를 나타낼 책임이 있고 구성 및 쿼럼 서비스를 제공하는 클러스터 서비스(CS)(412)에 의해 형성되는데, 이하에서 상세히 설명한다. RSCT ConfigRM(IBM의 RSCT Configuration Resource Manager)가 클러스터 서비스의 기능을 구현한다.
모든 층이 클러스터 애플리케이션(CA)(414)이 동작할 수 있는 클러스터 기반 구조를 형성하는데, 이는 사실 GPFS, 리눅스용 SA, Lifekeeper, Failsafe와 같은 다수의 노드들에 분산되어 있다.
도 5를 참조하면, 제1 노드(501)와 제2 노드(502)의 소프트웨어 층과 하드웨어 층 및 이들의 도달가능성과 잠재적인 고장 지점을 도시하는 블록도가 도시되어 있다. 각 노드는 도 4를 참조하여 설명된 상이한 층들, 즉, DMS(505, 506)를 포함하는 OS 커널(503, 504), TS 층(507, 508), GS 층(509, 510), RMS 층(511, 512), CS 층(513, 514), 및 CA 층(515, 516)을 포함한다. 각 노드(501, 502)는 각 네트워크 어댑터(521, 522)에 연결되어 있고, 이것은 노드들 간의 물리적 통신 링크(525)에 연결되어 있다.
토폴로지 서비스(507, 508)는 네트워크 어댑터(521, 522)에 의해 제공되는 물리적 통신 링크의 동작을 모니터링한다. 그룹 서비스는 노드의 논리적 클러스터(라인 526)와 클러스터 애플리케이션의 논리적 클러스터(라인 527)를 설정하고 모니터링한다.
클러스터의 동작 동안, 노드의 도달이 실패할 여러 가지 가능성이 존재하는데, 이는 모두 적당한 조치를 개시하기 위하여 검출될 필요가 있다. CA 고장은 GS에 의해 제공되는 정보에 기초하여 상이한 노드에서 원격 CA 인스턴스에 의해 관찰되고 처리된다. CS 고장은 현재 도달가능한 노드들에 대한 정보 및/또는 클러스터 구성의 변화를 필요로 하는 모든 로컬 서비스와 애플리케이션에 의해 관찰된다. 원격 노드의 CS 층은 GS에 의해 제공되는 정보에 기초하여 노드 고장으로서 이것을 관찰한다.
GS 고장의 경우에 모든 로컬 CA와 CS가 이를 관찰할 것이다. 원격 GS는 이러한 고장을 논리적 노드 고장으로서 관찰할 것이다.
TS가 고장날 때, 논리적 GS가 이것을 치명적인 에러 또는 노드의 고립으로서 관찰할 것이다. 원격 TS는 이것을 노드 도달 실패로서 관찰할 것이다. 노드가 OS 커널 고장 때문에 고장날 때, 노드의 모든 네트워크 어댑터가 고장날 때, 또는 두 노드들간의 모든 네트워크가 고장날 때, 동일한 것이 발생한다. 관찰된 고장에 대한 정보는 TS로부터 GS로 그리고 GS로부터 CS, RM, CA로 각각 전달될 것이다.
도 6을 참조하면, 클러스터 와이드 리소스 관리 서비스의 기능을 도시하는 제1 노드(601)와 제2 노드(602)의 블록도가 도시되어 있다. 각 노드는 도 4를 참조하여 설명한 상이한 층들, 즉, 네트워크 어댑터(603, 604), OS 커널(605, 606), TS 층(607, 608), GS 층(609, 610), RMS 층(611, 612), CS 층(613, 614), 및 CA 층(615, 616)을 포함한다. 각 노드(601, 602)는 노드들 간 물리적 통신 링크를 제공하며, 각 네트워크 어댑터(621, 622)에 연결되어 있다.
각 노드의 리소스 관리 서비스(RMS)(611, 612)의 협력 동작은 제1 노드(601)와 제2 노드(602)의 RMS(611, 612)를 둘러싸는 라인(620)으로 도시된 클러스터 와이드 리소스 관리 서비스를 형성한다. 클러스터 와이드 RMS는 각각의 화살표로 표시된 것과 같이, 파일 시스템(625, 626), IP 어드레스(627, 628), 사용자 스페이스 프로세스(629, 630), 및 네트워크 어댑터(603, 604)와 같은 다수의 리소스를 관리, 즉, 시작, 정지, 모니터링한다. 실제 클러스터 상태 및 구성을 가지고 클러스터 와이드 리소스 관리를 조정하기 위하여, 클러스터 와이드 RMS는 각각의 화살표로 표시된 것과 같이, 클러스터 서비스로부터 클러스터 상태를 참조한다. 클러스터 와이드 리소스 관리를 위해 사용되는 추가적인 정보가 다수의 각 리소스에 할당된 리소스 속성(640-647)으로부터 유도된다. 이 속성은 리소스가 시작될 수 있는 환경, 리소스의 동작 상태 또는 이것이 핵심적인가 여부에 대한 정보를 제공할 수 있다.
도 7을 참조하면, 구성된 클러스터(702)의 동작을 도시하는 컴퓨터 시스템(700)의 블록도가 도시되어 있다. 컴퓨터 시스템(700)은 7 개의 노드(711-717)를 포함한다. 모든 노드는 통신 네트워크(720)를 통하여 서로 통신할 수 있다. 6 개의 노드(711-716)는 클러스터의 잠재적인 구성원인 것으로 정의되므로, 따라서, 이 노드들은 구성된 클러스터(702)를 형성한다. 구성된 클러스터를 형성하는 노드들(711-716) 중 하나, 즉, 노드(716)는 오프라인인데, 이는 이것이 폐지(shut down)되었거나, 아니면, 고장났기 때문이다. 이러한 상태 때문에, 노드(716)는 액티브 하위 클러스터에 참여할 수 없다. 나머지 노드들(711-715)은 온라인이고, 즉, 업(up) 상태이고 실행중이며, 이들은 두 개의 분리된 액티브 하위클러스터, 즉, 제1 액티브 하위 클러스터(724)와 제2 액티브 하위 클러스터(726)를 형성한다. 3 개의 노드, 즉, 노드(711-713)는 제1 액티브 하위 클러스터(724)를 형성하고, 2개의 노드, 즉, 노드(714, 715)는 제2 액티브 하위 클러스터(726)를 형성한다. 2개의 액티브 하위 클러스터의 분리는 기호(730)로 표시된 바와 같이, 노드들(713, 714)간의 완전한 네트워크 고장에 의해 초래된다. 일반적으로 말해서, 액티브 하위 클러스터는, 서로 통신할 수 있고 공통된 클러스터에 속한다는 것을 서로 알고 있도록 구성된 클러스터 내의 온라인 노드들의 집합에 의해 형성된다.
"N"은 구성된 클러스터의 사이즈를 표시하는데, 본 경우에는 N은 6이다. "k"는 관심의 대상이 되는 액티브 하위 클러스터의 사이즈를 표시한다. 도 7에서, 제1 액티브 하위 클러스터(724)는 k = 3의 사이즈를 가지고 있고, 제2 액티브 하위 클러스터(726)는 k = 2의 사이즈를 가지고 있다.
액티브 하위 클러스터에 대하여 얘기할 때, 다음 속성, "과반수(majority)", "타이(tie)", "소수(minority)"가 정의된다. 액티브 하위 클러스터는 2k > N이 참일 때, 과반수를 가지고 있고, 2k = N이 참일 때, 타이 상태에 있고, 2k > N이 참일 때, 소수를 가지고 있다. 도 7에서 제1 액티브 하위 클러스터(724)는 타이 상태에 있는 반면, 제2 액티브 하위 클러스터(726)는 소수를 가지고 있다.
클러스터를 안전하게 동작시키기 위하여, 본 발명은 여러 컴포넌트를 도입하는데, 이들은 CS, RMS, GS, 및/또는 TS의 일부로서 구현될 수 있다. 제공된 컴포넌트들은 노드 또는 네트워크 고장시에도 클러스터를 동작시킬 수 있는 안전한 방법을 구현한다.
도 8을 참조하면, 클러스터 컴포넌트들간의 정보 흐름을 도시하는 흐름도가 도시되어 있다. 제1 컴포넌트(800)는 구성 쿼럼을 결정한다. 구성 쿼럼을 사용하는 것은 노드 또는 네트워크 고장에도 불구하고, 클러스터 구성을 일관성 있게 업데이트할 수 있게 한다. 바람직하게 이 컴포넌트는 클러스터 서비스의 일부로서 구현된다.
구성 컴포넌트(802)는 구성 쿼럼(800)의 정보를 사용하여, 구성에 대한 업데이트가 허용될 수 있는지 여부를 결정한다. 반면에, 구성 쿼럼(800)은 구성 쿼럼을 결정하기 위하여, 하나 이상의 노드에 저장된 현재의 구성에 대한 정보를 필요로 한다.
구성 컴포넌트(802)의 정보에 기초하여, 다음 컴포넌트(804)는 동작 쿼럼을 생성한다. 동작 쿼럼은 핵심적인 리소스가 실행될 수 있는지 여부를 결정한다. 바람직하게는, 이러한 컴포넌트는 또한 클러스터 서비스의 일부로서 구현된다.
핵심적인 리소스 동작 컴포넌트(806)는 핵심적인 리소스를 결정하고, 동작 쿼럼에 따라 이들의 동작을 제한한다. 이 컴포넌트는 바람직하게는 리소스 관리 서비스의 일부로서 구현된다. 핵심적인 리소스 보호 컴포넌트(808)는 동작 쿼럼이 분실되는 경우에 대비하여, 손상으로부터 핵심적인 리소스를 보호하도록 구성된다. 이 컴포넌트는 바람직하게는 다음 장치, CS, RMS, GS, TS 중 하나의 일부로서 구현됨으로써, 각 다른 것들로부터의 정보가 요구될 수 있다.
마지막으로, 클러스터 병합 컴포넌트(810)는 동작 쿼럼과 핵심적인 리소스를 유지하는 클러스터를 병합하고 분할하는 방법을 구현하도록 제공된다. 이 컴포넌트는 바람직하게는 그룹 서비스의 일부이다. 단일 컴포넌트를 이렇게 간단히 살펴본 후에, 컴포넌트의 자세한 동작은 이하에서 설명한다.
클러스터 정의를 일관성있는 상태가 되게 하는 방식으로, 구성된 클러스터의 모든 노드들이 단일 액티브 클러스터 또는 하위 클러스터를 형성하는 것은 아닐지라도, 동작 쿼럼 컴포넌트는 유리하게는 클러스터 구성의 업데이트를 가능하게 한다. 클러스터 구성은 구성된 클러스터의 모든 노드에 저장될 필요가 있는 구성된 클러스터 (및 임의의 속성)에 대한 설명이다. 클러스터 구성은 파일에 저장될 수도 있는데, 이는 적어도 다음 정보, 구성된 클러스터에 속하는 모드 노드들의 리스트, 및 이러한 구성의 복사본의 가장 최근의 업데이트의 타임 스탬프를 포함한다.
목적을 달성하기 위하여, 구성 쿼럼 컴포넌트는 다음에서 더 자세히 설명하게 될 다음 동작, 즉, 초기 클러스터를 셋업하는 것(구성하는 것), 노드 또는 노드의 집합을 시작하는 것, 노드를 구성된 클러스터에 추가하는 것, 다른 구성이 업데이트하는 구성된 클러스터로부터 노드를 제거하는 것을 수행하도록 구성된다. 클러스터 구성의 일관성은 (쿼럼 오버라이딩(overriding) 옵션 없이) 상기 동작들만이 클러스터 구성을 초기화하고 수정하는데 사용되는 경우에만 보장될 수 있다.
본 발명에 따르면, 클러스터를 초기화하기 위하여 다음 방법이 수행된다. 첫째, N 노드(S1-SN)가 클러스터를 형성하도록 선택된다. 이 정보는 현재의 타임 스탬프를 가진 클러스터 구성 파일에 저장된다. 클러스터 구성 파일은 각 노드(S1-SN)에서 로컬로 이용가능하다. 바람직하게 클러스터 구성 파일은 모드 노드(S1-SN)로 전송되어 거기서 저장된다. 다른 대안으로, 클러스터 구성 파일은 모드 노드들이 액세스할 수 있는 분산/공유 파일 시스템에 저장된다. 후속적으로, 노드(S1-SN)의 과반수가 클러스터 구성 파일을 액세스할 수 있는지가 확인된다. 만일 그렇다면, 클러스터의 사용자나 관리자에게 클러스터 셋업이 성공적이었다고 알리는 메시지가 생성된다. 만일 아니라면, 구성을 복원하고, 사용자에게 클러스터 구성이 일관성이 없을 수 있다는 메시지가 생성되는 것이 시도된다.
본 발명에 의하면, 노드를 개시하기 위하여 다음 방법이 수행된다. 첫째, 최근의 클러스터 구성 파일이 검색된다. 만일 최근의 클러스터 구성이 발견된다면, 시작될 노드가 클러스터 구성에 정의된 클러스터의 구성원인지 여부가 결정된다. 만일 그렇다면, 노드가 최신 클러스터 구성을 가지고 클러스터의 노드로서 시작된다. 만일 최근의 클러스터 구성 파일이 발견되지 않거나, 시작될 노드가 최근의 클러스터 구성의 일부가 아니라면, 노드가 시작되지 않고, 각 에러 메시지가 생성된다.
최근의 클러스터 구성 파일을 검색하는 첫 번째 단계는 다음에서 설명하는 바와 같이 수행된다. 처음에는, 로컬로 액세스가능한 클러스터 구성 파일이 작업 구성-이는 당분간 최근의 클러스터 구성 파일로 간주됨-으로서 사용된다. 그 후, 작업 구성에 리스트된 모든 노드들을 접촉하여, 이들의 로컬 클러스터 정의 파일을 요청한다. 접촉한 노드들 중 하나로부터 수신된 클러스터 정의 파일이 작업 구성에 있는 것보다 더 최근의 버전인 경우에, 더 최근의 버전이 작업 구성으로 된다. 이러한 단계들은 작업 구성이 더 이상 변화하지 않을 때까지 반복된다. 후속적으로, 접촉한 노드들 중 얼마나 많은 것이 작업 구성과 동일한 (시간적으로 뒤진것(outdated) 일지도 모르는) 클러스터 정의 파일을 가지고 있는지 결정된다. 만일 작업 구성의 노드들 중 적어도 절반이 클러스터 정의를 가지고 있다면, 작업 정의는 최근의 클러스터 구성이 되고, 그렇지 않다면, 최근의 정의는 알려지지 않은 상태로 유지된다.
본 발명에 따르면, j개의 노드들의 집합을 액티브 하위 클러스터에 추가하기 위하여 다음 방법이 수행되는데, 여기서 N은 구성된 클러스터의 사이즈이고, k는 액티브 하위 클러스터의 사이즈이다. 액티브 하위 클러스터의 노드가 이 방법을 수행하는 것은 인식되어 있다.
j 개의 노드의 집합을 구성된 클러스터에 추가하는 요청이 발생되었을 때, 다음 조건이 만족되는지 여부가 결정된다. 즉, 2k <= N 또는 j > 2k-N이라면, 요청된 동작이 모순된 클러스터 구성을 초래할 것이라는 것을 사용자에게 알리는 에러 메시지가 생성된다. 다시 말해서, 액티브 하위 클러스터의 노드의 수가 구성된 클러스터의 노드 수의 절반밖에 안 되거나 그보다 작을 때, 또는 추가될 노드의 수가 액티브 하위 클러스터가 노드의 적어도 절반을 제공하지 않는 새로운 클러스터를 초래할 때, 새로운 노드를 추가하는 것은 허용되지 않는다.
선택적으로, 추가될 노드에 대한 연결은 이 시점에서 검사될 수 있고, 하나 이상의 노드에 도달할 수 없는 경우에, 추가될 노드의 집합이 연결성 검사의 결과에 따라 조정될 수 있다.
노드가 안전하게 클러스터에 추가될 수 있다는 것을 결정한 다음에, 새로운 구성이 트랜잭션으로(transactionally) 즉, 안전하고 자동적으로 함께 조정되는 식으로 액티브 하위 클러스터의 모든 노드로 전달된다. 추가적으로, 클러스터 구성의 변화에 대하여 OpQuorum에게 알려진다.
그 후, 새로운 클러스터 구성이, 추가된 새로운 노드를 포함하는 오프라인 노드(즉, 액티브 하위 클러스터에 있지 않은 노드)로 복사된다. 마침내, 성공적으로 추가된 노드들의 리스트가 반환된다.
본 발명에 따르면, 클러스터 구성으로부터 j 개의 노드의 집합을 제거하기 위하여, 다음 방법이 수행되는데, 여기서 N은 구성된 클러스터의 사이즈이고, k는 액티브 하위 클러스터의 사이즈이다. 액티브 하위 클러스터의 노드가 이 방법을 수행하고, 제거될 노드는 오프라인이어야 한다는 것은 인식되어 있다.
j 개의 노드의 집합을 구성된 클러스터로부터 제거하는 요청이 발생될 때, 다음 조건이 만족되는지 여부가 결정된다. 즉, 2k < N이면, 요청된 동작이 모순된 클러스터 구성을 초래할 것이라고 사용자에게 알리는 에러 메시지가 생성된다. 다시 말해서, 액티브 하위 클러스터의 노드의 수가 구성된 클러스터의 노드의 수의 절반보다 작다면, 노드의 제거는 허용되지 않는다.
선택적으로 제거될 노드에 대한 연결이 이 시점에서 검사되고, 하나 이상의 노드에 도달할 수 없는 경우에, 제거될 노드의 집합이 연결성 검사의 결과에 따라 조정될 수 있다.
요청된 노드가 안전하게 클러스터로부터 제거될 수 있다고 결정한 다음에, 제거될 모든 노드들로부터 구성이 제거된다. 이 단계가 성공적이지 않고, 2k = N이 참인 경우에, 요청된 동작이 모순된 클러스터 구성을 초래할 것이라고 사용자에게 알리는 에러 메시지가 반환된다.
만일 구성이 제거될 노드들로부터 제거될 수 있다면, 새로운 구성이 액티브 하위 클러스터의 모든 노드로 트랜잭션으로 전달된다. 추가적으로, 동작 쿼럼이 클러스터 구성의 변화에 대하여 알려진다.
그 후, 새로운 클러스터 구성이 클러스터에 남아 있는 오프 라인 노드로 복사된다. 마지막으로, 성공적으로 제거된 노드들의 리스트가 반환된다.
본 발명에 의하면, 다른 구성 업데이트를 시작하기 위하여 다음 방법이 수행되는데, 여기서 N은 구성된 클러스터의 사이즈이고, k는 액티브 하위 클러스터의 사이즈이다. 액티브 하위 클러스터의 노드가 이 방법을 수행한다는 것은 인식되어 있다.
또다른 구성 업데이트에 대한 요청이 발생될 때, 다음 조건이 만족되는지 여부가 검사된다. 즉, 2k <= N이면, 요청된 동작이 모순된 클러스터 구성을 초래할 것이라는 것을 사용자에게 알리는 에러 메시지가 발생된다. 다시 말해서, 액티브 하위 클러스터의 노드의 수가 구성된 클러스터의 노드의 수의 절반보다 작을 때, 다른 구성 변경을 시작하는 것은 허용되지 않는다.
구성에 대하여 요청된 업데이트가 안전하게 시작될 수 있다는 것을 결정한 이후에, 새로운 클러스터 구성이, 액티브 하위 클러스터의 모든 노드들로 트랜잭션으로 전달된다. 그 후, 새로운 클러스터 구성이 오프라인 노드로 복사된다. 마지막으로, 클러스터 구성에 대한 요청된 변경이 성공적이었던 노드들의 리스트가 반환된다.
본 발명에 따르면, 노드를 제거하기 위한 쿼럼이 덧쓰기(overwrite)될 수 있고, 노드를 시작하기 위한 쿼럼이 덧쓰기될 수 있으며, 클러스터의 관리자가 새로운 클러스터 정의를 제공할 수 있다. 구성 쿼럼을 덧쓰기하는 것은 클러스터의 적어도 절반이 고장났거나 도달할 수 없는 고장 상태를 해결하기 위하여 필요할 수 있다. 쿼럼을 오버라이드(override)하는 것은 클러스터 정의가 일관성 있을 것이라는 보장을 하지 못하는 결과를 초래할 수 있다.
이제 동작 쿼럼(OpQuorum) 컴포넌트의 동작에 대하여 자세히 설명하겠다. 일반적으로, 다음 정보, 즉, 구성된 클러스터의 사이즈 N, 노드가 있는 액티브 하위 클러스터의 사이즈 k, 및 핵심적인 리소스가 노드에서 실행되고 있는지 여부가 각 온라인 노드로부터 액세스가능하다. 따라서, 동작 쿼럼 컴포넌트는 구성된 클러스터의 사이즈 N의 변화, 노드가 있는 액티브 하위 클러스터의 사이즈 k의 변화, 및 핵심적인 리소스에 대한 변화에 대한 정보를 수신하도록 구성된다. 바람직하게는 그룹 서비스가 액티브 하위 클러스터의 노드들에 대한 정보를 제공하는 한편, 리소스 관리 서비스가 핵심적인 리소스에 대한 정보를 제공한다.
본 발명에 따르면, 동작 쿼럼 컴포넌트가 다음 서비스, 즉, (동일한 사이즈의 클러스터 구성에 대하여서만 필요한) 타이브레이커, 바람직하게 그룹 서비스에 의해 제공되는 트랜잭션 지원, 및 그룹 리더쉽을 액세스할 수 있다. 그룹 리더쉽은 하위 클러스터 구성의 변화가 있을 때 재평가되는 그룹 리더를 가진 각 액티브 하위 클러스터를 특징으로 한다. 이는 바람직하게는 그룹 서비스에 의해 제공된다.
또한, 동작 쿼럼 컴포넌트는 노드 상에 관찰되는 동작 쿼럼의 상태를 제공한다. 상태는 다음 값, 즉, in_quorum, quorum_pending, no_quorum 중 하나일 수 있다.
본 발명에 따르면, 동작 쿼럼 컴포넌트가 다음 방법에 의해 상태를 결정하는데, 이 상태는 노드를 온라인 상태로 만든 직후에 결정되고, 구성된 클러스터의 모든 변화, 노드가 있는 액티브 하위 클러스터의 모든 변화에 대하여 재평가된다. 초기에 상태는 no_quorum이다. 처음에, N에 대한 값, 즉, 구성된 클러스터의 사이즈, 및 k, 즉, 액티브 하위 클러스터의 사이즈가 검색된다. 그 후 조건 2k < N, 2k = N, 또는 2k > N중 어느 것이 참인지 결정된다.
조건 2k < N이 참인 경우, 노드가 타이브레이커가 보유되는지 여부가 결정되고, 만일 그렇다면, 타이브레이커가 해제된다. 또한, 노드가 핵심적인 리소스 온라인을 가지고 있다면, 상태가 no_quorum으로 설정되고, 리소스 보호 기능이 트리거된다.
조건 2k = N이 참인 경우에, OpQuorum 상태가 quorum_pending으로 설정되고, 타이브레이커의 보유가 요청된다. 만일 타이브레이커 보유가 성공적이라면, OpQuorum 상태가 in_quorum으로 변경되고, 그렇지 않고 보유가 결정되지 않았다면, N 및 k의 값을 얻는 단계로 진행하거나, 또는 이 방법이 액티브 하위 클러스터의 사이즈 또는 클러스터 구성의 변화에 의해 비동기적으로 시작된다면, 리턴된다.
만일 타이브레이커 보유가 성공적이지 않다면, OpQuorum 상태가 no_quorum으로 설정되고, 노드가 핵심적인 리소스 온라인을 가지고 있다면, 리소스 보호 기능이 트리거된다. 노드가 핵심적인 리소스 액티브(또는 온라인)로 가지고 있지 않다면, OpQuorum 상태는 quorum_pending으로 설정되고, 노드가 타이브레이커를 주기적으로 보유하려고 노력한다.
조건 2k > N이 참인 경우에, 노드가 타이브레이커가 보유되는지 여부가 결정되고, 만일 그렇다면, 타이브레이커가 해제된다. 또한, OpQuorum 상태가 in_quorum으로 설정된다.
(클러스터에서 통합되는 결과로서) OpQuorum을 계산하는 방법이 노드의 시작 직후 및 클러스터 구성 또는 노드가 일부분인 현재의 하위 클러스터 중 어느 하나의 변화가 발생할 때마다 호출된다. 본 발명에 의하면, 타이브레이커가 다음 기능, 즉, 초기화, 잠금(locking), 잠금 해제(unlocking), 및 하트 비팅(heart-beating)을 제공하도록 구성된다.
타이브레이크 또는 프로브 타이브레이커 기능을 초기화하는 것은 노드에서 타이브레이커를 초기화할 수 있게 한다. 타이브레이커를 잠그는 것은 기껏해야 하나의 노드가 타이브레이커를 성공적으로 잠글(유지할) 수 있는 기능을 제공한다. 타이브레이커가 지속적인(persistent) 경우, 즉, 타이브레이커가 상태로서 잠겨져 있거나 잠겨져 있지 않은 사실을 유지하는 경우에, 잠겨진 타이브레이커가 잠금을 소유하지 않는 노드에 의해 잠금 해제될 수 없다. 잠금 해제 동작은 타이브레이커를 성공적으로 잠근 마지막 노드만이 성공적으로 타이브레이커를 잠금 해제(해제)할 수 있는 기능을 제공한다. 소프트웨어 인터페이스 또는 STONITH 기반의 타이브레이커와 같은 지속적이지 않은 타이브레이커의 경우에, 이러한 동작은 NOP(nooperation)으로서 즉, empty 함수로서 구현될 수 있다.
하트비트 타이브레이커 함수는 반복적으로 TB를 잠글 수 있게 한다. 이것은 타이브레이커의 지속성(persistence)이 보장될 수 없는 경우에 유리하게 구현된다. 예로서 특정한 디스크를 잠그는 잠금은 버스가 리셋되는 경우에 실패할 수 있다.
타이브레이커의 초기화의 구현, 타이브레이커의 잠금 및 잠금 해제는 사용되는 타이브레이커의 종류에 따라 다를 수 있다. 바람직하게는 타이브레이커는 각 인스턴스를 가진 객체 지향의 클래스로서 구현된다.
본 발명에 따르면, 타이브레이커의 보유가 다음 방법에 의해 수행된다. 첫째, 타이브레이커가 이미 초기화되었는지 여부가 결정된다. 만일 그렇다면, 후속적인 조치가 수행될 수 있다. 만일 그렇지 않다면, 초기화 함수가 실행된다. 노드가 quorum_pending을 가지고 있고, 타이브레이커를 위해 경쟁하는 동안, 구성된 클러스터 또는 액티브 하위 클러스터의 사이즈가 변화한 경우에, 타이브레이커가 결정되어 있지 않다는 것을 알리는 메시지가 반환된다.
타이브레이커가 초기화되고, 타이브레이커를 보유하는 것을 요청하는 노드가 액티브 하위 클러스터의 그룹 리더라면,(타이브레이커를 이전에 해제하는데 실패한 것 때문에) 타이브레이커가 이 노드에 의해 보유되는지 여부가 결정된다. 만일 그렇다면, 타이브레이커를 해제하려고 하는 잠재적인 쓰레드를 중지시킨다. 만일 아니라면, 타이브레이커를 잠근다. 어떤 경우라도 결과는 액티브 하위 클러스터의 모든 노드로 브로드캐스팅된다. 타이브레이커가 지속적인 유형이 아닌 경우에, 하트비팅이 개시된다.
만일 타이브레이커가 초기화되고, 타이브레이커를 보유하는 것을 요청하는 노드가 액티브 하위 클러스터의 그룹 리더가 아니라면, 그룹 리더의 결과를 기다린다. 노드가 quorum_pending을 가지고 있고, 타이브레이커를 위해 경쟁하는 동안, 구성된 클러스터 또는 액티브 하위 클러스터의 사이즈가 변화한 경우에, 타이브레이커가 결정되어 있지 않다는 것을 알리는 메시지가 반환되고, 그렇지 않다면, 그룹 리더의 결과가 반환된다.
본 발명에 의하면, 타이브레이커를 해제하기 위하여 본 방법이 수행된다. 만일 타이브레이커가 지속적인 타입이 아니면, 타이브레이커 하트비팅을 중지시킨다. 그 후 각 함수를 개시함으로써, 타이브레이커를 잠금 해제한다. 만일 타이브레이커의 잠금 해제가 실패하였다면, 노드는 나머지 실행 쓰레드로부터 비동기적으로 타이브레이커를 잠금 해제하려고 반복적으로 시도할 것이다. 이 결과는 반환된다.
본 발명에 의하면, 지속적이지 않은 타이브레이커를 하트비팅하는 것이 다음 방법에 정의된 대로 수행된다. 먼저, 타이브레이커가 잠겨진 후, 소정의 시간 동안 기다린 후에 타이브레이커의 잠금이 반복된다. 타이브레이커가 잠금 상태로 유지되어야 하는 한, 이러한 단계들이 수행된다.
위에서 본 발명에 따라 노드의 환경, 컴포넌트, 상이한 메카니즘, 상태가 설명되었다. 특정한 노드의 동작 쿼럼 상태의 변화에 대하여 도 9를 참조하여 요약한다. 단일 노드의 상이한 동작 상태를 도시하는 상태도가 도시되어 있다. 상태도는 점선(902, 903)으로 분리된 세 부분으로 수평으로 분할된다. 환경에 따라,즉, 노드가 과반수 또는 소수를 가지거나 타이 상태에 있는 액티브 하위 클러스터의 부분인지에 대한 사실에 따라, (라인 902 위의) 상부, (라인 903 아래의) 하부, 또는 (라인 902와 라인 903 사이의) 중간부가 각각 어드레싱될 필요가 있다. 각 환경에서 타이브레이커는 상태(블록(905-910))에 의해 도시된 대로 잠금 또는 잠금 해제될 수 있다. 노드가 타이 상태의 액티브 하위 클러스터의 일부인 경우에, 다른 상태, 즉, 쿼럼 펜딩(pending) 상태가 있다(블록(915)).
점선으로 된 화살표(921-930)는 상황, 즉 과반수, 소수, 또는 타이 상태가 각 액티브 하위 클러스터의 사이즈 또는 정의된 클러스터의 사이즈의 변화 때문에 변화할 때, 상태의 변화를 나타낸다.
실선 화살표(935-938)는 각 소스 상태가 액티브일 때마다 개시되는 상태 전이를 도시한다. 예를 들어, 노드가 타이브레이커를 잠금이 되게 했고 그것이 과반수를 가진 액티브 하위 클러스터의 일부라면(블록(905)), 노드는 즉각 타이브레이커를 해제한다(전이(935)). 일단 타이브레이커가 잠금 해제되면, 목표 상태(906)에 도달한다. 마찬가지로, 전이(938)로 표시한 바와 같이, 상태(909)가 상태(910)로 변한다. 노드가 타이브레이커를 잠글 수 있었는지 여부에 대한 사실에 따라 쿼럼 펜딩 상태(915)로부터 (전이(936)를 통하여) 상태(907) 또는 (전이(937)를 통하여) 상태(908)에 도달한다.
핵심적인 리소스의 이슈로 돌아간다. 일반적으로 리소스는 리소스 관리자(RM)에 의해 관리되는데, 리소스 관리자는 속성, 예를 들어, 리소스가 시작될 수 있는 위치, 동작 상태(온라인 또는 오프라인), 및 리소스를 시작/중지/모니터링하는 방법을 각 리소스와 관련시킨다.
본 발명에 따르면, 부울 속성 'is_critical'이 각 리소스에 관련됨으로써, 리소스가 핵심적일 때는 속성이 Ture(참)이고, 리소스가 핵심적이지 않을 때는 속성이 False(거짓)이다. 만일 하나 이상의 독립 노드(여기서 독립이란 말은 노드가 서로 통신할 수 없다는 의미임)가 해를 전혀 끼치지 않고 리소스를 온라인으로 유지할 수 있다면, 속성 'is_critical'은 거짓으로 설정된다. 다른 모든 경우에, 속성 'is_critical'은 참으로 설정되어야 한다.
바람직하게는 속성은 RMS 컴포넌트에서 리소스에 따라 특정 값, 즉 참(True) 또는 거짓(False)으로 미리 설정되어 있다. 다른 대안으로 리소스 클래스당 또는 리소스 별로 구성가능하다. is_critical = True를 디폴트로 사용하는 것이 안전하다는 것이 인식되어 있다. 또한, 온라인 노드가 핵심적인 리소스 없이 실행 가능하여야 한다. 바람직하게는 각 노드에서 RMS 컴포넌트 또는 CS 컴포넌트가 속성 is_critical이 True로 설정된 노드 상에서 실행되는 온라인 리소스의 카운터를 유지한다. 다음 동작 즉, 리소스를 시작, 리소스를 중지, 속성 is_critical을 변경하는 동작이 is_critical 속성에 의해 영향을 받고, 리소스 고장 검출이 된다.
본 발명에 따르면 온라인인 각 노드에서 온라인 핵심적 리소스 카운트(online critical resource count, OCRC)가 유지된다. OCRC는, 온라인이고 is_critical 속성이 True로 설정되어 있고 각 노드에서 실행중인 리소스의 수를 카운트한다. 바람직하게는 OCRC는 클러스터 서비스(cluster service, CS)의 일부로서 구현된다. 클러스터 서비스는 모든 리소스 관리 애플리케이션, 특히 리소스 관리 서비스(RMS)에 응답하여 OCRC를 증가시키고 감소시키도록 구성된다. 또한, OCRC는 다른 임의의 클러스터 소프트웨어(컴포넌트)를 이용할 수 있도록 된다.
OCRC는 다음 방법에 따라 수행된다. OCRC가 0으로 떨어질 때마다, 리소스 보호가 그 노드에 대하여 디스에이블되고, OCRC가 양수(>=1)로 변화할 때마다, 리소스 보호가 그 노드에 대하여 인에이블된다. 이것은 핵심적인 리소스가 특정 노드에서 실행될 때마다 유리하게 리소스 보호를 보장한다.
본 발명에 따르면, 리소스는 다음 조건이 참으로 유지될 때마다 노드 S 상에서 시작된다. 만일 리소스가 속성 is_critical이 True로 설정되어 있다면, OpQuorum이 상태 'quorum_pending'에 도달할 때까지 기다린다. 만일 OpQuorum이 'no_quorum'으로 설정된다면, 사용자에게 실패(이유: no_quorum)를 알리는 에러 메시지가 반환된다. OCRC가 노드 S 상에서 증가될 때마다(전술한 것처럼 이것은 트리거할 수 있음), 리소스 시작 메서드가 노드 S 상에서 호출된다.
마찬가지로. 리소스 정지 메서드가 노드 S에서 호출될 때, 리소스가 노드 S에서 정지된다. 만일 리소스가 속성 is_critical을 참(True)으로 설정해놓았다면, OCRC가 S에서 감소한다(이것은 전술한 바와 같이, 리소스 보호의 디스에이블을 트리거할 수 있다).
리소스 고장이 노드에서 검출될 때, 즉, 리소스 모니터링이 노드 S에서 리소스의 고장을 검출한 후, 리소스가 속성 is_critical을 참(True)으로 설정한다면, OCRC가 감소된다. 이것은 전술한 바와 같이, 작동을 트리거할 수 있다.
본 발명에 따르면, 초기화시 그리고 리소스 R에 대한 is_critical의 값이 변할 때마다 change-attribute-is_critical 메서드가 호출된다. 만일 (새로운) 값이 거짓이면, R이 온라인인 액티브 서브클러스터의 모든 노드에서 OCRC가 그 각 노드에서 온라인인 R의 인스턴스의 배수만큼 감소된다. 만일 (새로운) 값이 참이면, 즉, R이 온라인인 모든 노드가 OpQuorum in_quorum을 가지고 있다면, OCRC가 그 각 노드에서 온라인인 R의 인스턴스의 배수만큼 모든 노드에서 증가되고, 그렇지 않다면, 고장 메시지가 반환된다(이유는 in_quorum에 없음).
명시적인 RMS 층을 사용하지 않는 클러스터 소프트웨어는 RMS와 동일한 방식으로 리소스 시작/정지/고장 검출을 이용함으로써 관리하는 (핵심적인) 리소스를 보호할 수 있다. 관리되는 리소스가 핵심적인지 아닌지에 대한 지식은 소프트웨어에서 하드코딩될 수 있다.
유리하게는 노드가 속한 액티브 하위 클러스터가 no_quorum과 동일한 OpQuorum을 가지는 경우에 해를 미치는 것으로부터, 리소스 보호가 노드에서 온라인인 핵심적인 리소스를 보호한다. 이 경우 리소스 보호 메서드가 처리된다. 노드가 "중단 상태(hang)"인 경우, 즉, 응답하지 않는 경우에 또는 클러스터 기반 구조가 예상 외의 반응을 하는 경우에(misbehave), 이하에서 설명하는 바와 같이, 시스템 자가 감시가 사용될 수 있다.
다음 동작은 리소스 보호 메카니즘을 구현하는데 필요하다. 먼저 리소스 보호 트리거가 있다. 리소스 보호 트리거 동작은 다음 함수 중의 하나일 수 있다.
시스템을 부적절하게(ungracefully) 정지시킴
시스템을 적절하게(gracefully) 정지시킴
(적절한(graceful) 정지 후에) 시스템을 재부팅함
(부적절한(ungraceful) 정지 후에) 시스템을 재부팅함
아무 것도 하지 않음(즉, 리소스 보호를 다른 컴포넌트에 맡김)
위 함수 중 어느 것이 실제로 리소스 보호를 트리거하는데 사용되느냐 하는 것은 관리자에 의해 구성가능하다. 바람직하게 나머지 메서드가 테스트 목적으로 사용될 수 있는 반면, "부적절하게 정지를 트리거함" 또는 "부적절한 정지 후에 시스템을 재부팅함"은 생산 시스템에서 사용되어야 한다. 둘째, DMS를 활성화시킴으로써 리소스 보호를 인에이블시키는 동작이 있다. 셋째, DMS를 비활성화시킴으로써 리소스 보호를 디스에이블시키는 동작이 있다.
도 10을 참조하면, 시스템 자가 감시의 의존성을 도시하는 흐름도가 있다. 본 발명에 의하면, 각 노드에서 하나의 데드맨 스위치(DMS)(1000)가 그 노드의 전체 클러스터 기반 구조를 모니터링한다. 클러스터 기반 구조 레벨 1(블록(1002))가 DMS(1000)를 직접 갱신한다. 액티브 DMS는 정기적으로 타이머 갱신을 요구하는데, 그렇지 않으면, 커널 동작을 정지시킨다. 제시된 개념에 의하면, 모니터링된 결과는 높은 클러스터 기반 구조 레벨로부터 낮은 클러스터 기반 구조 레벨로 전달된다. 다시 말해서, 클러스터 기반 구조 레벨 1(블록(1002))은 클러스터 기반 구조 레벨 2(블록(1004))의 상태(health)를 모니터링하고, 클러스터 기반 구조 레벨 2(블록(1004))는 클러스터 기반 구조 레벨 3(블록(1006))의 상태(health)를 모니터링한다. 일반적으로 클러스터 기반 구조 레벨 1은 토폴로지 서비스(TS)가 될 것이고, 레벨 2는 일반적으로 그룹 서비스(GS)를 제공할 것이고, 레벨 3은 클러스터 서비스(CS)를 제공할 것이다. 이러한 개념이 세 개의 클러스터 기반 구조 레벨에 한정되지 않는다는 것은 인식되어 있다. 이러한 스택 모니터링 방식은 하나의 단일 애플리케이션(클라이언트)을 모니터링할 수 있게만 하는 DMS 구현을 이용할 수 있게 해준다. 따라서, 임의의 레벨로부터의 결함 있는(defective) 또는 중단 상태의(hanging) 클러스터 기반 구조 컴포넌트는 모니터링 신호의 전달을 금지시킬 것이고, 따라서, 그에 응답하여 커널 동작을 정지시키도록 DMS를 트리거할 것이다.
토폴로지 서비스 컴포넌트(TS)는 DMS를 직접 액세스하는 층이다. 토폴로지 서비스 컴포넌트에서의 차단(blockage) 또는 고장은 커널 타이머가 트리거되고 노드가 정지되는 것을 초래한다. 그룹 서비스 컴포넌트(GS)는 DMS를 직접 액세스하지는 않지만, 대신 그 자신이 토폴로지 서비스 컴포넌트에 의해 모니터링되도록 설정한다. 그룹 서비스 컴포넌트는 이미 토폴로지 서비스 컴포넌트의 클라이언트 프로그램이므로, 주어진 토폴로지 서비스 컴포넌트 클라이언트 함수를 호출함으로써 토폴로지 서비스 컴포넌트에 의해 모니터링된다. 만일 그룹 서비스 컴포넌트가 알맞은 시점에 클라이언트 함수를 호출하는데 실패한다면, 내부 타이머가 토폴로지 서비스 컴포넌트에서 시간이 종료되도록 허용된다. 토폴로지 서비스 컴포넌트에 의해 취해지는 조치는 특정 리소스 보호 메서드에 기초하여 노드에서 클러스터의 실행을 종료시킨다. 토폴로지 서비스 컴포넌트에 의해 그룹 서비스 컴포넌트에 전달된 노드 이벤트를 처리하는 동안 그룹 서비스 컴포넌트는 단지 심각한 실시간 요구 조건을 가지고 있기 때문에, 그룹 서비스 컴포넌트는 토폴로지 서비스 컴포넌트로부터 노드 이벤트를 얻은 후에 제때에 새로운 함수를 호출하도록 요구될 뿐이다.
토폴로지 서비스 컴포넌트의 내부 타이머는 이렇게 해서 토포롤지 서비스 컴포넌트가 임의의 노드 도달 이벤트를 그룹 서비스 컴포넌트로 전송하기 직전에 설정된다. 후자는 노드 도달 이벤트가 그 처리를 완료하자마자 새로운 클라이언트 함수를 호출함으로써 이벤트에 반응할 필요가 있다.
클러스터 서비스 컴포넌트는 그룹 서비스 컴포넌트의 클라이언트이고, 그룹 서비스 컴포넌트는 클러스터 서비스 컴포넌트 피어 데몬(peer daemons)이 데이터를 교환하고 복구 조치를 조정할 수 있도록 그룹 조정 지원을 제공한다. 그룹 서비스 컴포넌트는 또한 차단(blockage)/종료를 위해 클러스터 서비스 컴포넌트를 모니터링하는데 사용된다. 종료는 그룹 서비스 컴포넌트와 그 클라이언트 프로그램간의 통신에 사용되는 유닉스(Unix)-도메인 소켓의 모니터링을 통하여 검출된다. 차단(blockage)은 클러스터 서비스 컴포넌트의 그룹 서비스 컴포넌트 클라이언트 라이브러리 호출 콜백 함수를 가진 "대응 검사(responsiveness check)" 메카니즘에 의해 검출된다. 콜 백 함수가 제 시간에 리턴되지 못하는 것은 그룹 서비스 컴포넌트 데몬이 클러스터 서비스 컴포넌트에서 차단(blockage)을 검출하는 결과를 낳는다. 양자의 경우, 그룹 서비스 컴포넌트는 exit에 의해 반응하는데, 이것은 토폴로지 서비스 컴포넌트가 리소스 보호 메서드를 호출하는 결과를 낳는다.
전술한 모니터링 체인은 바람직하게는 만일 임의의 기초적인 하위 시스템이 차단되거나 고장날 때, 리소스 보호 메서드가 적용되는 것을 보장하는데, 이는 핵심적인 리소스가 해제되는 결과를 낳는다.
이제 본 발명에 따른 클러스터의 동작에 대하여 도 11a 내지 도 11e를 참조하여 설명한다. 모든 도면은 5개의 노드(1105-1109)와 네트워크(1110)를 포함하는 동일하게 구성된 클러스터(1102)를 도시한다. 그러나, 액티브 하위 클러스터와 이들의 동작 모드는 도면에 따라 다를 수 있다.
도 11a를 참조하면, 네트워크(1110)가 노드(1107)와 노드(1108) 간에 분리되어 있기 때문에 클러스터 분할 상황을 가진 구성된 클러스터(1102)의 블록도가 도시되어 있다. 네트워크 분할은 노드(1105-1107)를 포함하는 제1 액티브 하위 클러스터(1116)와 노드(1118)를 포함하는 제2 액티브 하위 클러스터(1118)를 생성한다.
도 11b를 참조하면, 노드(1107)와 노드(1108) 간에 연결이 재설정된 구성 클러스터(1102)의 블록도가 있다. 그러나, 여전히 두 개의 하위 클러스터(1116, 1118)가 존재한다. 본 발명에 의하면, 2개의 액티브 하위 클러스터 중 첫 번째 것이 병합이 시작되기 전에 해제된다(dissolved). 두 개의 액티브 하위 클러스터 중 어느 것이 해제되느냐의 결정은 다음 규칙의 집합에 따라 결정된다.
● 타이브레이커를 가진 타이 상태이거나 과반수임으로 해서 하나의 하위 클러스터만이 OpQuorum을 가지고 있다면, 쿼럼을 가지지 않은 하위 클러스터가 해제된다.
● 하위 클러스터 정의가 다르다면, 더 오래된 클러스터 정의를 가진 하위 클러스터가 해제된다.
● 하나의 하위 클러스터만이 핵심적인 리소스를 실행시킨다면, 핵심적인 리소스를 실행시키지 않는 하위 클러스터가 해제된다.
● 만일 하위 클러스터의 사이즈가 다르다면, 더 작은 하위 클러스터가 해제된다.
그렇지 않으면,
● 무작위의(즉, 가장 작은 온라인 노드 번호를 가진 것) 하위 클러스터가 해제된다.
위 규칙은 선 순위부터 후 순위로 우선 순위에 의해 정렬된다.
도 11c를 보면 알 수 있는 바와 같이, 제2 액티브 하위 클러스터가 해제되기로 선택되었다. 병합 상태 1, 즉, 하나의 하위 클러스터를 해제하는 상태에 있는 클러스터의 블록도가 도시되어 있다. 이제 최초 제1 액티브 하위 클러스터(1116)와, 노드(1108, 1109)를 각각 포함하는 두 개의 새로운 액티브 하위 클러스터(1120, 1122)가 있다.
이제 도 11d를 참조하면, 병합 상태 2, 즉, 제1 노드와 결합 상태에 있는 클러스터의 블록도가 있다. 해제된 클러스터의 노드는, 해제되지 않은 액티브 하위 클러스터의 클러스터 구성을 채용하는 해제되지 않는 클러스터와 하나씩 결합한다. 이제 제1 액티브 하위 클러스터(1116)는 노드(1105-1108)를 포함한다.
도 11e를 참조하면, 병합 상태 3, 즉, 제2 노드가 제1 액티브 하위 클러스터(1116)와 결합하는 액티브 하위 클러스터(1122)를 구성하는 상태에 있는 클러스터의 블록도가 있다. 마지막으로, 제1 액티브 하위 클러스터(1116)가 노드(1105-1109)를 포함한다.
도 12a 내지 도 12e를 참조하면, 구성 쿼럼의 예를 도시하는 블록도가 있다. 도 12a는 4개의 노드(1201-1204)가 네트워크(1206)를 통해 연결된 상황을 도시한다. 시간(t0)에서 네트워크는 순서대로 있고, 노드(1201,1202)는 업(up) 상태이고, 노드(1203, 1204)는 다운(down) 상태이다. 정의 Ct0를 가진 클러스터가 구성되었다. Ct0는 노드(1201, 1202)를 포함한다. 따라서, 노드(1201, 1202)는 클러스터(1208)를 구축한다.
시간(t1)에서 노드(1203, 1204)는 클러스터에 추가된다. 시간(t2)에서 노드 추가는 클러스터 정의가 노드(1201, 1202)에서 노드(1201-1204)를 포함하는 Ct2로 갱신된 시점에 도달하였다. 시간(t3)에서 네트워크 고장은 노드(1204)를 클러스터의 나머지와 분리시킨다.
시간(t4)에서의 상황이 또한 도 12a에 도시되어 있다. 일단 노드 추가 동작이 끝났으면, 노드(1201-1203)가 업 상태이고 클러스터를 형성한다. 노드 각각(1201-1203)은 클러스터 정의 Ct2를 가지고 있다. 노드(S4)는 다운 상태이고, 클러스터 정의를 가지고 있지 않다.
도 12b는 4개의 다른 시점(t0, t2, t5, t6)에서의 두 개의 노드(1211, 1212)를 도시한다. 시점(t0)에서 각 구성 Ct0이 단일 노드(1211)를 포함하여 클러스터(1215)를 형성한다. 시점(t1)에서 노드(1212)가 클러스터에 추가되고, 이에 의해 노드(1211, 1212)를 포함하는 새로운 클러스터 정의 Ct1이 도 12b, t2에 도시된 각 노드에 존재한다.
후에 시점(t3)에서 노드(1211)가 정지된다. 그 후, 시점(t4)에서 네트워크 고장이 네트워크(1218)에서 일어난다. 이제 두 노드(1211, 1212)가 다운 상태이다. 그러나, 도 12b, t5에 도시된 것처럼 두 노드의 클러스터 구성이 최신이다.시점(t6)에서 노드(1212)가 시작된다.
도 12c는 두 개의 다른 시점(t4, t6)에서 6개의 노드(1231-1236)를 도시한다. 모든 노드가 노드(1234, 1235)간 네트워크 고장을 겪는 네트워크(1238)에 연결되어 있다. 노드(1231)는 구성 Ct0를 가지고 있는데, 이는 이전의 시점(t1)에서 최신이었고, 노드(1233-1235)는 구성 Ct2를 가지고 있는데, 이는 시점(t2)에서 최신이었고, 노드(1236)는 구성 Ct1을 가지고 있는데, 이는 시점(t1)에서 최신이었다.
구성 Ct0는 노드(1231, 1233-1236)를 포함하고, 구성 Ct1은 노드(1231-1236)를 포함하고, 실제의, 즉, 가장 최근의 구성 Ct2는 노드(1231-1235)를 포함한다.
시점(t5)에서 클러스터는 도 12c, t6으로 도시된 바와 같이, 올바른 구성을 가지는 모든 도달가능한 노드(1231-1234)로 시작한다.
도 12d는 어느 이벤트가 상이한 노드에서 상이한 클러스터 정의를 초래하는지 도시한다. 4개의 노드(1241-1244)가 네트워크(1245)를 통하여 연결되어 있다. 시간(t0)에서 노드(1241-1244)로 구성되어 있는 클러스터가 정의되어 있다. 이에 따른 클러스터 정의 Ct0가 노드(1241-1244)에 저장되어 있다. 노드(1241-1243)가 업 상태이고 노드(1244)가 다운 상태이다. 네트워크 고장은 노드(1244)를 클러스터의 나머지 노드들과 분리시킨다. 시간 t1에서 노드(1241)가 정지된다. 시간 t2에서 노드(1241)가 성공적으로 클러스터로부터 제거된다. 이는 시간 t3에서 다음 상황을 초래한다: 노드(1241)는 클러스터 정의를 가지고 있지 않다. 노드(1242, 1243)는 노드(1242-1244)로 구성되는 새로운 클러스터 정의 Ct2를 가지고 있다.노드(1244)는 여전히 클러스터 정의 Ct0를 가지고 있다. 시간 t4에서 전체 클러스터는 정지된다. 시간 t5에서 네트워크는 수리되고, 시간 t6에서 모든 노드가 다운 상태이고 노드(1241)가 정의를 가지고 있지 않으며, 노드(1242, 1243)가 정의 Ct2를 가지고 있고, 노드(1244)가 정의 Ct0를 가지고 있다.
t6 이후에 노드가 연결되어 있다면, 다음의 하위 클러스터가 시작될 수 있다.
{1242, 1243} 또는
{1242, 1244} 또는
{1243, 1244} 또는
{1242, 1243, 1244}
모든 시작된 노드는 구성 Ct2를 사용할 것이다 노드(1241)는 결코 다시 시작되지 않을 것이다.
도 12e는 도 12d로부터 예를 확장한 것이다. 시간 t7에 노드(1241, 1242)를 노드(1243, 1244)로부터 분리하는 네트워크 에러가 발생한다. 시간 t8에서 클러스터가 시작된다. 이는 시간 t9에 대하여 도시된 상황을 초래한다: 노드(1243, 1244)가 업 상태이다. 노드(1243, 1244) 모두 정의 Ct2를 가지고 있다. 노드(1241, 1242)가 다운 상태이다. 노드(1242)는 정의 Ct2를 가지고 있다. 노드(1241)는 정의를 가지고 있지 않다.
도 13a 내지 도 13c를 참조하면, 핵심적인 리소스를 가진 2 노드 클러스터에 대한 동작 쿼럼의 예가 도시되어 있다. 2 노드 클러스터(1300)는 네트워크(1305)에 의해 연결된 두 개의 노드(1301, 1302)로 구성된다. 노드(1301, 1302)는 타이브레이커(1307)(!)를 액세스하고 핵심적인 리소스 CR를 액세스한다.
도 13a는 2개의 노드(1301, 1302)가 다운 상태이고, 이들 노드간의 네트워크가 고장난 초기 상황을 도시한다. 도 13b는 클러스터를 시작한 이후의 상황을 도시한다. 1301은 온라인이고(타이 상태), 이것은 타이브레이커가 보유되도록 하고, CR를 액세스할 수 있다. 따라서, 노드(1301)로 구성된 하위 클러스터는 단지 동작 쿼럼 상태 in_quorum을 가진다. 노드(1302)는 다운 상태이다.
도 13c는 노드(1302)가 클러스터 정의를 가지고 있다고 가정할 때, 노드(1302)를 시작한 이후에 상황을 도시한다: 노드(1302)는 온라인이지만, 타이브레이커를 보유하는데 실패하였다. 노드(1302)는 CR를 액세스할 수 없다. 노드 (1302)로 구성되는 하위 클러스터는 단지 동작 쿼럼 상태 no_quorum을 가지고 있다.
도 14a 내지 도 14c를 참조하면, 핵심적인 리소스를 가진 5 노드 클러스터에 대한 동작 쿼럼의 예를 도시하는 블록도가 있다. 노드(1401-1405)는 네트워크에 의해 연결되어 있다. 노드(1401-1405)는 구성된 클러스터를 형성한다. 노드(1402, 1403)는 핵심적인 리소스 CR1을 잠재적으로 액세스한다. 노드(1403-1405)는 다른 핵심적인 리소스 CR2를 잠재적으로 액세스한다.
도 14a는 노드(1401-1405)가 업 상태이고 동적 쿼럼 상태 in_quorum을 가진 액티브 하위 클러스터를 형성하는 상황을 도시한다. 노드(1402)는 CR1을 액세스하고(실선), 노드(1404)는 CR2를 액세스한다(실선).
도 14b는 노드(1401-1403)를 노드(1404-1405)로부터 분리시키는 네트워크 고장 후의 상황을 도시한다. 이제 노드(1401-1403)는 하나의 액티브 하위 클러스터를 형성하고, 노드(1404-1405)는 다른 액티브 하위 클러스터를 형성하며, 두 액티브 하위 클러스터의 동작 쿼럼 상태는 재계산될 필요가 있다.
도 14c는 동작 쿼럼의 결정의 결과를 도시한다. 노드(1401-1403)로 구성되는 액티브 하위 클러스터는 상태 in_quorum을 가지고 있다. 노드(1402)는 계속해서 CR1을 액세스한다. 노드(1404, 1405)로 구성되는 하위 클러스터는 no_quorum을 가지고 있다. 분리된 노드(1404)가 CR2를 온라인으로 가지고 있었기 때문에, 노드(1404)는 정지된다. 노드(1405)는 계속해서 실행될 수 있는데, 이는 노드가 핵심적 리소스 온라인으로 가지고 있지 않기 때문이다.
이 상황 후에 노드(1403)가 CR2를 액세스할 수 있는 반면(즉, 노드(1404)의 의무를 승계함), 노드(1405)는 CR2를 액세스할 수 없다.
본 발명은 하드웨어, 소프트웨어, 또는 하드웨어와 소프트웨어의 결합으로 구현될 수 있다. 어떤 종류의 컴퓨터 시스템-또는 여기서 설명된 방법을 실행하도록 적응된 다른 장치-이라도 맞춰질 수 있다. 하드웨어와 소프트웨어의 일반적인 결합은, 로딩되고 실행될 때, 여기서 설명된 방법을 수행하도록 컴퓨터 시스템을 제어하는 컴퓨터 프로그램을 가진 범용 컴퓨터 시스템일 수 있다. 본 발명은 또한 컴퓨터 프로그램 제품에 내장될 수 있는데, 이는 여기서 설명된 방법의 구현을 가능하게 하는 모든 특징을 포함하고, 컴퓨터 시스템에 로딩될 때 이 방법들을 수행할 수 있다.
본 문맥에서 컴퓨터 프로그램 수단 또는 컴퓨터 프로그램은 어떤 언어, 코드, 또는 표기로 되었든지 간에, 정보 처리 능력을 가진 시스템이 직접 특정한 기능을 수행하거나, 아니면, a) 다른 언어, 코드, 표기로 변환하는 것, b) 상이한 재료 형태로 재생성하는 것을 둘 다 실행하거나 또는 이 중에 하나만 실행한 이후에 특정한 기능을 수행하도록 의도된, 명령어의 집합의 임의의 표현을 의미한다.
본 발명은 분할 브레인 상황을 초래할 수 있는 고장을 다룰 수 있다. 특히, 공유 리소스의 소유자가 분할 브레인 상황에 직면하더라도, 공유 리소스의 안전한 관리가 지원된다. 또한, 본 발명은 클러스터의 재편성 동안 클러스터의 구성원 중 일부에 도달할 수 없다는 사실에도 불구하고, 클러스터 구성을 업데이트 할 수 있다. 본 발명의 방법은 시작된 모든 노드들이 항상 최근의 구성을 작업 구성으로 사용하는 것을 보장하며, 만일 이것이 불가능하다면, 구성의 잠재적인 모순에 대하여 관리자에게 경고한다.
Claims (37)
- S1에서 SN까지 N 개의 노드를 가진 클러스터를 초기화하는 방법에 있어서,클러스터를 형성하기 위하여, S1에서 SN까지 N 개의 노드를 선택하는 단계와,현재의 타임 스탬프를 가진 클러스터 구성 파일에 상기 선택 정보를 저장함으로써, 상기 클러스터 구성 파일이 S1에서 SN까지의 각 노드에서 로컬로 이용가능한, 상기 저장 단계와,S1에서 SN까지의 노드들 중 과반수가 상기 클러스터 구성 파일을 액세스할 수 있는지 여부를 확인하는 단계와,만일 액세스할 수 있다면, 클러스터 셋업이 성공적이었다고 알리는 메시지를 생성하고, 만일 액세스할 수 없다면, 상기 구성을 원상태로 되돌리도록 시도하고, 상기 클러스터 구성이 모순될 수 있다고 알리는 메시지를 생성하는 단계를 포함하는 클러스터 초기화 방법.
- 제1항에 있어서, 상기 클러스터 구성 파일에 상기 선택 정보를 저장하는 단계는,상기 클러스터 구성 파일을 S1에서 SN까지의 모든 노드들로 전송하는 단계를 더 포함하는 클러스터 초기화 방법.
- 제1항에 있어서, 상기 클러스터 구성 파일에 상기 선택 정보를 저장하는 단계는,모든 노드들이 액세스할 수 있는 분산 파일 시스템에 상기 클러스터 구성 파일을 저장하는 단계를 더 포함하는 클러스터 초기화 방법.
- 다수의 노드를 가진 컴퓨터 클러스터에서 노드를 시작하는 방법에 있어서,최근의 클러스터 구성 파일을 검색하는 단계와,만일 상기 최근의 클러스터 구성이 발견된다면, 시작될 노드가 상기 클러스터 구성에 정의된 클러스터의 구성원인지 여부를 결정하는 단계와,만일 그렇다면, 상기 최근의 클러스터 구성을 가지고 상기 노드를 상기 클러스터의 노드로서 시작하는 단계와,만일 상기 최근의 클러스터 구성이 발견되지 않거나 상기 시작될 노드가 상기 최근의 클러스터 구성의 일부가 아니라면, 에러 메시지를 생성하는 단계를 포함하는 노드 시작 방법.
- 제4항에 있어서, 상기 최근의 클러스터 구성 파일을 검색하는 단계는,작업 구성(working configuration)으로서, 로컬로 액세스가능한 클러스터 구성 파일을 초기에 사용하는 단계와;이하의 단계들, 즉,상기 작업 구성에서 나열된 모든 노드들을 접촉하여 그들의 로컬 클러스터정의 파일을 요청하는 단계와,상기 접촉한 노드들 중 하나로부터 수신된 클러스터 정의 파일이 상기 작업 구성에 있는 것보다 더 최근 버전인 경우에, 상기 더 최근 버전이 상기 작업 구성이 되고 마지막 단계들이 한번 더 반복 수행되도록 하는 단계와,상기 접촉한 노드들 중 하나로부터 수신된 클러스터 정의 파일이 상기 작업 구성에 있는 것보다 더 최근 버전이 아닌 경우에, 상기 작업 구성은 최근의 구성이 되고 반복을 중단하는 단계를,반복적으로 수행하는 단계를 더 포함하는 노드 시작 방법.
- 제5항에 있어서,상기 접촉한 노드들 중 얼마나 많은 노드가 클러스터 정의 파일을 가지고 있는지 결정하는 단계와,만일 작업 정의(working definition) 내의 노드들 중 적어도 절반이 클러스터 정의를 가지고 있다면, 상기 작업 정의가 최근의 클러스터 구성이 되고,그렇지 않다면, 최근의 정의가 미지 상태로 유지되는 단계를 더 포함하는 노드 시작 방법.
- 액티브 하위 클러스터에 j 개의 노드들로 이루어진 집합을 추가하는 방법으로서, N이 구성된 클러스터의 사이즈이고 k가 액티브 하위 클러스터의 사이즈인, 상기 노드 추가 방법에 있어서,조건 2k <= N 또는 j > 2k-N이 참인지 여부를 결정하는 단계와,만일 참이라면, 요청된 동작이 모순된 클러스터 구성을 초래할 것이라고 알리는 에러 메시지를 생성하는 단계를 포함하는 노드 추가 방법.
- 제7항에 있어서, 하나 이상의 노드에 도달할 수 없는 경우에, 추가될 노드들로의 연결성(connectivity)을 검사하는 단계를 더 포함하는 노드 추가 방법.
- 제8항에 있어서, 상기 연결성 검사의 결과에 따라 상기 추가될 노드들의 집합을 조정하는 단계를 더 포함하는 노드 추가 방법.
- 제7항 또는 제9항에 있어서, 상기 노드들이 상기 클러스터에 안전하게 추가될 수 있다고 결정한 후에, 상기 액티브 하위 클러스터의 모든 노드들로 새로운 구성을 전달하는 단계를 더 포함하는 노드 추가 방법.
- 제10항에 있어서, 추가된 새로운 노드들을 포함하는 상기 새로운 클러스터 구성을 오프라인 노드들로 복제하는 단계를 더 포함하는 노드 추가 방법.
- 제11항에 있어서, 성공적으로 추가된 노드들의 리스트를 리턴하는 단계를 더 포함하는 노드 추가 방법.
- 클러스터 구성으로부터 j 개의 노드들로 이루어진 집합을 제거하는 방법으로서, N은 상기 구성된 클러스터의 사이즈이고, k는 액티브 하위 클러스터의 사이즈인, 상기 노드 제거 방법에 있어서,조건 2k < N이 참인지 여부를 결정하는 단계와,만일 참이라면, 요청된 동작이 모순된 클러스터 구성을 초래할 것이라고 알리는 에러 메시지를 생성하는 단계를 포함하는 노드 제거 방법.
- 제13항에 있어서, 관리자가 잠재적인 에러 메시지를 명시적으로 무시하고 계속할 수 있게 하는 노드 제거 방법.
- 제13항 또는 제14항에 있어서,하나 이상의 노드들에 도달할 수 없는 경우, 제거될 노드들에 대한 연결성을 검사하는 단계와,상기 연결성 검사의 결과에 따라 상기 제거될 노드들의 집합을 조정하는 단계를 더 포함하는 노드 제거 방법.
- 제14항 또는 제15항에 있어서,요청된 노드들이 안전하게 상기 클러스터로부터 제거될 수 있다는 것을 결정한 이후에, 제거될 모든 노드들로부터 상기 구성을 제거하는 단계를 더 포함하는노드 제거 방법.
- 제16항에 있어서,상기 구성을 제거하는 단계가 성공적이지 않고, 2k = N이 참인 경우에, 상기 요청된 동작이 모순된 클러스터 구성을 초래할 것이라는 것을 알리는 에러 메시지를 생성하는 단계를 더 포함하는 노드 제거 방법.
- 제17항에 있어서, 상기 관리자가 잠재적인 에러 메시지를 명시적으로 무시하고 계속할 수 있게 하는 노드 제거 방법.
- 제16항 내지 제18항 중 어느 한 항에 있어서,만일 상기 구성이 상기 제거될 노드들로부터 제거될 수 있다면, 액티브 하위 클러스터 내의 모든 노드들에게 새로운 구성을 전달하는 노드 제거 방법.
- 제19항에 있어서, 상기 새로운 클러스터 구성을 오프라인 노드들로 복제하는 단계를 더 포함하는 노드 제거 방법.
- 제20항에 있어서, 성공적으로 제거된 노드들의 리스트를 리턴하는 단계를 더 포함하는 노드 제거 방법.
- 클러스터에 다른 구성의 업데이트를 시작하는 방법으로서, N은 구성된 클러스터의 사이즈이고, k는 액티브 하위 클러스터의 사이즈인, 상기 업데이트 시작 방법에 있어서,조건 2k <= N이 참인지 여부를 결정하는 단계와,만일 그렇다면, 요청된 동작이 모순된 클러스터 구성을 초래할 것이라는 것을 사용자에게 알리는 에러 메시지를 생성하는 단계를 포함하는 업데이트 시작 방법.
- 제22항에 있어서, 만일 상기 구성에 대하여 요청된 업데이트가 안전하게 시작될 수 있다면, 상기 액티브 하위 클러스터의 모든 노드들에게 새로운 클러스터 구성을 전달하는 단계를 더 포함하는 업데이트 시작 방법.
- 제23항에 있어서, 상기 새로운 클러스터 구성을 오프라인 노드들로 복제하는 단계를 더 포함하는 업데이트 시작 방법.
- 제24항에 있어서, 상기 클러스터 구성에 대한 요청된 변경이 성공적으로 적용되었던 노드들의 리스트를 리턴하는 단계를 더 포함하는 업데이트 시작 방법.
- 각 노드에 관련된 상태를 결정함으로써, 다수의 노드와 타이브레이커(tiebreaker)를 가진 클러스터를 운영하는 방법으로서, N은 구성된 클러스터의 사이즈이고, k는 액티브 하위 클러스터의 사이즈인, 상기 클러스터 운영 방법에 있어서,N과 k에 대한 값을 검색하는 단계와,조건 2k < N이 참인 경우에,상기 노드가 보유된 상기 타이브레이커를 가지고 있는지 여부를 결정하고 만일 그렇다면 상기 타이브레이커가 해제되고,상기 상태를 no_quorum으로 설정하고,상기 노드가 핵심적인 리소스를 온라인으로 가지고 있다면, 리소스 보호 메서드를 트리거하는 단계를포함하는 클러스터 운영 방법.
- 제26항에 있어서,조건 2k = N이 참인 경우에, 상기 상태를 quorum_pending으로 설정하고, 상기 타이브레이커의 보유를 요청하는 단계를 더 포함하는 클러스터 운영 방법.
- 제27항에 있어서, 상기 타이브레이커 보유가 성공적이었다면, 상기 상태를 in_quorum으로 변경하는 단계를 더 포함하는 클러스터 운영 방법.
- 제28항에 있어서,만일 상기 타이브레이커 보유가 성공적이지 않았다면, 상기 상태를no_quorum으로 변경하는 단계와,만일 상기 노드가 핵심적인 리소스를 온라인으로 가지고 있다면, 리소스 보호 메서드를 트리거하는 단계를 더 포함하는 클러스터 운영 방법.
- 제29항에 있어서,조건 2k > N이 참인 경우, 상기 노드가 보유된 상기 타이 브레이커를 가지고 있는지 여부를 결정하고, 만일 그렇다면, 상기 타이브레이커가 해제되고, 상기 상태를 in_quorum으로 설정하는 단계를 더 포함하는 클러스터 운영 방법.
- 컴퓨터 클러스터의 노드의 동작에서의 고장(malfunction)을 판별하는 방법으로서, 상기 노드는 하나의 데드맨 스위치(Dead Man Switch, DMS)와 적어도 제1 기반 구조 레벨과 제2 기반 구조 레벨을 가지는, 상기 노드 고장 판별 방법에 있어서,상기 제1 기반 구조 레벨이 모니터링될 수 있도록, 상기 제1 기반 구조 레벨이 상기 데드맨 스위치를 주기적으로 업데이트하는 단계와,상기 제1 기반 구조 레벨이 상기 제2 기반 구조 레벨을 모니터링하는 단계와,만일 상기 제1 기반 구조 레벨이 상기 제2 기반 구조 레벨을 모니터링하는 동안 고장을 발견한다면, 상기 데드맨 스위치를 업데이트하는 것을 중단하는 단계를 포함하는 노드 고장 판별 방법.
- 제31항에 있어서, 상기 제2 기반 구조 레벨에서의 상기 고장을 발견하는 단계는,상기 제1 기반 구조 레벨로부터 상기 제2 기반 구조 레벨로 통지 메시지를 전송하는 단계와,상기 제2 기반 구조 레벨이 상기 제1 기반 구조에 대한 함수를 호출하는 것을 기다리는 단계와,만일 상기 제1 기반 구조 레벨이 상기 제1 기반 구조 레벨로부터 상기 함수 호출을 수신하지 못한다면, 상기 제2 기반 구조 레벨에 대한 고장을 선언하는 단계를 포함하는 노드 고장 판별 방법.
- 제32항에 있어서, 상기 노드가 제3 기반 구조 레벨을 추가적으로 포함하고,상기 제2 기반 구조 레벨이 상기 제3 기반 구조 레벨을 모니터링하는 단계와,만일 상기 제2 기반 구조 레벨이 상기 제3 기반 구조 레벨을 모니터링하는 동안 고장을 발견한다면, 상기 제1 기반 구조 레벨에게 통지하는 단계를 더 포함하는 노드 고장 판별 방법.
- 제31항 또는 제32항에 있어서,핵심적인 리소스가 온라인인 노드들에서만 상기 메서드를 수행하는 단계와,어떠한 핵심적인 리소스도 온라인이 아닌 노드들에서, 상기 메서드를 디스에이블시키는 단계를 더 포함하는 노드 고장 판별 방법.
- S1에서 SN까지 N 개의 노드를 가지며, 제1항 내지 제34항 중 어느 한 항에 의하여 운영되는 컴퓨터 클러스터.
- 제1항 내지 제34항 중 어느 한 항에 따른 방법을 수행하도록 적응된 컴퓨터 시스템.
- 제1항 내지 제34항 중 어느 한 항에 의한 방법을 컴퓨터가 수행하게끔 하는 컴퓨터로 판독가능한 프로그램 수단을 포함하는, 컴퓨터 사용가능 매체에 저장된 컴퓨터 프로그램 제품.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP03100328 | 2003-02-13 | ||
EP03100328.8 | 2003-02-13 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20040073274A true KR20040073274A (ko) | 2004-08-19 |
KR100553920B1 KR100553920B1 (ko) | 2006-02-24 |
Family
ID=33104150
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020030101701A KR100553920B1 (ko) | 2003-02-13 | 2003-12-31 | 컴퓨터 클러스터 운영 방법 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20040205148A1 (ko) |
JP (1) | JP4726416B2 (ko) |
KR (1) | KR100553920B1 (ko) |
TW (1) | TWI279700B (ko) |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050283641A1 (en) * | 2004-05-21 | 2005-12-22 | International Business Machines Corporation | Apparatus, system, and method for verified fencing of a rogue node within a cluster |
US20060015505A1 (en) * | 2004-07-16 | 2006-01-19 | Henseler David A | Role-based node specialization within a distributed processing system |
US7526534B2 (en) * | 2004-07-16 | 2009-04-28 | Cassatt Corporation | Unified system services layer for a distributed processing system |
US8151245B2 (en) | 2004-12-17 | 2012-04-03 | Computer Associates Think, Inc. | Application-based specialization for computing nodes within a distributed processing system |
US20060248371A1 (en) * | 2005-04-28 | 2006-11-02 | International Business Machines Corporation | Method and apparatus for a common cluster model for configuring, managing, and operating different clustering technologies in a data center |
WO2007006592A2 (en) * | 2005-07-12 | 2007-01-18 | International Business Machines Corporation | Method and system for reconfiguring functional capabilities in a data processing system with dormant resources |
US7480281B2 (en) * | 2005-11-30 | 2009-01-20 | International Business Machines Corporation | Method for improving cluster bring-up in a distributed topology liveness system |
US7953890B1 (en) * | 2006-01-27 | 2011-05-31 | Symantec Operating Corporation | System and method for switching to a new coordinator resource |
JP4842742B2 (ja) * | 2006-09-05 | 2011-12-21 | 富士通株式会社 | ソフトウェア管理プログラム、ソフトウェア管理方法およびソフトウェア管理装置 |
US8209417B2 (en) * | 2007-03-08 | 2012-06-26 | Oracle International Corporation | Dynamic resource profiles for clusterware-managed resources |
US7937610B2 (en) * | 2007-04-27 | 2011-05-03 | International Business Machines Corporation | Fast node failure detection via disk based last gasp mechanism |
DE102007044630A1 (de) * | 2007-09-19 | 2009-04-02 | Siemens Ag | Anlage sowie Verfahren zum Betreiben einer Anlage |
US8055735B2 (en) * | 2007-10-30 | 2011-11-08 | Hewlett-Packard Development Company, L.P. | Method and system for forming a cluster of networked nodes |
US8001413B2 (en) * | 2008-05-05 | 2011-08-16 | Microsoft Corporation | Managing cluster split-brain in datacenter service site failover |
US7543046B1 (en) | 2008-05-30 | 2009-06-02 | International Business Machines Corporation | Method for managing cluster node-specific quorum roles |
KR101042908B1 (ko) * | 2009-02-12 | 2011-06-21 | 엔에이치엔(주) | 네트워크 분리 장애 상황에서 메이저 그룹을 결정하기 위한방법, 시스템, 및 컴퓨터 판독 가능한 기록 매체 |
US8935431B2 (en) * | 2010-12-17 | 2015-01-13 | International Business Machines Corporation | Highly scalable and distributed data sharing and storage |
US8560628B2 (en) | 2011-01-11 | 2013-10-15 | International Business Machines Corporation | Supporting autonomous live partition mobility during a cluster split-brained condition |
US9081839B2 (en) | 2011-01-28 | 2015-07-14 | Oracle International Corporation | Push replication for use with a distributed data grid |
US9201685B2 (en) | 2011-01-28 | 2015-12-01 | Oracle International Corporation | Transactional cache versioning and storage in a distributed data grid |
US9164806B2 (en) | 2011-01-28 | 2015-10-20 | Oracle International Corporation | Processing pattern framework for dispatching and executing tasks in a distributed computing grid |
US9262229B2 (en) * | 2011-01-28 | 2016-02-16 | Oracle International Corporation | System and method for supporting service level quorum in a data grid cluster |
US8825842B2 (en) * | 2011-04-28 | 2014-09-02 | Facebook, Inc. | Managing notifications pushed to user devices |
US8812631B2 (en) | 2011-05-11 | 2014-08-19 | International Business Machines Corporation | Method and arrangement for operating a computer cluster |
US10706021B2 (en) | 2012-01-17 | 2020-07-07 | Oracle International Corporation | System and method for supporting persistence partition discovery in a distributed data grid |
US9146705B2 (en) | 2012-04-09 | 2015-09-29 | Microsoft Technology, LLC | Split brain protection in computer clusters |
CN104094577B (zh) * | 2012-08-13 | 2017-07-04 | 统一有限责任两合公司 | 用于间接地评定活动实体的状态的方法和装置 |
JP6005752B2 (ja) * | 2012-10-03 | 2016-10-12 | 株式会社日立製作所 | 情報処理装置、データ更新方法及びプログラム |
CN103684941B (zh) * | 2013-11-23 | 2018-01-16 | 广东中兴新支点技术有限公司 | 基于仲裁服务器的集群裂脑预防方法和装置 |
CN104735647A (zh) * | 2013-12-20 | 2015-06-24 | 中兴通讯股份有限公司 | 无线终端的锁网方法及*** |
US10664495B2 (en) | 2014-09-25 | 2020-05-26 | Oracle International Corporation | System and method for supporting data grid snapshot and federation |
US10798146B2 (en) | 2015-07-01 | 2020-10-06 | Oracle International Corporation | System and method for universal timeout in a distributed computing environment |
US10860378B2 (en) | 2015-07-01 | 2020-12-08 | Oracle International Corporation | System and method for association aware executor service in a distributed computing environment |
US11163498B2 (en) | 2015-07-01 | 2021-11-02 | Oracle International Corporation | System and method for rare copy-on-write in a distributed computing environment |
US10585599B2 (en) | 2015-07-01 | 2020-03-10 | Oracle International Corporation | System and method for distributed persistent store archival and retrieval in a distributed computing environment |
US9930140B2 (en) | 2015-09-15 | 2018-03-27 | International Business Machines Corporation | Tie-breaking for high availability clusters |
US10320702B2 (en) | 2015-09-30 | 2019-06-11 | Veritas Technologies, LLC | Input/output fencing optimization |
US10397087B1 (en) * | 2016-12-27 | 2019-08-27 | EMC IP Holding Company LLC | Status monitoring system and method |
US11550820B2 (en) | 2017-04-28 | 2023-01-10 | Oracle International Corporation | System and method for partition-scoped snapshot creation in a distributed data computing environment |
US10769019B2 (en) | 2017-07-19 | 2020-09-08 | Oracle International Corporation | System and method for data recovery in a distributed data computing environment implementing active persistence |
US10862965B2 (en) | 2017-10-01 | 2020-12-08 | Oracle International Corporation | System and method for topics implementation in a distributed data computing environment |
US10733066B2 (en) | 2018-03-09 | 2020-08-04 | Hewlett Packard Enterprise Development Lp | Persistent reservation commands in a distributed storage system |
US11258658B2 (en) * | 2018-06-29 | 2022-02-22 | Intel Corporation | Technologies for monitoring networked computing devices using deadman triggers |
US12045667B2 (en) * | 2021-08-02 | 2024-07-23 | International Business Machines Corporation | Auto-split and auto-merge clusters |
US20230195486A1 (en) * | 2021-12-22 | 2023-06-22 | Dell Products L.P. | Scaling cluster without re-imaging nodes |
WO2023148977A1 (ja) * | 2022-02-07 | 2023-08-10 | 株式会社Pfu | ノード装置、クラスタ管理方法、プログラム及びクラスタシステム |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6014669A (en) * | 1997-10-01 | 2000-01-11 | Sun Microsystems, Inc. | Highly-available distributed cluster configuration database |
US7774469B2 (en) * | 1999-03-26 | 2010-08-10 | Massa Michael T | Consistent cluster operational data in a server cluster using a quorum of replicas |
US7203729B2 (en) * | 2001-04-20 | 2007-04-10 | Motorola Inc. | Method and apparatus for a communication network with nodes capable of selective cluster head operation |
US20020194015A1 (en) * | 2001-05-29 | 2002-12-19 | Incepto Ltd. | Distributed database clustering using asynchronous transactional replication |
-
2003
- 2003-12-31 KR KR1020030101701A patent/KR100553920B1/ko not_active IP Right Cessation
-
2004
- 2004-02-02 JP JP2004026117A patent/JP4726416B2/ja not_active Expired - Fee Related
- 2004-02-10 TW TW093103025A patent/TWI279700B/zh not_active IP Right Cessation
- 2004-02-13 US US10/778,838 patent/US20040205148A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20040205148A1 (en) | 2004-10-14 |
TW200500919A (en) | 2005-01-01 |
TWI279700B (en) | 2007-04-21 |
JP4726416B2 (ja) | 2011-07-20 |
JP2004342079A (ja) | 2004-12-02 |
KR100553920B1 (ko) | 2006-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100553920B1 (ko) | 컴퓨터 클러스터 운영 방법 | |
US8621263B2 (en) | Automated node fencing integrated within a quorum service of a cluster infrastructure | |
US8464092B1 (en) | System and method for monitoring an application or service group within a cluster as a resource of another cluster | |
US8386830B2 (en) | Server switching method and server system equipped therewith | |
KR101801432B1 (ko) | 파일 시스템 내에 투명 페일오버의 제공 | |
US8417899B2 (en) | System and method for controlling access to shared storage device | |
US6959337B2 (en) | Networked system for assuring synchronous access to critical facilities | |
JP4307673B2 (ja) | マルチクラスタ化コンピュータ・システムを構成及び管理する方法及び装置 | |
KR101042908B1 (ko) | 네트워크 분리 장애 상황에서 메이저 그룹을 결정하기 위한방법, 시스템, 및 컴퓨터 판독 가능한 기록 매체 | |
WO2016106682A1 (zh) | 一种集群脑裂后仲裁处理方法、仲裁存储装置以及*** | |
US20030065760A1 (en) | System and method for management of a storage area network | |
US20020133727A1 (en) | Automated node restart in clustered computer system | |
US8863278B2 (en) | Grid security intrusion detection configuration mechanism | |
JP2004532442A (ja) | ストレージシステムにおけるフェイルオーバー処理 | |
JP2007279890A (ja) | バックアップシステム及びバックアップ方法 | |
US8533525B2 (en) | Data management apparatus, monitoring apparatus, replica apparatus, cluster system, control method and computer-readable medium | |
CN112181660A (zh) | 一种基于服务器集群的高可用方法 | |
JP2002229837A (ja) | 共有ディスク・パラレル・データ・ファイル内のデータに対するアクセスを制御する方法 | |
US11995100B2 (en) | System and method for highly available database service | |
CN109274761A (zh) | 一种nas集群节点、***以及数据访问方法 | |
US7120821B1 (en) | Method to revive and reconstitute majority node set clusters | |
US12040936B2 (en) | Technique for connection handling in a distributed system | |
US8533331B1 (en) | Method and apparatus for preventing concurrency violation among resources | |
Robertson | Resource fencing using STONITH | |
CN117632525A (zh) | 用于利用分布式锁管理器进行恢复的***和方法 |
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: 20090129 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |