KR100491802B1 - 컴퓨팅 환경의 클러스터 관리 시스템, 컴퓨팅 환경의 클러스터 관리 방법 및 기록 매체 - Google Patents
컴퓨팅 환경의 클러스터 관리 시스템, 컴퓨팅 환경의 클러스터 관리 방법 및 기록 매체 Download PDFInfo
- Publication number
- KR100491802B1 KR100491802B1 KR10-2001-0024697A KR20010024697A KR100491802B1 KR 100491802 B1 KR100491802 B1 KR 100491802B1 KR 20010024697 A KR20010024697 A KR 20010024697A KR 100491802 B1 KR100491802 B1 KR 100491802B1
- Authority
- KR
- South Korea
- Prior art keywords
- component
- cluster
- node
- registry
- data
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/085—Retrieval of network configuration; Tracking network configuration history
- H04L41/0853—Retrieval of network configuration; Tracking network configuration history by actively collecting configuration information or by backing up configuration information
- H04L41/0856—Retrieval of network configuration; Tracking network configuration history by actively collecting configuration information or by backing up configuration information by backing up or archiving configuration information
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/505—Clust
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
- Multi Processors (AREA)
Abstract
다양한 컴포넌트들이 클러스터된 환경을 관리하기 위해 제공된다. 이들 컴포넌트들은 글로벌 데이터 저장 장소를 제공하는 시스템 레지스트리와, 상기 클러스터된 환경의 노드들 상에 국부적으로 데이터를 저장하고 시스템 레지스트리 내에 전체적으로 데이터를 저장하는 구성 관리자와, 상기 클러스터의 통신 경로의 상태를 제공하는 라이브니스 컴포넌트와, 상기 클러스터된 환경의 하나 이상의 다른 컴포넌트에 서비스를 제공하는 그룹 서비스 컴포넌트와, 상기 클러스터된 환경의 하나 이상의 리소스 제어기와 통신하는 리소스 관리 컴포넌트를 포함한다. 상기 클러스터된 환경의 각각의 컴포넌트들은 상기 환경의 하나 이상의 다른 컴포넌트들에 대해 하나 이상의 데이터 및/또는 함수적 의존성을 갖는다. 그러나, 이들 컴포넌트들 사이의 관계는, 상기 데이터 및 함수적 의존성이 비주기적인 그래프를 형성하도록 생성된다(즉, 의존성 주기(a cycle of dependency)가 회피된다).
Description
관련 출원에 대한 상호 참조(Cross-Reference)
본 발명은 하기의 출원들의 요지와 관련된 요지를 담고 있으며, 상기 출원들은 각각 본 출원과 동일 양수인에게 양도되어 본 출원과 동일 날짜에 출원되었다. 하기의 리스트된 출원들은 각각 전반적으로 본원 명세서에 참조된다.
Novaes et al(Docket No. POU9-2000-0021-US1)의 "Method, System And Program Products For Providing Clusters Of A Computing Environment"
Novaes et al(Docket No. POU9-2000-0011-US1)의 "Method, System And Program Products For Defining Nodes To A Cluster"
Novaes et al(Docket No. POU9-2000-0010-US1)의 "Method, System And Program Products For Ordering Lists Of Service Addresses To Provide Load Balancing Of A Clustered Environment"
Novaes et al(Docket No. POU9-2000-0008-US1)의 "Method, System And Program Products For Controlling System Traffic Of A Clustered Computing Environment"
Novaes et al(Docket No. POU9-2000-0005-US1)의 "Method, System And Program Products For Automatically Configuring Clusters Of A Computing Environment"
Novaes et al(Docket No. POU9-2000-0007-US1)의 "Method, System And Program Products For Managing Identiviers Of Components Of A Clustered Environment"
Novaes et al(Docket No. POU9-2000-0096-US1)의 "Method, System And Program Products For Managing Cluster Configurations"
본 발명은 분산 컴퓨팅 환경에 관한 것으로서, 특히, 분산 컴퓨팅 환경의 노드들의 하나 이상의 클러스터를 관리하는 것에 관한 것이다.
분산 시스템(distributed system)은 높은 작업 처리량 또는 시스템의 연속적인 이용 가능성 또는 거의 연속적인 이용 가능성을 요구하는 상황을 포함하는 다양한 상황에서 이용되는 아주 효과적이며 융통성 있는 시스템이다.
리소스 공유 능력을 갖는 분산 시스템을 클러스터(cluster)라 지칭한다. 클러스터는 리소스를 공유하며 시스템 작업을 수행하기 위해 서로 협력하는 운영 시스템(operating system)을 포함한다. 오늘날 다양한 클러스터 시스템이 존재하지만(예를 들면, IBM사의 RS/6000 SP 시스템), 현존하는 클러스터 시스템에 대한 개선이 기대되고 있다. 예를 들면, 클러스터 시스템의 관리를 용이하게 하기 위한 개선이 요망된다.
따라서, 본 발명은 클러스터 시스템의 관리를 용이하게 하여, 종래 클러스터 시스템의 문제점을 해결하는 개선된 클러스터 시스템을 제공하는 것을 목적으로 한다.
컴퓨팅 환경의 클러스터들을 관리하는 시스템을 제공함으로서, 종래 기술의 문제점을 극복하고 부가적인 이점을 제공한다. 상기 시스템은, 예를 들어, 상기 컴퓨팅 환경의 클러스터의 데이터를 위한 글로벌 데이터 저장 장소를 제공하는 레지스트리 컴포넌트와 -상기 클러스터는 상기 컴퓨팅 환경의 하나 이상의 노드를 포함함-, 상기 하나 이상의 노드의 적어도 하나의 노드 상에 국부적으로 데이터를 유지하고 상기 레지스트리 컴포넌트에 글로벌 데이터를 저장하는 구성 컴포넌트와, 상기 클러스터의 하나 이상의 통신 경로의 상태를 제공하며, 상기 레지스트리 컴포넌트와 상기 구성 컴포넌트에 의존하는 라이브니스 컴포넌트와, 상기 클러스터의 하나 이상의 다른 컴포넌트에 하나 이상의 서비스를 제공하며, 상기 레지스트리 컴포넌트, 상기 구성 컴포넌트, 상기 라이브니스 컴포넌트에 의존하는 그룹 서비스 컴포넌트와, 상기 클러스터의 하나 이상의 리소스 제어기와 통신하며, 상기 레지스트리 컴포넌트, 상기 구성 컴포넌트, 상기 그룹 서비스 컴포넌트에 의존하는 리소스 관리 컴포넌트를 포함한다.
상기 요약된 시스템에 대응하는 방법 및 컴퓨터 프로그램 제품들은 본원에 설명되어 있으며 또한 청구되어 있다.
부가적인 특징들 및 이점들은 본 발명의 논의를 통해 이루어진다. 본 발명의 다른 실시예들 및 특징들은 본원 명세서에 상세히 설명되어 있으며, 청구된 발명의 일부로 간주된다.
본 발명의 요지는 명세서의 결론부에 있는 청구항에 교시되어 있으며 명확히 청구되어 있다. 본 발명의 상기 및 다른 목적, 특징 및 이점은 첨부한 도면을 참조로 한 하기의 상세한 설명으로부터 명확해질 것이다.
본 발명의 하나 이상의 특징에 따르면, 운영 시스템의 하나 이상의 카피(copy)를 이용하는 분산 컴퓨팅 환경이 관리된다. 운영 시스템의 각각의 카피는 일군의 리소스(예를 들면, 프로세서, 네트워크 인터페이스, 파일, 파일 시스템, 저장 장치, 주변장치 등)을 액세스하도록 구성된다. 상기 액세스는 운영시스템의 다른 카피들과 공유될 수도 있고 배타적일 수도 있다. 만약 리소스가 공유되면, 운영 시스템의 각각의 카피는 그들이 제어하는 시스템 리소스를 공유한다. 리소스를 공유하기 위하여, 운영 시스템 카피들은 액세스 권한을 결정하여 리소스의 무결성이 유지되도록 한다. 예를 들면, 복수의 데이터 블록을 저장 장치의 임의의 세그먼트에 기록하고자 하는 운영 시스템의 두 개의 카피는 상기 세그먼트에 대한 액세스 권한을 결정하는데, 그렇지 않으면, 기록 동작의 순서는 기록되는 데이터의 무결성을 손상시킬 수도 있다.
본 발명의 특징들을 구현하여 이용하는 분산 컴퓨팅 환경의 일례가 도 1에 도시되어 있다. 분산 컴퓨팅 환경(100)은 예를 들어 복수의 LAN 게이트(104)를 통해 서로 결합되어 있는 복수의 프레임(102)을 포함한다. 프레임(102) 및 LAN 게이트(104)는 하기에 상세히 설명한다.
일례에서, 분산 컴퓨팅 환경(100)은 8 개의 프레임을 포함하며, 이들은 각각 복수의 처리 노드(106)를 포함한다. 일례에서, 각각의 프레임은 16 개의 처리 노드(각각 하나 이상의 프로세서를 포함한다)를 포함한다. 각각의 처리 노드는 예를 들면, AIX, UNIX 기반 운영 시스템을 가동하는 RISC/6000 컴퓨터이다. 프레임 내의 처리 노드는 각각 예를 들어 내부 LAN 접속을 통해 프레임의 다른 처리 노드들에 결합된다. 또한, 각각의 프레임은 LAN 게이트(104)를 통해 다른 프레임들에 결합된다.
예로서, 각각의 LAN 게이트(104)는 RISC/6000 컴퓨터 또는 LAN으로의 컴퓨터 네트워크 접속 또는 네트워크 라우터를 포함한다. 그러나 이들은 단지 예일 뿐이다. 당업자라면, 다른 유형의 LAN 게이트가 있으며, 프레임을 서로 결합하는데 다른 메커니즘이 이용될 수도 있음을 알 수 있을 것이다.
도 1의 분산 컴퓨팅 환경은 단지 일례일 뿐이다. 프레임 수는 8 개보다 많거나 적을 수도 있고 프레임당 노드 수는 16 개보다 많거나 적을 수도 있다. 또한, 처리 노드는 AIX를 가동하는 RISC/6000 컴퓨터가 아닐 수도 있다. 일부 또는 모든 처리 노드들은 다른 유형의 컴퓨터 및/또는 다른 운영 시스템을 포함할 수 있다. 또한, 이종 환경(heterogeneous environment)이 본 발명의 특징을 포함하여 이용할 수 있는데, 여기서, 상기 환경의 하나 이상의 노드 및/또는 운영 시스템이 상기 환경의 다른 노드 또는 운영 시스템과 구별된다. 그러한 이종 환경의 노드들은 본원 명세서에 기술한 바와 같이, 그들이 서로 협력하여 리소스를 공유한다는 점에 있어서, 상호 동작한다. 또한, 본 발명의 특징들은 단일 컴퓨터 시스템 내에서 사용될 수 있다. 이들 모든 변형들은 청구한 본 발명의 일부로서 간주된다.
리소스를 공유하는 능력을 갖는 분산 컴퓨팅 환경을 클러스터라 한다. 특히, 컴퓨팅 환경은 하나 이상의 클러스터를 포함할 수 있다. 예를 들면, 도 2에 도시된 바와 같이, 컴퓨팅 환경(200)은 두 개의 클러스터, 즉, 클러스터 A(202) 및 클러스터 B(204)를 포함한다. 각각의 클러스터는 시스템 작업을 수행하는데 있어서 서로 협력하며 리소스를 공유하는 하나 이상의 노드(206)를 포함한다. 각각의 노드는 운영 시스템의 개별적인 카피를 포함한다.
특정 클러스터에 대한 노드의 멤버쉽(membership)을 고려하는 데에는 두 가지 측면이 있다. 한 측면은 클러스터의 정적 구성(static configuration)과 관련된다. 이 측면은 노드 정의(node definition)라 지칭된다(도 3 참조). 만약 노드가 클러스터에 대해 정의되면, 그 클러스터 내의 다른 노드들은 이 노드를 인식한다. 노드는 성공적인 노드 정의 동작(후술함) 후에 클러스터에 정의된다. 역으로, 노드는 노드 삭제 동작 후에 클러스터에 대해 정의 해제된다.
노드의 정적 측면은 클러스터 멤버쉽이라고 하는 동적(또는 실행 시간(run-time)) 속성과는 상이하다. 클러스터 멤버쉽은, 노드가 정의되어 동작가능할 때(즉, 온라인) 클러스터의 멤버로 간주된다는 사실과 관련이 있다. 여기서 동작가능(operational)이라는 용어는, 노드가 클러스터의 다른 멤버들에 의해 기능적인 노드, 즉, 라이브니스 태스크(liveness task)라 하는 기본적인 기능들을 수행할 수 있는 노드로서 감지된다는 사실을 암시한다. 일례로서, 노드는 일군의 라이브니스 태스크를 연속적으로 수행하고, 규칙적인 간격으로 클러스터 하트비트(heartbeat) 메시지를 다른 멤버들에게 전송함으로서 그러한 작업을 수행하는 능력에 대해 다른 노드들에게 보고한다.
클러스터 멤버쉽은 임의의 시점에서 클러스터의 완전한 부분으로서 기능하는 노드들의 리스트로서 보여질 수도 있다. 상기 리스트는 모든 노드에 사용가능하며, 본 발명의 한 측면에 따르면, 클러스터 아키텍처는, 모든 노드들이 임의의 시점에서, 아무것도 공유하지 않는 분산 시스템에서조차도, 동일한 멤버쉽 리스트를 액세스할 수 있도록 보장한다. (아무것도 공유하지 않는 분산 시스템은 노드들이 디스크 또는 메모리와 같은 임의의 공유된 물리적 리소스들을 갖지 않는 시스템이다.) 그러한 시스템에서 특정 데이터의 동일한 뷰(view)를 유지하기 위하여, 복잡한 동기화 프로토콜이 이용되는데, 데이터가 원자성의(atomic) 트랜잭션들 내의 모든 노드에 분산되어야 하기 때문이다.
멤버쉽 리스트로부터 노드를 추가 또는 삭제하는데 특정 프로토콜이 이용된다. 예를 들면, 노드를 멤버쉽 리스트에 추가하는 프로세스는 노드 조인(join) 프로세스라 한다. 역으로, 노드 리브(leave) 프로세스에 의해 멤버쉽으로부터 노드가 삭제된다. 만약 노드가 클러스터 멤버쉽에 리스트되어 있지 않으면, 그 노드는 클러스터를 떠난 것이다.
각각의 클러스터는 복수의 컴포넌트를 포함하는 클러스터 아키텍처에 의해 관리된다. 각각의 컴포넌트는, 본원 명세서에서 상세히 설명되어 있는 바와 같이, 클러스터의 하나 이상의 노드 상에서 하나 이상의 대응하는 프로세스를 실행한다. 컴포넌트가 복수의 노드 상에서 복수의 프로세스를 실행하면, 상기 아키텍처는 이들 노드 사이에 분산된다. 그러나 분산 아키텍처는 단지 일례일 뿐이다. 본 발명의 하나 이상의 특징이 단일 시스템 또는 비분산(non-distribute) 시스템 상에 채용될 수 있다.
일례에서, 클러스터 아키텍처의 컴포넌트는, 클러스터 시스템을 구성하며 노드가 클러스터와 조인(join)되거나 떠날때(leave) 발생하는 (하기의) 클러스터 구성 데이터베이스의 동기화를 조정하는데 이용된 분산 구성 관리자(Distributed Configuration Manager)(DCM(400))(도 4)와, 클러스터 구성 데이터 베이스에 저장된 데이터를 공급하는 하나 이상의 프로세스를 포함하는 시스템 레지스트리 서버 서브시스템(402)과, 클러스터의 멤버들 사이의 통신 경로의 이용가능성에 대한 정보를 제공하는 클러스터 멤버쉽 리스트를 관리하는 라이브니스 서브시스템(404)과, 다른 클러스터 프로세스들이 논리 그룹을 형성하여 일관된 그룹 상태 및 프로세스 멤버쉽을 유지하도록 편의를 제공하는 그룹 서비스 서브시스템(406)과, 클러스터 리소스의 액세스 및 제어를 관리하고 클라이언트가 클러스터 리소스의 상태 및 구성을 검사할 수 있도록 편의를 제공하는 리소스 관리자 서브시스템(408)을 포함한다.
도 4에 도시된 바와 같은 일실시예에서, 각각의 컴포넌트는 복수의 노드(410) 사이에 분산된다. 즉, 각각의 컴포넌트는 복수의 노드 상에서 프로세스를 실행하고 있다. 예를 들면, DCM(400)은 세 개의 도시된 노드 상에서 DCM 프로세스(412)를 실행하고 있다. 다른 콤포턴트들도 마찬가지이며, 이들 각각은 하기에 보다 상세히 설명된다.
분산 구성 관리자(DCM) 서브시스템(400)은 클러스터의 일부로서 구성되는 각각의 노드 상에 분산 구성 관리자 데몬(DCMD : Distributed Configuration Manager Daemon)(412)이라 지칭되는 컴퓨터 프로그램의 카피를 제공한다. DCMD는 클러스터의 부트스트래핑 에이전트(bootstrapping agent)이다. 따라서, DCMD 프로세스는 적절한 클러스터 구성으로 다른 클러스터 컴포넌트들을 시동하는 것을 담당한다. DCMD는 또한, 노드가 하나의 클러스터로부터 다른 클러스터로 이동되는 경우에서와 같이, 적절한 때에 다른 클러스터 컴포넌트를 중지시키는 프로세스이다. DCMD 그 자체는 노드의 기본 운영 시스템에 의해 부트스트랩되며, 본 예에서는 운영 시스템에 의해 직접 부트스트랩되는 유일한 클러스터 컴포넌트이다.
DCMD는 하나 이상의 클러스터 구성과 관련되는, 각 노드의 로컬 저장장치 내의 파일 콜렉션(collection)을 관리한다. 이 로컬 구성 데이터 외에, DCMD는 또한 서버 저장소(Server Repository) 내에 글로벌 구성 데이터를 저장한다. 클러스터 구성 데이터는 하기에 더 설명한다.
시스템 레지스트리 컴포넌트(402)는 글로벌 데이터 저장 기능을 제공한다. 이것은 아주 유용하며, 일례로, 시스템 레지스트리 프로세스(414)(도 4)로서 복수의 노드 중에서 복제된다. 그러나, 일실시예에서, 시스템 레지스트리는 도 5에 도시된 바와 같이 클러스터의 모든 노드보다 더 적게 복제된다. 도 5에 도시되어 있는 바와 같이, 노드(즉, 운영 시스템 인스턴스)(1, 2, 3)는 시스템 레지스트리 프로세스(500)를 포함하고, 노드(4-8)는 시스템 레지스트리 프로세스(500)를 포함하지 않는다. 그러나, 본 예에서, 모든 노드는 다른 코어(core) 클러스터 프로세스(예를 들면, DCM 프로세스, 라이브니스 프로세스, 그룹 서비스 프로세스, 리소스 관리자 프로세스)를 포함한다. 노드(4-8)는 레지스트리 클라이언트 노드로 간주되는 반면에, 노드(1-3)는 레지스트리 서버 노드로 간주되는데, 이는 레지스트리 기능이 이들 노드상에서 실행되기 때문이다.
라이브니스 컴포넌트(404)(도 4)는 통신 어댑터의 상태 및 클러스터 내의 노드들 간의 통신 경로의 이용가능성을 제공한다. 각각의 노드는 하나 이상의 통신 어댑터를 통하여 (도 5에 도시된 바와 같이) 통신 네트워크(502)에 접속된다. 임의의 그러한 어댑터는 접속 실패할 수도 있으며, 클러스터 노드를 상호접속하는 네트워크 내의 하나 이상의 통신 경로에 영향을 줄 수도 있다. 라이브니스 컴포넌트는 각각의 노드 내의 각각의 통신 어댑터로부터 하트비트라고 하는 주기적인 확인 메시지를 송신하는 클러스터의 하나 이상의 노드에서 프로세스를 실행한다. 노드 내의 라이브니스 프로세스의 콜렉션은 각각의 어댑터의 이용가능성에 대한 부분적인 정보에 대한 메시지를 교환하며, 이들 메시지를 통해 상기 라이브니스 시스템은 클러스터 시스템 내의 각각의 통신 어댑터의 상태와, 임의의 두 어댑터간의 통신 경로의 이용가능성을 논리적으로 추론할 수 있다.
그룹 서비스 컴포넌트(406)는 포괄적인 멤버쉽 서비스를 다른 컴포넌트에 제공한다. 이들 서비스는 2 단계 확약(commit) 프로토콜을 수행하는 기능을 포함하며, 자동 방송으로 지칭된다. 상기 서비스는 또한 그룹의 멤버들이 상기 그룹에 대한 멤버쉽을 제어할 수 있고 그룹 상태를 관리할 수 있는 기능을 포함한다. 그룹 서비스의 일례는 1998년 5월 5일에 허여된 미국 특허 제 5,748,958호의 "System For Utilizing Batch Requests To Present Membership Changes To Process Groups"에 개시되어 있으며, 상기 특허는 그대로 본원에 참조된다.
리소스 관리 컴포넌트(408)는 기본 통신 층을 핵심 클러스터 서비스 부분이 아닌 다른 클러스터 서비스(예를 들면, DCM, 시스템 레지스트리, 라이브니스, 그룹 서비스 및 리소스 관리자)에 제공한다. 이들 서비스는 후술하는 바와 같이 부가적인 리소스 제어기들의 카테고리 내에 있다. 일례로서, 상기 통신 프로토콜은 객체 지향형이다. 따라서, 리소스 관리 컴포넌트에 의해 제어되는 임의의 리소스 제어기는 상기 리소스 관리 컴포넌트에게 제어할 리소스 객체들을 정의하는 리소스 기술(description) 파일을 제공한다. 상기 정의는 속성들, 데이터 필드들, 각각의 리소스 제어기에 의해 지원되는 기능들의 집합으로 만들어진다.
상기 클러스터 아키텍처의 각각의 컴포넌트들은 아키텍처의 하나 이상의 다른 컴포넌트에 대한 하나 이상의 데이터 및/또는 함수적 의존성(dependencies)을 갖는데, 상기 아키텍처는 다양한 컴포넌트들 사이의 관계(예를 들면, 컴포넌트 간(intercomponent) 관계)를 규정한다. 이들 관계들은 본 발명의 한 측면에 따라서, 데이터 및 함수적 의존성이 비주기(acyclic) 그래프를 형성하도록 설계된다(즉, 의존성 관계들의 주기가 회피된다).
각각의 컴포넌트에 대한 데이터 의존성의 일례는 도 6에 도시되며, 아래에 더 설명된다.
(A) 시스템 레지스트리(System Registery) : 시스템 레지스트리는 시스템 레지스트리의 고유의 특성인 클러스터의 다른 컴포넌트에 대한 데이터 의존성(600)을 갖지 않는다. 시스템 레지스트리 그 자체는 모든 구성 데이터를 저장할 수 있다. 시스템 레지스트리 컴포넌트는, 의존성 그래프에서 잎(leaf)으로서 사용될 수 있으며, 따라서 어떠한 주기적인 관계도 회피할 수 있도록 설계된다. 시스템 레지스트리는 아주 유용한 방식으로 그 자신의 구성 데이터를 저장할 수 있는 능력을 갖는다. 시스템 레지스트리는 트랜잭셔널(transactional) 논리를 이용하여 요청이 전달되는 복제된 데이터 저장소로서 설계된다.
(B) 분산 구성 관리자(Distributed Configuration Manager)(DCM) : DCM 컴포넌트는 시스템 레지스트리에 글로벌 데이터를 저장하는 능력 외에, 각각의 모든 노드 상에 핵심적인 클러스터 구성 데이터의 로컬 버전을 국부적으로 저장하는 능력을 갖는다. 일례에서, 로컬 구성 데이터의 적어도 일부는 글로벌 데이터에 부합된다. 그러나, 어떤 경우에는, DCM 서브시스템에 의해 저장된 로컬 구성 데이터가 시스템 레지스트리 서브시스템에 포괄적으로(globally) 저장되는 데이터와 일치하지 않을 수도 있다. 이것은, 예를 들면, 노드가 일례로서 관리상의 이유로 클러스터로부터 분리되어 있는 동안 갱신을 놓치면 발생한다.
예를 들면, 노드가 고장나서 수리를 위해 보내질 수도 있다. 그 동안에, 클러스터된 시스템이 손상된 노드를 정의 해제하도록 결정할 수가 있으며, 따라서 정의 해제 노드 동작으로 글로벌 레지스트리로부터 그 정의를 삭제한다. 손상된 노드가 수리되어 클러스터에 다시 연결되면, 그 노드는 상기 클러스터에 정의 해제되어 있기 때문에 클러스터 리소스를 더 이상 공유할 수 없을 것이다. 그럼에도 불구하고, 최근에 수리된 노드 내의 로컬 클러스터 구성은 최신의 것이 아니며, 그 노드를 여전히 클러스터에 정의된 것으로 나타낸다. 그러한 경우를 검출하기 위하여, 모든 다른 클러스터 컴포넌트들에 대한 부트스트래핑 에이전트인 DCMD 데몬이 노드 조인 프로세스를 시작하기 전에 로컬 클러스터 정의의 타당성을 검사한다. 이것은 시스템 레지스트리 컴포넌트에 대한 DCMD 데몬의 데이터 의존성(602)을 생성한다.
(C) 나머지 핵심 클러스터 컴포넌트(The remaining core cluster components)(라이브니스, 그룹 서비스 및 리소스 관리)는, DCM에 의해 저장된 로컬 클러스터 구성을 이용하기 때문에, 분산 구성 관리자 컴포넌트에 대한 공통 데이터 의존성(604)을 갖는다. 예를 들면, 로컬 클러스터 구성은 노드명, 노드 번호, 레지스트리 서버 프로세스를 실행시키는 노드들의 리스트와 같은 부트스트래핑 정보를 포함하며, 상기 정보는 그 아키텍처 내의 클러스터 컴포넌트에 의해 사용된다. 시스템 레지스트리 컴포넌트 그 자체 외에, 상기 다른 컴포넌트들은 레지스트리 서버에 접속하여 글로벌 클러스터 구성을 검색할 수 있도록 노드들의 리스트를 사용한다.
(D) 시스템 레지스트리 그 자체를 제외한 모든 컴포넌트들은 글로벌 클러스터 구성에 대한 데이터 의존성을 갖는다.
각각의 컴포넌트의 함수적 의존성의 일례는 도 7에 도시되어 있으며, 이하에 보다 상세히 설명한다.
(A) 분산 구성 관리자(DCM) : DCM은 시스템 레지스트리 컴포넌트에 의해 제공되는 글로벌 저장 기능에 의존한다(참조 번호 700 참조).
(B) 시스템 레지스트리 : 시스템 레지스트리는 그룹 서비스 컴포넌트에 대한 함수적 의존성(702)을 갖는다. 상기 의존성은 시스템 레지스트리가 기록 동작을 전달하기 위해서 그룹 서비스 컴포넌트의 멤버쉽을 이용한다는 사실에 의해 발생한다. 글로벌 클러스터 구성 데이터는 레지스트리 서버 노드로서 작용하는 각각의 노드에서 복제되기 때문에, 그것에 대한 변형들은 복제된 기록 동작을 포함한다. 그러한 기록 동작 동안, 상기 복제들 중 하나가 고장이 날 위험이 있기 때문에, 복제된 동작의 분산된 복구를 위해 논리를 실행하는 것이 바람직하다. 그룹 서비스 컴포넌트에 의해 제공된 멤버쉽 서비스는 그러한 분산된 복구 논리의 일례를 포함한다.
그러나, 그룹 서비스 컴포넌트에 대한 함수적 의존성은 기록 동작에만 영향을 미친다. 시스템 레지스트리 컴포넌트는 판독된 유형의 동작에 대해 그룹 서비스 컴포넌트에 대한 의존성을 갖고 있지 않다. 따라서, 시스템 레지스트리 컴포넌트는 DCMD 컴포넌트에 의해 부트스트랩된 후 그것의 초기화(상세히 후술함)의 제 1 단계를 완료할 수 있다. 상기 단계가 완료된 후에, 시스템 레지스트리는 클러스터 구성 데이터베이스의 가장 최근에 갱신된 카피를 검색하여, 다른 컴포넌트들이 클러스터 구성 데이터를 판독하도록 할 수 있다. 이것은 그 다음에, 그룹 서비스 컴포넌트가 자신의 초기화를 완료하도록 할 수 있으며, 따라서 후술하는 바와 같이 시스템 레지스트리 컴포넌트가 초기화의 제 2 단계를 진행하도록 할 수 있다.
(C) 라이브니스 컴포넌트(Liveness Component) : 라이브니스 컴포넌트는 DCMD에 의해 부트스트랩되며(704 참조), 레지스트리에 라이브니스 서브 시스템의 구성을 저장한다(705 참조). 이것은 다른 컴포넌트에 대한 함수적 의존성은 갖지 않는다.
(D) 그룹 서비스 컴포넌트(Group Services Component) : 그룹 서비스 컴포넌트는 DCMD에 의해 부트스트랩된다(706). 그룹 서비스 컴포넌트는 또한 클러스터 내의 노드들 간의 통신 경로의 이용가능성을 알 필요가 있기 때문에, 라이브니스 컴포넌트에 대한 함수적 의존성(708)을 갖는다.
(E) 리소스 관리자 컴포넌트(Resource Manager Component) : 리소스 관리자 컴포넌트는 DCMD에 의해 부트스트랩된다(710). 리소스 관리자 컴포넌트는 또한 그룹 서비스 컴포넌트에 의해 전해진(exported) 그룹 멤버쉽 기능에 대한 의존성(712)을 갖는다. 리소스 관리자 컴포넌트는 리소스 관리자 컴포넌트의 구성 데이터베이스의 버전 번호를 결정하기 위해 멤버쉽 기능을 이용한다.
부가적인 리소스 관리자들이 또한 리소스 관리자 컴포넌트에 대한 함수적 의존성(716) 및 DCM에 대한 함수적 의존성(714)을 갖는다.
상기 컴포넌트들의 데이터 및/또는 함수적 의존성은 클러스터링 기법의 부트스트래핑 프로세스 동안 충족된다. 일례에서, 클러스터 부트스트랩 프로세스 동안 상기 의존성을 만족시키기 위해서 사건들 및 메시지들의 특정 시퀀스가 이용된다. 상기 시퀀스의 일례는 도 8에 도시되어 있으며, 여기서 설명된다.
단계 0에서, 부트스트래핑 시퀀스가 개시된다. 클러스터 아키텍처는 예를 들면, 운영 시스템에 의해 시작되는 소프트웨어의 층으로서 설계된다. 기본 운영 시스템 부트스트랩 프로세스 후에, 운영 시스템은 분산 구성 관리자 프로세스를 시작함으로서 클러스터 소프트웨어를 부트스트랩한다. DCMD 데몬이 그 다음에 시작되어 운영 시스템 인스턴스(instance)의 수명 동안 실행된다.
전술한 바와 같이, DCM은 각각의 노드(일례로서)의 논리 저장 장치에 저장된 데이터 구조의 집합을 관리한다. 데이터 구조는 예를 들면, 클러스터 데이터 구조(900)(도 9a), 노드 정의 데이터 구조(902)(도 9b), 레지스트리 서버 모드 데이터 구조(904)(도 9c)를 포함하며, 이들은 각각 후술된다.
클러스터 데이터 구조(900)는 예를 들면, 클러스터명(906)과 고유의 클러스터 식별자(908)를 포함한다. 일례에서, 고유의 식별자는 키 필드(고유 필드)로서 사용된다. 클러스터 데이터 구조 내의 키 필드는 운영 시스템의 각각의 인스턴스가 동일한 클러스터명들로 재분류되지 않도록 보호한다. 클러스터들은 종종 인간 관리자에 의해 생성되어, 다수의 프로세서의 구성 프로세스 동안 동일한 이름으로 쉽게 분류될 수 있다. 또한, 본원 명세서에 개시되어 있는 클러스터 구성의 하부구조(infrastructure)는 아주 동적이며, 따라서 클러스터의 생성 및 삭제가 가능하다. 클러스터는 분산 시스템의 필요에 따라 동적으로 생성 및 파괴될 수 있다. 후술하는 정의된 클러스터 동작으로 클러스터가 생성될 때 고유 식별자가 발생된다. 상기 특징으로 클러스터명의 재사용의 검출이 가능하다. 예를 들면, A로 분류된 클러스터가 생성, 삭제, 그리고 재생성되면, A의 이들 두 개의 정의에 대한 데이터 구조는, 고유 식별자 필드가 다르기 때문에, 상이할 것이다.
또한, 클러스터 정의 데이터 구조 내의 고유 식별자는 다른 클러스터 리소스의 맵핑의 루트에 있다. 상기 시스템에서, 클러스터 데이터 구조에 대한 고유 식별자는 클러스터 리소스 내의 라벨의 접두사에 있다. 고유 식별자 맵핑 및 본원 명세서에서 기술된 아키텍처를 이용하면 클러스터 리소스가 클러스터 구성의 잘못된 추정하에 있는 클라이언트에 의해 액세스되지 않도록 할 수 있다.
노드 정의 데이터 구조(902)는 예를 들면, 노드 번호(910)와, 인간 관리자가 보다 쉽게 노드를 식별할 수 있도록, 그러나 노드의 구성을 액세스하는 수단으로서 어떠한 클러스터 리소스 관리자에 의해서도 사용되지 않는, 편의상 사용되는 노드명(912)과, 노드의 정의를 식별하는 고유의 노드 식별자(914)를 포함한다. 고유 식별자는 특정 운영 시스템과 관련된다. 상기 식별자는 노드가 클러스터에 정의되도록 매회 생성된다. 상기 고유 식별자는 동일한 이름을 갖는 두 개의 노드를 구별할 수 있으며, 또한 클러스터에 정의된 노드와 정의되지 않았지만 그 다음에 동일한 이름으로 정의된(재 정의된) 노드를 구별할 수 있다.
레지스트리 서버 노드의 데이터 구조(904)는 클러스터에 정의되는 레지스트리 서버 노드들의 리스트를 포함한다. 일례에서, 상기 데이터 구조는 레지스트리 서버(916)의 순서가 매겨진 리스트와 주 레지스트리 서버(918)의 표시(indication)를 포함한다. 상기 리스트는, 후술하는 바와 같이, 시스템의 글로벌 구성 데이터를 판독하기 위해 시스템 레지스트리 프로세스에 대한 액세스를 희망하는 다른 클러스터 컴포넌트에 의해 검색된다.
상기 로컬 데이터 구조 외에, 각각의 클러스터 컴포넌트는 로컬 저장 데이터 구조를 관리하며, 각각의 컴포넌트는 로컬 노드와 관련된 정보를 저장하기 위한 공간을 확보한다. 로컬 데이터 구성의 일례는 도 10에 도시되어 있으며, 하기에 설명된다.
도 10에 도시된 데이터 구조는 UNIX 운영 시스템에서 본 발명의 특정 실시예로부터 유도되었지만, 다른 운영 시스템 내에 유사한 실시예를 구현할 수 있으며, 이는 본 발명의 정신을 벗어나지 않는다.
로컬 저장 데이터 필드의 일례는 다음과 같다.
1. "/"(1000)는 운영 시스템 내의 루트 파일을 나타낸다.
2. "/var"(1002)는 운영 시스템 확장과 관련된 데이터가 저장되는 파일 시스템이다.
3. 클러스터 논리는 로컬 구성 정보를 "/var/ct"(1004)에 저장한다.
4. "/var/ct/dcm" 디렉토리(1006)는 분산 구성 관리자 컴포넌트에 소속된다. 본 예에서, DCM 컴포넌트는, 다른 클러스터 컴포넌트들처럼 클러스터 ID 아래의 디렉토리에 그 자신의 데이터를 저장하는 것과는 대조적으로, 그 자신의 데이터를 저장하기 위한 더 높은 레벨 디렉토리를 갖는 유일한 컴포넌트이다. 이것은, 본 예에서, DCM이, 노드가 하나 이상의 클러스터에서 정의될 수 있음을 알고있는 유일한 클러스터 컴포넌트이기 때문이다.
5. "/var/ct/dcm/configuration" 디렉토리(1008)에서, DCM은 노드가 정의되는 클러스터들의 리스트를 저장한다. DCM은 또한 상기 디렉토리에 노드가 현재 속해있는 클러스터의 ID를 저장한다. 상기 ID는 어디서부터 로컬 구성 데이터를 판독할 것인지를 결정하기 위해 다른 클러스터에 의해 사용된다.
6. "/var/ct/dcm/logs" 디렉토리(1010)에서, DCM 컴포넌트는 회계 감사용으로서 런타임 로그(runtime log)를 저장한다.
7. 노드가 정의되는 각각의 모든 클러스터에 있어서, DCM은 "/var/ct" 하에 "/var/ct/cluster_ID" 디렉토리(1012)를 생성하며, 여기서 문자 "cluster_ID"는 후술하는 바와 같이, 고유 클러스터 식별자로 대체된다. 상기 디렉토리 하에서, DCM은 다른 클러스터 컴포넌트들이 또한 그들의 런타임 락(runtime locks)(1014), 런타입 로그(runtime logs)(1016), 런타임 핵심 정보(1018), 구성 데이터(1020)를 저장할 수 있는 네 개의 다른 디렉토리를 생성한다.
로컬 구성 데이터 외에, DCM은 또한 글로벌 구성 데이터를 저장한다. 서버 저장소에 저장되어 있는 글로벌 구성 데이터는 예를 들면, 클러스터 정의 데이터 구조의 카피 및 노드 정의 데이터 구조의 카피를 포함한다. 클러스터 데이터 구조 및 노드 정의 데이터 구조의 필드들의 값은 노드가 클러스터에 정의되는 시간에 설정되어 유지된다. 프로세싱 동안에, 로컬 데이터 구조의 데이터 필드는 글로벌 데이터 구조의 데이터 필드와 비교된다. 만약 상기 비교 결과가 상이하면, 이것은 노드 정의가 그 클러스터 내에서 더 이상 유효하지 않다는 것을 나타낼 수도 있다.
도 8에서, DCMD 프로세스가 개시된 후, DCMD 프로세스는 레지스트리 서버 노드로서 구성된 노드 및 시스템 레지스트리 프로세스를 개시한다(단계 1). 상기 단계는 시스템 레지스트리 컴포넌트의 부트스트래핑 요건을 만족한다.
단계 2-4에서, DCMD 데몬은 예를 들면, 클러스터의 모든 노드에서 라이브니스 컴포넌트, 그룹 서비스 컴포넌트 및 리소스 관리자 컴포넌트를 개시한다.
그 다음에, 단계 5에서, 시스템 레지스트리 서브시스템은 그것의 초기화의 1단계를 실행한다. 특히, 글로벌 구성 데이터베이스의 가장 최근에 입수한 카피를 검색하는 과정을 수행한다. 상기 단계에서, DCMD에 의해 부트스트랩된 시스템 레지스트리 프로세스들은 글로벌 구성 데이터베이스의 실현(incarnation) 번호를 포함하는 메시지를 교환한다. 그 다음에 상기 시스템 레지스트리 컴포넌트는 최고의 실현(incarnation) 번호를 갖는 구성 데이터베이스의 카피들을 선택한다. 상기 카피들은 후술하는 바와 같이, 컴포넌트의 초기화의 2단계로 진행할 수 있다.
초기화의 제 1 단계의 완료 후에, 시스템 레지스트리 컴포넌트는 다른 핵심클러스터 컴포넌트들이 그들의 초기화를 완료할 수 있도록 하는 판독 유형의 동작들을, 다른 컴포넌트들이 행할 수 있도록 한다. 즉, 제 1 초기화 단계가 완료된 후, 시스템 레지스트리 서브시스템은 이제 글로벌 클러스터 구성 데이터를 다른 클러스터 컴포넌트에게 서비스할 수 있다. 시스템 레지스트리 컴포넌트는 다른 컴포넌트들이 글로벌 구성 데이터를 판독할 수 있도록 하지만, 상기 글로벌 구성에 임의의 변경을 행하는 것을 허용하지는 않는다. 이것은, 글로벌 구성 데이터에 대한 임의의 변경은 기록 동작을 통해서 행해지기 때문이며, 시스템 레지스트리 컴포넌트는 기록 동작을 수행하기 위하여 그룹 멤버쉽 기능에 대한 의존성을 갖는다. 이런 이유로, 글로벌 클러스터 구성 데이터를 수정하는 어떠한 동작도 후술하는 시스템 레지스트리 초기화의 제 2단계의 완료를 기다릴 필요가 있다.
단계 6에서, DCMD는 시스템 레지스트리로부터 글로벌 클러스터 구성 데이터를 판독할 수 있다. 따라서, 단계 7에서, 각각의 노드에 저장하는 로컬 구성이 시스템 레지스트리에 저장된 글로벌 클러스터 구성과 일치하는지를 확인할 수 있다. 이 때, 시스템 레지스트리가 아직 동작을 기록할 수 없기 때문에, DCMD 컴포넌트는 아직 글로벌 클러스터 구성에 대해 어떠한 변화도 만들 수가 없다. 그러나, DCMD는, 로컬 구성이 글로벌 클러스터 구성과 일치하는지를 판정할 수 있으며, 따라서 클러스터 부트스트래핑 프로세스를 계속하여 궁극적으로 다른 의존성을 만족시키는 다른 컴포넌트들을 개시하여, 시스템 레지스트리는 그 초기화의 제 2 단계를 완료할 수 있으며 기록이 가능해진다.
단계 8에서, 라이브니스 컴포넌트는 글로벌 구성 데이터를 판독한다. 그러나, 먼저, 상기 라이브니스 컴포넌트는 시스템 레지스트리 서버의 위치를 알 필요가 있으며, 정보는 로컬 클러스터 구성에 있다. 따라서, 라이브니스 컴포넌트는 상기 정보를 검색하기 위하여 DCMD를 호출한다.
단계 9에서, 이전 단계와 유사한 절차로, 그룹 서비스 컴포넌트는 또한 DCMD 컴포넌트로부터 로컬 클러스터 구성 데이터를 검색한다.
단계 10에서, 라이브니스 서브시스템은 시스템 레지스트리 서버로부터 글로벌 구성 데이터를 판독함으로써 글로벌 구성 데이터에 대한 의존성을 만족시킨다. 또한, 단계 11에서, 라이브니스 컴포넌트는 이제 모든 의존성을 완료했으므로, 그것의 초기화를 마무리할 수 있으며, 다른 클러스터 컴포넌트에 대한 라이브니스 기능을 이용할 수 있다.
단계 12에서, 그룹 서비스 컴포넌트는 시스템 레지스트리로부터 글로벌 구성 데이터를 또한 판독할 수 있다. 단계 13에 도시된 바와 같이, 그룹 서비스 컴포넌트는 라이브니스 컴포넌트로부터 라이브니스 기능을 이용할 수 있다.
단계 14에서, 그룹 서비스 컴포넌트는 그 초기화를 완료하여 다른 클러스터 컴포넌트들에 대한 그룹 멤버쉽 기능을 이용할 수 있다.
단계 15에서, 시스템 레지스트리 컴포넌트는 시스템 레지스트리로 하여금 초기화 절차의 제 2 단계를 수행하도록 하는 멤버쉽 서비스의 요건을 만족시킨다. 상기 단계에서, 제 1 단계에 의해 결정된 더 낮은 실현 번호를 갖는 클로벌 구성 데이터베이스의 카피들은 그룹 서비스 컴포넌트에 의해 제공된 멤버쉽 서비스를 이용하여 갱신된다. 이것은, 시스템 레지스트리 컴포넌트가 그것의 초기화의 제 2 단계를 완료하도록 하며, 글로벌 클러스터 구성에 대해 발생되는 동작을 기록하도록 한다.
단계 16에서, 시스템 레지스트리 컴포넌트는 그것의 초기화의 제 2 단계를 마무리한다. 상기 단계가 완료되면, 시스템 레지스트리 컴포넌트는 복제된 기록 동작들을 수행하기 위하여 멤버쉽 서비스들을 이용할 수 있으며, 따라서, 다른 클러스터 컴포넌트들은 글로벌 클러스터 구성 데이터베이스에 대해 변형을 만들 수 있다.
단계 17에서, 리소스 관리자 컴포넌트는 DCMD 컴포넌트로부터 로컬 구성 데이터를 검색한다. 리소스 관리자 컴포넌트는 시스템 레지스터리로부터 글로벌 구성 데이터를 판독하여 그것을 원하는 대로 수정한다(단계 18).
또한, 단계 19에서, 리소스 관리자 컴포넌트는 그룹 서비스 컴포넌트의 멤버 서비스를 이용하여 그것의 구성 데이터베이스의 버전 번호를 결정한다. 리소스 관리자 컴포넌트는 이제 그것의 모든 데이터 및 완료된 요건들을 가지며 그 초기화를 완료했다(단계 20). 따라서, 리소스 관리자 컴포넌트는 그 외의 다른 구성 리소스 제어기들을 부트스트랩할 수 있다(단계 21).
부가적인 리소스 제어기들은 DCMD 컴포넌트로부터 로컬 클러스터를 판독하고(단계 22), 시스템 레지스트리로부터 글로벌 클러스터 구성을 판독한다(단계 23). 또한, 상기 부가적인 리소스 제어기들은 원하는 변형을 수행한다. 단계 24에서, 상기 부가적인 리소스 제어기들은 그들의 초기화를 완료한다.
상기 부트스트래핑 프로세스를 행한 후에, 모든 클러스터 컴포넌트들은 완전히 상기 모든 데이터를 이용할 수 있으며, 컴포넌트들의 기능 요건은 완료된다.
클러스터를 관리하기 위하여, 본 발명의 적어도 한 특징에 따른 다양한 정의 동작들이 이용된다. 이들 동작들은 예를 들어 다음 동작들을 포함한다.
(A) 새로운 클러스터 정의를 생성하는 정의 클러스터 동작. 특히, 상기 동작이 발생되는 노드 내의 로컬 클러스터 구성의 저장을 위하여 새로운 클러스터 식별자 및 새로운 로컬 저장 영역이 생성된다. 상기 새로운 로컬 저장 영역은 디렉토리 경로 내에 새로운 클러스터 식별자를 갖는 디렉토리 내에 위치된다. 상기 동작은 또한 새로운 글로벌 저장 영역을 생성한다. DCM 컴포넌트는 상기 동작이 레지스트리 서버 노드로서 발생되는 노드를 표시한다. 또한, 상기 프로세스에서, DCM 컴포넌트는 시스템 레지스트리 프로세스를 부트스트랩하고 전술한 바와 같이, 본원 명세서에서 정의된 글로벌 클러스터 데이터 구조를 생성한다.
(B) 정의 해제 클러스터 동작은 클러스터 정의를 삭제하는데 사용된다. 상기 정의 해제 클러스터 동작은 클러스터의 일부로 정의된 모든 노드 내의 로컬 클러스터 정의를 삭제한다. 상기 정의 해제 클러스터 동작은 또한 시스템 레지스트리 컴포넌트에 의해 관리되는 글로벌 클러스터 저장 장치의 모든 카피를 삭제한다.
(C) 수정 클러스터 동작은 클러스터 정의의 속성을 수정하는데 사용된다. 수정될 수 있는 하나의 속성으로는 클러스터명이 있다. 상기 속성은, 클러스터 컴포넌트들에 의해 내부적으로 사용되지 않기 때문에 수정될 수 있다. 클러스터명 대신에, 수정될 수 있는 하나의 속성으로는 클러스터의 식별을 위해 내부적으로 사용되는 클러스터 id가 있다.
(D) 정의 노드 동작은 클러스터에 대해 노드를 정의하는데 사용된다. 클러스터는 상기 정의 클러스터 동작에 의해 사전에 설정되어 있다. 새로운 로컬 저장 장치는 새롭게 정의된 노드 내에 생성된다. 또한, 글로벌 저장 영역 내에 저장되어 있는 클러스터 정의는 새로운 노드 정의로 갱신된다.
(E) 정의 해제 노드 동작은 글로벌 클러스터 구성 및 글로벌 저장 장치로부터 노드의 정의를 삭제하는데 사용된다. 또한 상기 정의 해제 노드 동작은 특정 클러스터의 노드의 정의와 관련된 노드 내의 로컬 기억 장치를 삭제한다.
(F) 정의레지스트리 서버 노드 동작은 클러스터 내의 특정 노드를 레지스트리 서버 노드로서 정의한다. 상기 동작 후, DCM 컴포넌트는 노드를 레지스트리 서버 노드로서 식별하고, 필요한 때에 노드 내의 상기 레지스트리 서버 프로세스를 부트스트랩한다.
(G) 정의 해제 레지스트리 서버 노드는 레지스트리 서버 노드로서 노드 정의를 제거하는 동작이다. 상기 동작 후에, 시스템 레지스트리 프로세스는 상기 노드 상에 더 이상 부트스트랩되지 않는다.
(H) 수정 노드 동작은 로컬 저장 장치 및 글로벌 클러스터 구성 내의 노드 정의의 속성을 변화시킨다. 변화될 수 있는 노드의 구성의 한 속성은 노드명이다.
상기 여러 가지 정의 동작 외에, 다양한 제어 동작들이 클러스터, 노드, 레지스트리 서버를 관리하는데 사용된다. 이들 동작들은 예를 들어 다음을 포함한다.
(A) 클러스터에게 정의될 것으로 알려진 다른 모든 노드들과 접속을 시도하기 위해 노드 내의 프로세스를 개시하여 이들이 온라인으로 이동할 것을 요청하는 온라인 클러스터 동작.
(B) 클러스터에게 정의될 것으로 알려진 모든 노드들과 접속하여 이들이 오프라인으로 이동할 것을 요청하는 오프라인 클러스터 동작.
(C) 특정 클러스터에 온라인으로 연결된 노드를 이동시키도록 DCM 프로세스에게 요청하는 온라인 노드(결합) 동작. 상기 요청은 DCM 컴포넌트로 하여금 클러스터 부트스트래핑 절차에서 전술한 동작의 시퀀스를 개시하도록 한다.
(D) 오프라인 노드 동작은 특정 노드가 오프라인으로 가도록 요청한다. 상기 동작은, DCM 컴포넌트에게 노드 상에서 실행되고 있는 다른 모든 클러스터 컴포넌트들을 중지시키도록 요청한다.
(E) 온라인 레지스트리 서버 동작은 DCM 컴포넌트에게 특정 노드 내의 시스템 레지스트리 프로세스를 부트스트랩하도록 요청한다.
(F) 오프라인 레지스트리 서버 동작은 DCM 컴포넌트에게 특정 노드 내의 시스템 레지스트리 프로세스를 중지시키도록 요청한다.
상기 정의 동작 및 제어 동작은 각각 클러스터를 관리하기 위해 이용될 수 있다. 하나 이상의 이들 동작들은 하기에 보다 상세히 설명된다.
본원에서 설명된 바와 같이, 본 발명의 한 측면에 따르면, 클러스터 아키텍처는 동작 시스템 인스턴스(즉, 노드)가 클러스터에 정의될 때 발생되는 고유 식별자를 이용한다. 상기 고유 식별자는, 클러스터 시스템의 구현에 의미있는 방법으로 발생된다(도 11 참조). 예를 들면, 단일 운영 시스템 컴퓨터(1100)에 있어서, 고유 식별자는 일례로서 시스템의 마더보드 내의 판독 전용 메모리(ROM)에 기억된 번호로부터 유도된다.
다수의 운영 시스템 컴퓨터(1102)에 있어서, 운영 시스템 인스턴스는 공지되어 있는 고유 식별자 발생 기법을 이용하여, 노드가 정의될 때 고유 식별자를 단지 발생할 수도 있다.
또한, 하드웨어부를 갖는 컴퓨팅 장치(1104)에 있어서, 운영 시스템의 신원은 단일 하드웨어부로부터 도출될 수 있다. 이러한 구현은 인증된 사용자의 식별을 위해 스마트 카드를 이용하는 장치와 같은 다양한 애플리케이션에서 의미가 있다.
식별자는 글로벌 구성 데이터베이스 및 로컬 구성 저장장치에 저장된다. 이들 두 유형의 저장 장치가 사용되기 때문에, 본 발명의 한 측면에 따르면, 어떠한 이유로 데이터가 시퀀스를 벗어나면, 데이터를 조정하도록 규칙들의 집합이 제공된다. 예를 들면, 시퀀스를 벗어난 데이터가 노드의 식별자이면, 규칙들의 집합이 식별자를 조정하도록 제공된다. 상기 특정 예는 하기에 보다 상세히 설명된다. 그러나, 유사한 규칙들이 다른 부합하는 데이터를 조정하는데 사용된다.
분산 클러스터 시스템은 상이한 시간에 통신 네트워크로부터 각각 분리될 수도 있는 기계들의 집합이므로, 운영 시스템의 인스턴스는 주어진 클러스터의 노드로서 그것이 정의되는 시간에 정의된다. 그러나, 운영 시스템의 인스턴스는 전력 공급 중지 또는 관리 동작으로 인해 정지될 수도 있으며, 정의되어 있지 않으면 주어진 클러스터의 멤버로서 자신을 인식할 수도 있다. 따라서, 노드가 클러스터에 결합될 때마다, 노드는 로컬 저장 장치 내의 고유 식별자가 그 노드에 대한 글로벌 식별자와 일치하는지 검사한다.
특히, 일실시예에서, 기본 운영 시스템의 기본 부트스트래핑 프로세스 동안 고유 식별자는 운영 시스템에 의해 판독된다. 그 다음에 상기 기본 운영 시스템은 클러스터 부트스트래핑 시퀀스의 시작시 고유 식별자를 분산 구성 관리자에게 전달한다. 분산 구성 관리자는 글로벌 저장장치(1106) 및 로컬 저장장치(1108)에서 클러스터에 정의될 때 상기 고유 식별자를 저장한다. 분산 구성 관리자가 노드를 클러스터에 결합하는 동작을 수행할 때마다, 분산 구성 관리자는 고유 식별자(즉, 부트스트랩 시퀀스 내의 운영 시스템에 의해 전달된(passed) 식별자로서, 본원에서는 원래의 카피(UID)(1110), 국부적으로 저장된(캐시된) 카피(1108), 광역으로(globally) 저장된 카피(1106)라고 함)의 세 개의 상이한 인스턴스들이 유효성을 검사한다.
노드가 클러스터와 결합하는 프로세스 동안 세 개의 식별자가 다음과 같이 비교된다.
1) 원래의 식별자는 로컬 식별자와 비교된다.
2) 로컬 식별자는 글로벌 식별자와 비교된다.
이들 비교는 아래에 도시되어 있는 네 개의 상이한 결과를 발생할 수도 있다.
그러면 분산 구성 관리자는 예를 들어 이들 시나리오 각각에 따른 다음의 액션을 채택한다.
시나리오 1 : 이 경우, 모든 식별자들은 동일하며, 따라서, 노드 정의는 올바르다. 이것은 정상적인 경우이다. 다른 세 가지 경우는 노드 정의에 영향을 미치는 관리(maintenance) 동작들과 같은 동작들의 결과로서만 존재한다.
시나리오 2 : 이 경우, 원래의 식별자는 로컬 식별자와 동일하지만, 로컬 식별자는 글로벌 식별자와 동일하다. 이것은, 노드가 클러스터에 접속되지 않는 동안 노드 정의가 삭제될 때 발생한다. 노드는 클러스터에 접속되지 않기 때문에, 노드 삭제 프로세스에 관여할 수 없다. 따라서, 로컬 데이터 구조는 노드가 삭제되는 효과를 갖도록 갱신되지 않는다. 노드에 대한 관리가 종료되고 노드가 재결합(rejoin)을 시도할 때, 상기 노드는 자신의 삭제를 통보하며, 따라서 노드가 특정 클러스터로부터 삭제되는 효과를 갖도록 로컬 데이터 정의를 완료할 수 있다.
시나리오 3 : 이 경우, 원래의 식별자는 로컬 식별자와 일치하고, 로컬 식별자는 글로벌 식별자와 일치한다. 따라서, 원래의 식별자는 예를 들면, 관리 동작에서 교체되었다. 이것은 원래의 식별자가, 교체되어야 하는 하드웨어 리소스으로부터 얻어질 때 발생한다. 상기 리소스들의 예로는 판독 전용 메모리(ROM)에 저장된 고유 식별자들을 갖는 마더보드 및 스마트 카드가 있다. 원래의 식별자가 저장되어 있는 하드웨어를 교체할 필요가 있거나 또는 교체하기를 원한다면, 시나리오 2 및 4에서와 같이 클러스터 논리가 이 경우를 부정확한 정의와 구별해야 한다. 이 경우, 논리 및 글로벌 식별자는 일치하는데, 이것은 노드 정의가 여전히 클러스터 내에서 유효하다는 것을 나타낸다. 따라서, 취해진 액션은 원래의 식별자가 교체되는 효과를 갖도록 상기 노드 정의를 수정하는 것이다. 따라서, 분산 구성 관리자는 로컬 및 글로벌 식별자를 새로운 원래의 식별자와 일치하도록 변경한다.
시나리오 4 : 이 경우, 원래의 노드 식별자는 로컬 식별자와 일치하지 않고, 로컬 식별자는 글로벌 식별자와 일치하지 않는다. 따라서, 노드에 두 개의 관리 동작이 행해진다. 노드가 클러스터로부터 분리되는 동안, 노드는 글로벌 구성으로부터 삭제되었으며, 원래의 식별자는 또한 교체되었다. 결정 인자는 글로벌 구성이 로컬 저장 장치 내의 최종 캐쉬된(cached) 값과 일치하지 않도록 되기 때문에, 이 경우는 시나리오 2와 유사하다. 따라서, 취해진 액션은 노드가 클러스터로부터 삭제되는 효과를 갖도록 로컬 데이터 정의를 완료하는 것이다.
일실시예에서, 시나리오 3과 같은 어떤 시나리오에서, 분산 클러스터 관리자는 원래의 식별자의 자동 수정을 행할 수 있는데, 이것은 클러스터를 식별하는 고유의 하드웨어가 관리 동작에서 교체되는 경우에 바람직한 효과이다. 이 특징은 예를 들면, 이전의 카드를 분실한 경우에 다른 스마트 카드가 사용될 수 있도록 할 수 있다. 상기 분산 구성 관리자는 글로벌 데이터베이스 내의 값을 참고함으로서 사전에 클러스터에 정의된 머신을 식별할 수 있다. 그러나, 시나리오 4에 도시된 것과 같이, 그 전에 클러스터에 정의되지 않은 머신에 새로운 카드가 사용되도록 하지는 않는다. 이 특징은 또한, 클러스터 정의 동작이, 클러스터에 정의되는 임의의 머신이 실행시키는 명백한 동작이기 때문에, 바람직하다.
다수의 클러스터 시스템으로서 노드를 유연하게 정의하고 클러스터를 결합(joining)하기 위한, 데이터 일관성 유지와 관련된 다른 상세는 이하에 설명된다.
로컬 구성 및 글로벌 클러스터 구성 데이터베이스에 변화가 발생하기 때문에, 두 저장소 내의 데이터는 일정하게 유지되기 때문에, 노드 정의 동작과 같은 동작이 자동 방식으로 행해진다(즉, 동작이 수행되어 완료되거나 중단된다). 동작이 중단되면, 두 저장소 내의 데이터는 클러스터링 아키텍처와 일치하는 상태로 돌아간다. 이것은 노드가 수차례 정의되었다가 정의되지 않을 수도 있으며, 정의 해제 동작이 발생할 때, 노드가 클러스터로부터 분리될 수도 있음을 고려한다.
클러스터에 대한 노드 정의의 일관성을 강화하기 위하여, 노드 정의 동작은 노드 정의 프로토콜에 노드 그 자체가 참여하도록 한다. 상기 동작 동안에, 노드의 고유 식별자는 노드가 정의되는 특정 클러스터에도 고유한 노드 번호와 관련된다. 그러나, 노드 번호는 모든 클러스터에 걸쳐 고유하지 않다. 따라서, 노드의 풀(pool)이 다수의 클러스터 전개(후술함)에 이용될 때, 노드는 각각의 클러스터 내에 동일하거나 상이한 수로 정의될 수도 있다. 그러나, 본 실시예에서, 노드는 특정 시점에서, 단지 하나의 클러스터 내에 온라인으로(활성) 될 수 있다.
노드 번호 식별자는 노드를 클러스터에게 알려주는 내부 식별자이다. 노드 정의 프로세스는 일실시예에서, 주어진 노드 번호가 원래 특정한 고유 식별자로 정의된 운영 시스템의 인스턴스와 관련됨을 보장한다. 노드 정의 프로세스의 더 이상의 상세는 도 12 및 13에 도시된 예를 참조하여 설명한다.
도 12에는 노드 정의 프로세스에 참여하는 세 개의 프로세스(예를 들면, 컴퓨터 프로그램), 즉, 레지스트리 서버로서 정의되는 클러스터(1204)의 하나 이상의 노드(1202) 내에 위치하는 시스템 레지스트리 서버 프로세스(1200)(도 12)와, 노드 정의 요청(1208)이 발생되는 노드 또는 동작의 루트가 지정되는 노드에서 실행되는 분산 구성 관리자(1206)(즉, 멤버 DCM 프로세스)와, 클러스터에 부가되는 노드 내에서 실행되는 분산 구성 관리자(1210)(즉, 비멤버(non-member DCM))가 있다. 이들 세 개의 프로세스들은 도 13을 참조하여 후술하는 바와 같이 정의 프로토콜에 참여한다.
단계 1에서, 정의 노드 요청이 멤버 DCM 프로세스로 전달된다. 일례에서는, 상기 요청이 정의될 노드의 노드(예를 들면, IP) 어드레스를 가지고 전달된다. 또한 고유 노드 식별자, 노드 번호, 노드명이 선택적인 파라미터로서 전달될 수도 있다. 분명히 설정되지 않더라도, 고유 식별자, 노드 번호, 노드명에 대한 값들이 멤버 DCM 프로세스에 의해 발생된다.
단계 1에서 얻어진 노드 어드레스는 멤버 DCM에 의해 이용되어 비 멤버 DCM 프로세스와 결합된다(단계 2). 상기 메시지에서, 멤버 DCM 프로세스는 클러스터 식별자를 비 멤버 DCM 프로세스에게 전달한다.
단계 3에서, 비 멤버 DCM 프로세스는 수신된 클러스터 식별자에 의해 식별되는 클러스터의 멤버로서 정의되는 요청을 수신한다. 비 멤버 DCM은 그것이 고유 클러스터 식별자에 의해 이미 정의된 로컬 구성을 갖고 있지 않은지를 검사한다. (위에서 논의한 일부 시나리오에서, 노드가 기존의 정의를 가질 가능성이 있다.) 비 멤버 DCM은 호스트 운영 시스템에 의해 전달된 그 자신의 고유 식별자를 가지고 상기 요청에 응답한다. 또한, 상기 비 멤버 DCM은 클러스터 ID에 대한 기존의 정의가 로컬 저장 장치에서 발견되었는지를 나타내는 상태코드를 상기 응답에 포함한다.
멤버 DCM은 비 멤버 DCM 노드의 고유 식별자를 포함하는 비 멤버 DCM으로부터 상기 응답을 수신한다(단계 4). 상기 멤버 DCM은 상기 값을 절약하고 노드 식별자가 글로벌 저장 장치에 보고되었는지를 검사한다(단계 5). 예를 들면, 멤버 DCM은 특정한 고유 식별자로 정의된 클러스터 내에 임의의 노드를 찾아내기 위해 시스템 레지스트리 프로세스에 대한 룩업 요청을 한다. 시스템 레지스트리는 단계 4에서 전달 고유 노드 식별자에 대응하는 가능한 노드 정의를 포함하는 메시지 또는 그러한 정의가 존재하지 않음을 나타내는 리턴 코드로 응답한다(단계 6).
단계 7에서, 멤버 DCM은 전술한 메시지를 수신한다. 만약 정의가 발견되면, 멤버 DCM은, 상기 정의가 비 멤버 DCM에 의해 보고된 것과 동일한지를 검사한다. 만약 이들 정의들이 동일하면, 메시지는 다시 노드 정의 요청자에게 전송되어 비 멤버 노드가 이미 클러스터에 정의되는 효과를 갖는다(정의 노드 요청은 실수로 발생되었고, 이 경우 "nonmember" 라벨은 적절치 않다). 정의들이 동일하지 않다면, 로컬 및 글로벌 정의들이 삭제되며 정의 노드 프로세스가 계속된다. 나머지 가능성은 비 멤버 노드가 글로벌 클러스터 구성에서 발견될 수 없는 로컬 정의를 보고하는 것이다. 이 경우, 정의들이 일치하지 않는 경우에서와 같이, 비 멤버 DCM은 이전의 정의를 삭제하도록 요청받는다.
단계 8에서, 멤버 DCM은 시스템 레지스트리가 새로운 노드에 대한 엔트리를 만들 것을 요청하여, 상기 새로운 노드에 대하 엔트리에 단계 1에서 원래 주어진 고유 노드 식별자, 노드 번호, 노드명 및 노드 어드레스를 전달한다. 시스템 레지스트리는 전술한 엔트리를 글로벌 클러스터 구성에 넘기고 메시지를 다시 멤버 DCM에 전송하여 동작의 성공을 통보한다(단계 9).
단계 10에서, 멤버 DCM은 상기 메시지를 수신한다. 동작이 성공적이지 못하면, 노드 정의 프로세스는 중단되고, 프로세스 실패 메시지가 다시 노드 정의의 요청자에게 전송된다. 멤버 DCM은 비 멤버 DCM에게 새로운 노드 정의를 로컬 저장 장치로 넘길 것을 요청하고, 적당하다면 임의의 이전의 정의를 삭제하도록 요청한다.(단계 11).
단계 12에서, 비 멤버 DCM은 전술한 요청을 수행하고, 요청된 동작의 성공을 알리는 메시지를 다시 멤버 DCM에게 전송한다. 멤버 DCM은 상기 메시지를 수신한다(단계 13). 만약 비 멤버 DCM에 의해 보고된 결과가 실패이면, 멤버 DCM은 정의 동작을 중단하고 노드 정의 동작의 요청자에게 실패를 보고한다. 멤버 DCM은 또한 단계 8에서 행해진 글로벌 저장 장치에서의 정의를 삭제하려고 한다. 그렇지 않으면, 프로세스는 계속된다.
멤버 DCM 프로세스는 노드 정의 동작을 성공적으로 완료한 후 동작의 성공을 알리는 메시지를 요청자에게 반환한다(단계 14).
노드를 클러스터에 정의한 후, 노드는 예를 들어 본 발명의 자동 클러스터 구성 기법을 이용하여 시스템 관리자측에 어떠한 부가적인 액션도 요청하지 않고 클러스터에 삽입(조인)될 수 있다. 이 기법은 예를 들면, 노드 정의 바로 다음에 또는 온라인 노드 요청이 발생되는 때에 개시될 수도 있다.
자동 클러스터 구성 기법의 일실시예는 도 14 및 15를 참조하여 설명한다. 특히, 도 14는 상기 기법에 의해 사용된 여러 프로세스의 일례를 도시하고 있으며, 도 15는 프로세스들 간에 전송되는 메시지의 일례를 도시하고 있다.
도 14에서, 예를 들어 온라인 노드 요청(1400)에 따라서 클러스터에 새로운 노드를 구성하는 액션은 새로운 노드(1404) 상의 DCM 프로세스(1402)에 의해 조정된다. 이것은, 클러스터 내의 다른 프로세스들이 처음으로 클러스터와 결합할 때까지 노드의 구성에 대해 어떠한 정보도 갖고 있지 않기 때문이다.
노드 정의시, 최소한의 데이터량만이 새로운 노드와 클러스터(도 15의 단계 1) 사이에서 교환된다. 교환된 데이터는 새로운 노드에 대한 고유 식별자의 보증과 관련되며 또한 레지스트리 서버(1406)의 리스트의 기초가 된다. 로컬 식별자/노드 번호 쌍은 글로벌 저장소의 식별자/노드 쌍과 비교된다. 상기 비교가 성공하면, 결합이 계속될 수 있다.
새로운 노드가 클러스터와 결합하도록 요청되면(도 15의 단계 2), 새로운 노드 상의 DCM은 새로운 노드 내의 리소스 관리자(1408)에게, 시스템 레지스트리(1412) 에 그들의 구성을 기록하도록 리소스 제어기들(1410)에게 메시지를 전송(도 15의 단계 4)할 것을 요청한다(도 15의 단계 3). 상기 프로세스는 노드가 클러스터와 결합할 때마다 반복되어, 노드 구성의 자동 갱신이 이루어질 수 있도록 한다.
그 다음에, 리소스 제어기들은 그들이 제어하는 리소스(예를 들면, 하드웨어)에 대한 구성으로 시스템 레지스트리를 갱신하고(도 15의 단계 5), 새로운 노드 상의 리소스 관리자에게 갱신 완료를 통보한다(도 15의 단계 6). 그러면 리소스 관리자 프로세스는, 등록되는 리소스 제어기의 상기 동작에 대한 완료 상태를 수신할 때, DCM에게 통보한다(도 15의 단계 8)
새로운 노드 상의 DCM 프로세스는 리소스 관리자로부터 갱신 완료를 수신하고, 결합 프로세스를 계속한다.
유사한 액션으로, 클러스터(1416) 상의 시스템 레지스트리 프로세스(1414)는 사건 예약자에 의해 수신될 수 있는 사건을 송신하여(도 15의 단계 7), 상기 구성이 갱신되는 효과를 갖는다. 처음으로 클러스터에 노드를 부가하는 경우, 상기 사건은 다른 클러스터 컴포넌트들이 클러스터 멤버로서 새로운 노드를 인식하게 할 수도 있다.
상기 절차는 노드가 시스템 관리자로부터 어떠한 정보도 요청하지 않고 클러스터의 멤버로서 자신을 구성하도록 할 수 있다. 관리자는 일례에서, 노드 정의 절차를 위해 노드 어드레스만 공급한다. 노드 정의 절차동안, 레지스트리 서버의 리스트가 새로운 노드의 근원이 된다. 새로운 노드가 클러스터와 결합하도록 요청되면, 상기 새로운 노드는 레지스트리 서버의 리스트를 이용하여 작동중인 시스템 레지스트리 프로세스를 찾아낸다. 그러면, 새로운 노드 상의 리소스 제어기는 그들이 제어하는 리소스의 구성을 발견하여 글로벌 클러스터 구성 데이터베이스 내에 상기 정보를 기록하도록 요청받는다. (리소스 제어기는 특정 리소스들이 기록되고 그들의 구성을 발견하는 방법을 아는 프로세스이다.) 바람직하게는 상기 동작이 새로운 노드에 의해 개시되며, 상기 정보를 수동으로 제공할 것을 시스템 관리자에게 요청하지 않는다.
일례에서, 상기 절차는, 노드의 구성이 글로벌 저장소와 부합하도록 노드가 클러스터에 결합될 때마다 반복된다. 예를 들면, 상기 절차에서, 시스템 관리자는 클러스터로부터 노드를 분리하고, 새로운 통신 어댑터와 같은 몇몇 하드웨어를 부가하고, 상기 노드의 구성을 변경시켜, 노드가 클러스터로부터 오프라인을 있는 동안 행해진 임의의 변경들을 클러스터에게 통보하지 않고 변경된 노드를 클러스터에게 재접속한다.
본 발명의 적어도 한 측면에 따르면, 컴퓨팅 환경은 그 내에서 하나 이상의 정의된 클러스터를 가질 수 있다. 예를 들면, 컴퓨팅 환경(1600)(도 16)은 클러스터 A(1602) 및 클러스터 B(1604)를 포함한다. 각각의 클러스터는 그 클러스터에 정의된 하나 이상의 노드(1606)를 갖는다. 또한, 도 16에 도시된 바와 같이, 하나 이상의 노드가 두 클러스터에 정의될 수도 있다.
각각의 클러스터는 그 클러스터와 관련된 하나 이상의 레지스트리 서버를 갖는다. 예를 들면, 클러스터 A는 레지스트리 서버(1608)를 가지며, 클러스터 B는 레지스트리 서버(1610)를 갖는다. 레지스트리 서버(1608)는 하나 이상의 서버 노드(1612)를 포함한다. 마찬가지로, 레지스트리 서버(1610)는 하나 이상의 서버 노드(1614)를 포함한다. 한 레지스트리 서버들의 집합 중에서 하나 이상의 서버 노드는 다른 레지스트리 서버 집합 중에서 하나 이상의 노드와 중복할 수 있다.
본 발명의 다른 측면에서, 노드는 하나의 클러스터로부터 다른 클러스터로 신속히 이동될 수 있다. 상기 능력에 의해 클러스터가 임의의 주어진 순간에 경험하고 있는 작업부하(workload) 사이에 노드들을 이동시킬 수 있다. 예를 들어, 웹 서빙 및 데이터 서비스와 같은 두 개의 상이한 애플리케이션에 사용되는 노드들의 풀(pool)을 갖는 엔터프라이즈를 고려해 보자. 본 발명의 클러스터링 기법을 이용하면, 엔터프라이즈는 두 개의 클러스터, 즉, 각각 하나의 애플리케이션 전용인 클러스터 A 및 클러스터 B를 정의할 수 있을 것이다. 이제, 이들 애플리케이션들 내의 작업부하가 낮 시간에 따라서 가변하며, 웹 서빙은 낮 동안에 보다 활동적이고 데이터베이스 서비스는 밤 동안에 보다 활동적이라고 가정해 보자. 상기 엔터프라이즈는, 클러스터 B의 부하가 더 클 때 클러스터 A로부터 클러스터 B로 이동시키고자 할 것이며, 그 역 또한 마찬가지일 것이다.
통상적인 클러스터링 시스템에서, 시스템 관리자는 먼저 클러스터 A 내에서 노드를 오프라인으로 이동시키고, 그 다음에 클러스터 A 내의 노드를 정의하지 않고, 그 다음에 클러스터 B로 상기 노드를 정의하고(항상 많은 수동 구성을 요청함), 그 다음에 클러스터 B 내에서 상기 노드를 온라인으로 이동시킨다. 통상적인 시스템은 수동 중재를 포함하며 아주 많은 시간을 소모한다. 작업부하 균형 애플리케이션(workload balancing applications)을 고려할 때, 노드를 이동시키는 프로세스에 걸리는 시간은 아주 중요한데, 왜냐하면, 통상적으로 작업부하는 매우 동적인 양이며, 밤과 낮 사이에서뿐만 아니라, 본 예에서는, 몇 분(minutes) 사이에서도 변화하기 때문이다. 따라서, 작업부하 균형 애플리케이션에서 값을 갖기 위해서는 하나의 클러스터로부터 다른 클러스터로 이동하는 동작은 아주 신속해야 한다.
따라서, 본 발명의 한 측면에 따르면, 클러스터 정의의 중복을 허용함으로서, 노드는 하나의 클러스터로부터 다른 클러스터로 신속히 이동된다. 즉, 일실시예에서는, 노드가 임의의 특정 시점에서 단일 클러스터에서만 활동적이지만, 노드는 하나 이상의 클러스터에 정의되도록 허용된다.
노드가 클러스터에 정의될 때, DCM은 노드가 정의된 클러스터에 대한 로컬 구성을 유지하는 특정 저장 영역을 만든다. DCM 컴포넌트는 상기 로컬 저장 영역에 로컬 클러스터 구성을 저장한다. 로컬 클러스터 구성에 저장된 값들 중에는 예를 들면, 클러스터명, 클러스터 id, 노드명, 노드 id 및 특정 클러스터를 위한 레지스트리 서버의 리스트가 있다. 다른 예로서, DCM은 또한 로컬 저장 장치 내에 다음의 두 필드, 즉, 노드가 현재 온라인인 클러스터의 식별자(id)를 포함하는 현재의 클러스터 포인터와, 노드가 이동하고 있는 클러스터의 id를 포함하는 목표 클러스터 포인터를 유지한다.
이들 포인터들의 값은 하나의 클러스터로부터 다른 클러스터로 노드를 이동시키는 동작 동안만 상이하다. 노드를 어떤 클러스터로 이동시키기 위해, 그 클러스터에 대한 적어도 하나의 레지스트리 서버 노드가 온라인되어야 한다. 노드를 이동시키기 위하여, DCM은 목표 클러스터 포인터를, 노드가 결합되는 클러스터를 지시하도록 이동시키고 나서, 재생(refresh) 신호를 이동하고 있는 노드에서 실행되는 다른 클러스터 컴포넌트들에게 전송한다. 컴포넌트에 의해 재생 신호가 수신되면, 컴포넌트는 그 신호의 구성을 재생한다. 즉, 컴포넌트는 글로벌 클러스터 저장소로부터 다시 그 구성을 판독한다. 상기 저장소에 도달하기 위해, 컴포넌트들은 특정 클러스터에 정의되는 레지스트리 서버의 리스트를 검색한다. 이동되는 노드 내의 레지스트리 서버의 리스트를 검색하는 프로세스는 후술하는 바와 같이, 어느 리스트를 이용할지를 결정하기 위해 목표 클러스터 포인터를 이용한다.
하나의 클러스터로부터 다른 클러스터로 이동하는 노드와 관련된 논리의 일실시예를 도 17 및 18을 이용하여 설명한다. 도 17에서 점선으로 된 화살표는 클러스터 A의 구성에 대한 시스템 컴포넌트의 이전의 접속(이들 둘은 로컬 및 글로벌)을 나타낸다. 이동 프로세스 동안, 상기 화살표들은 클러스터 B의 구성을 지시하는 실선 화살표로 치환된다.
단계 1(도 18)에서, 노드를 다른 클러스터로 이동시키기 위한 요청(1700)(도 17)이 이동될 노드 상의 DCM 프로세스(1702)로 전송된다. DCM 프로세스는 상기 노드를 이동시시기 위한 요청을 수신하고(도 18의 단계 2), 목표 클러스터 포인터(1704)의 값을 변경시켜, 노드가 이동될 클러스터의 클러스터 ID를 포함한다. 이동되는 노드에 대한 DCM 프로세스는 재생 메시지(도 18의 단계 3)를 그 노드 상에서 실행되는 다른 클러스터 컴포넌트(1706)로 전송한다.
다른 클러스터 컴포넌트들은 레지스트리 서버들(1708)의 리스트를 검색하여, 글로벌 클러스터 구성(1710)을 판독할 수 있다. 상기 리스트는 목표 클러스터 포인터에 저장된 클러스터 ID를 특정 클러스터에 대한 레지스트리 서버의 리스트와 관련시키는 맵핑을 이용하여 검색된다. 그 다음에, 다른 클러스터 컴포넌트들은 전 단계에서 수신된 레지스트리 서버들의 리스트에 리스트된 레지스트리 서버를 이용하여 글로벌 레지스트리에 저장되는 그들의 특정 구성을 요청한다(도 18의 단계 5).
레지스트리 서버는 이동되는 노드 내의 다른 클러스터 컴포넌트들에게 목표 클러스터 내에서의 그들의 역할을 위한 적절한 구성을 제공한다(도 18의 단계 6). 이동되는 노드 상의 다른 클러스터 컴포넌트들은 그들이 상기 이동 동작을 완료했으며, 현재 목표 클러스터에서 온라인 상태임을 DCM 프로세스에게 통지한다(도 18의 단계 7).
DCM은 노드가 다른 클러스터로 성공적으로 이동했다는 사실을 반영하도록 현재의 클러스터의 값을 변경한다(도 18의 단계 8). 만약, 클러스터 컴포넌트들 중 어느 하나가 재생 동작을 수행하는데 실패하면, DCM은 노드를 다시 현재의 클러스터 포인터의 이전의 값으로 이동시키고, 또한 목표 클러스터 포인터의 값으로 복귀하며, 상기 이동의 효과를 효과적으로 취소하는 재생 매시지를 재발생한다. 이어서, DCM 프로세스는 요청자에게 동작의 결과의 이동 동작을 통보한다(도 18의 단계 9).
모든 컴포넌트들이 재생 동작을 완료하였으며 성공적으로 클러스터 B에 온라인되어 있음을 DCM에게 다시 보고하면, 현재의 클러스터 포인터는 클러스터 B를 지시하도록 이동된다. 노드가 어떠한 이유로 클러스터 B와 결합할 수 없으면, 현재의 클러스터 포인터 내에 지정되는 클러스터로 다시 복귀한다.
상기 절차는 하나의 클러스터로부터 다른 클러스터로 노드의 신속한 이동을 가능하게 한다. 그러한 신속한 이동이 가능한 이유는 상기 아키텍처가 복수의 클러스터에서 노드가 정의되도록 허용한다는 사실에 기인한다.
클러스터 아키텍처의 다양한 컴포넌트들은 메시지를 송신 및 수신하고 전체로서 시스템 통신 트래픽의 원인이 된다. "시스템 통신"이라는 용어는 본원 명세서에서 클러스터링 논리 그 자체에 의해 생성되는 기준 네트워크 트래픽에 사용되며, 클러스터된 시스템에서 실행되는 애플리케이션에 의해 발생된 트래픽인 서비스 트래픽과 반대된다. 예를 들면, 시스템 트래픽은 각각의 모든 노드 상의 피어(peers)에게 주기적인 확인 메시지를 전송하는 라이브니스 서브시스템에 의해 발생되는 네트워크 트래픽을 포함한다. 다른 실시예는 클러스터의 글로벌 구성을 다른 컴포넌트들에게 전송하는 시스템 레지스트리 컴포넌트에 의해 발생되는 네트워크 트래픽을 포함한다. 클러스터 시스템의 통상적인 배치에서, 하나 이상의 상호접속 네트워크가 이용되어 노드들 간에 복수의 통신 경로가 발생한다. 따라서, 시스템 트래픽이 특정 통신 경로로 한정될 수 있는 시스템 관리자에게 편의를 제공하여, 그 시스템 내에서 구동되는 다른 애플리케이션들과 간섭하지 않는 것이 바람직하다.
본 발명의 한 측면에 따르면, 클러스터링 논리에 의해 발생된 네트워크 트래픽을 제어하기 위하여, 클러스터 아키텍처는 네트워크 객체들을 정의한다. 시스템 트래픽을 발생하는 각각의 클러스터 컴포넌트는 그러한 트래픽에 사용되는 네트워크 객체들에 대한 선호(preferences)를 지정한다. 예를 들면, 클러스터는 각각의 네트워크가 하나 이상의 서브 네트워크를 포함하고, 각각의 서브네트워크가 하나 이상의 노드를 포함하는 하나 이상의 네트워크를 포함할 수도 있다.
전술한 바와 같이, 노드는 정의 노드 동작에 의해 클러스터에 정의된다. 이와 유사하게, 서브네트워크 객체는 정의 서브네트워크 동작에 의해 정의된다. 서브네트워크는, 새로운 통신 어댑터가 그 노드가 어떠한 현존하는 서브네트워크 객체에도 맵핑되지 않는 클러스터에서 발견되었다는 통지를 수신하면, DCM 프로세스에 의해 함축적으로 정의된다. 또한, 정의 해제 서브네트워크 동작은 글로벌 클러스터 구성으로부터의 서브네트워크 정의를 삭제하고, 수정 서브네트워크 동작은 서브네트워크 정의의 속성을 수정한다. 수정될 수 있는 속성들은 예를 들면, 서브네트워크명과, 서브네트워크가 맵핑되는 네트워크 정의를 포함한다.
유사하게, 정의 네트워크 동작은 하나 이상의 서브네트워크 정의로 맵핑되는 네트워크 정의를 생성하고, 정의 해제 네트워크 동작은 글로벌 클러스터 데이터베이스로부터 네트워크 정의를 삭제한다. 또한, 수정 네트워크 동작은 네트워크 정의의 속성들을 수정하는데 이용된다. 변경될 수 있는 하나의 속성은 예를 들면, 네트워크명을 들 수 있다.
각각의 노드, 서브네트워크, 네트워크는 후술하는 바와 같이, 적어도 하나의 대응하는 데이터 구조에 의해 정의된다. 이들 데이터 구조들은 예를 들면, 글로벌 저장소에 저장된다.
일실시예에서, 각각의 노드는 하나 이상의 노드 어드레스 정의 데이터 구조들로 표현된다. 일례에서, 노드 어드레스 정의 데이터 구조(1900)(도 19)는 노드 어드레스 데이터 정의의 제 1 키 필드로서 사용되는 고유 식별자(1902)를 포함한다. 상기 고유 식별자(1902)는 본원 명세서에서 설명한 바와 같이, 노드 어드레스 객체가 생성되는 시간에 발생된다. 상기 노드 어드레스 정의 데이터 구조(1900)는 또한, 노드에 도달하는데 사용된 노드 인터페이스의 노드 어드레스를 포함하는 노드 어드레스(1904)(보다 상세히 후술함)와, 클러스터 시스템의 특정 서브네트워크에 노드 어드레스를 맵핑하는데 사용되는 서브네트워크 마스크(1906)와, 필드(1904) 내의 노드 어드레스와 관련되는 노드의 번호를 포함하는 노드 번호(1908)를 포함한다.
상기 노드 어드레스도 고유한 제 2 키 필드이다. 상기 노드 어드레스는, 분산 구성 관리자 컴포넌트가 동일 노드 어드레스를 갖는 두 개의 노드 어드레스의 정의를 허용하지 않기 때문에 유일하다. 본원 명세서에 기술된 예에서, 어드레스는 인터넷 프로토콜(IP) 어드레스인데, 그것은, 본 발명의 특징들의 하나의 특정한 구현에서 인터넷 프로토콜이 노드들 간의 통신 수단으로서 사용되기 때문이다. 그러나, 당업자라면 다른 통신 프로토콜이 이용될 수 있음을 이해할 것이다. 어떠한 경우든, 노드가 선택된 프로토콜을 이용하여 도달될 수 있도록 각각의 노드에 대해 식별되는 적어도 하나의 어드레스가 있어야 한다. 하나 이상의 통신 프로토콜이 이용되면, 그 프로토콜 유형은 노드 어드레스 정의의 부가적인 필드일 수도 있다.
본 발명의 특징에 따르면, 각각의 노드 어드레스 정의는 서브네트워크 정의로 맵핑된다. 서브네트워크 정의 데이터 구조의 일례는 도 20을 참조하여 설명한다.
일례로서, 서브네트워크 정의 데이터 구조(2000)는 예를 들면, 서브네트워크 정의의 고유성을 제공하는 고유 식별자(2002)와, 본 특정 실시예에서 서브네트워크의 프리픽스를 식별하는 노드 어드레스를 포함하는 서브네트워크 프리픽스(2004)와, 서브네트워크 프리픽스내의 얼마나 많은 비트가 관련되는지를 나타내는 비트 마스크인 서브네트워크 마스크(2006)와, 서브네트워크 정의를 기존의 네트워크 정의로 맵핑하는 네트워크명(2008)을 포함한다.
본 실시예에서, 서브네트워크 객체는 IP 프로토콜이 그들의 컴퓨터가 상호접속되도록 지시하는 방법으로부터 도출된다. 예를 들면, IP 네트워크에서, 노드는 IP 어드레스 및 서브네트워크 마스크로 구성된다. 동일 서브네트워크에 접속된 모든 노드들은 동일한 프리픽스를 갖는 어드레스를 가지며, 상기 프리픽스의 길이는 서브네트워크 마스크에 의해 결정된다. 여기에 도시된 실시예는 IP 네트워크의 상기 특징을 이용하여 그룹들 내의 노드 어드레스들을 분류하며, 이 경우, 각각의 그룹은 동일 서브네트워크 내에 있는 모든 노드들을 포함한다. 상기 서브네트워크들은 네트워크 정의들로 맵핑되어 있으며, 클러스터 트래픽의 지정(routing)은 후술하는 바와 같이, 네트워크 객체들의 파라미터들을 수정함으로서 제어된다.
네트워크 정의 데이터의 일례는 도 21에 도시되어 있다. 네트워크 정의 데이터 구조(2100)는 예를 들어, 네트워크 정의의 고유성을 제공하는 고유 식별자(2102)와, 서브네트워크 객체들을 네트워크 객체들로 맵핑하는데 사용되는 네트워크명(2104)과, 다양한 클러스터 서비스들에 대한 전송 요청에 사용할 네트워크의 결정에 사용된 값들의 표를 나타내는 서비스 지정 표(2106)를 포함한다. 서비스 지정 표는 예를 들면, 시스템 트래픽을 발생시키는 클러스터 컴포넌트들의 이름과, 그러한 서비스에 대한 상기 네트워크의 이용 순위를 포함한다.
예를 들면, 클러스터는 세 개의 네트워크 객체들, 즉, A, B, C로 정의될 수도 있다. 클러스터 컴포넌트는 시스템 레지스트리로부터 글로벌 구성을 판독하기를 원한다고 가정한다. 상기 클러스터 컴포넌트는 특정 클러스터에 대한 레지스트리 서버의 리스트를 검색한다. 본 예에서는, 상기 리스트가 1, 2, 3으로 분류된 세 개의 어드레스를 포함한다. 그러면, 상기 클러스터 컴포넌트는 시스템 관리자에 의해 설정되는 특성들에 따라서, 사용할 하나의 어드레스를 선택한다. 그러면, 상기 컴포넌트는 서비스 노드 어드레스(이것은 레지스트리 서버의 리스트 내에 리스트되어 있다)를 맵핑하는 후술하는 맵핑을 따른다.
상기 예에서, 어드레스 1은 네트워크 A, 어드레스 2는 네트워크 B, 어드레스 3은 네트워크 C로 맵핑된다. 이제, 상기 컴포넌트는 사용하고자 하는 서비스를 가리키는 각각의 네트워크 객체의 서비스 지정 테이블에 저장된 순위 값을 판독한다(예를 들면, 서비스 레지스트리). 이들 값들은 그 시스템에 대한 기호에 따라서, 시스템 관리자에 의해 설정된다. 본 예에서, 시스템 레지스트리 순위에 대한 값은 네트워크 A에서 3, 네트워크 B에서는 2, 네트워크 C에서는 1이라고 가정한다. 최고 순위 번호는 네트워크 A에서 나타나므로, 컴포넌트는 네트워크 A(위에서 1로 분류되었음)로 맵핑되는 어드레스를 먼저 이용하여 시스템 레지스트리 컴포넌트에 도달하고자 한다. 이 때, 상기 도달 시도가 실패하면, 컴포넌트는 네트워크 B로 맵핑되는 어드레스를 이용하려고 하며, 마지막으로 네트워크 C로 맵핑되는 어드레스를 이용하고자 한다.
클러스터 서비스의 클라이언트가 서비스에 대한 특정 어드레스를 선택하는 방법과 관련된 더 이상의 상세는 도 22에 도시된 예를 참고하여 설명한다.
일실시예에서, 처음에, 클라이언트는 서비스가 위치하고 있는 가능한 어드레스들의 리스트를 검색한다(도 22의 단계 2200). 어드레스들의 리스트가 검색되는 방법은 각각의 서비스에 있어서 상이하다. 시스템 레지스트리의 경우, 레지스트리 서버 노드들의 리스트가 로컬 구성 파일로부터 검색된다. 다른 서비스들은 예를 들면, 글로벌 클러스터 구성 내에 노드 어드레스들의 리스트를 발행할 수도 있다.
노드 어드레스들의 리스트를 획득한 다음, 클라이언트는 글로벌 클러스터 구성에 저장된 노드 어드레스 정의 데이터 구조 내의 각각의 노드 어드레스를 찾아낸다. 각각의 어드레스에 대하여, 클라이언트는 노드 어드레스 및 서브네트워크의 논리 AND 연산을 행하여(도 23 참조), 각 어드레스에 대한 결과의 서브네트워크 id를 획득한다(도 22의 단계 2202).
그 다음에, 클라이언트는 각각의 어드레스에 대한 서브네트워크 객체를 검색하고(단계 2204), 각각의 서브네트워크 객체에 대하여, 클라이언트는 서브네트워크와 관련된 네트워크명을 검색한다(단계 2206).
이어서, 클라이언트는 서비스 어드레스가 맵핑되는 각각의 네트워크를 검색한다(단계 2208). 클라이언트는 그 다음에 각각의 네트워크 객체에 저장되어 있는 서비스 지정 표로부터 서비스 순위 번호들을 판독한다(단계 2210). 그 다음에, 클라이언트는 네트워크 객체들 내의 시스템 관리자에 의해 설정된 우선 순위에 따라서, 노드 어드레스들의 리스트를 정렬한다(단계 2212).
그 다음에, 클라이언트는 상기 우선 순위의 순서로 서비스에 대한 접속을 시도한다(단계 2214).
상기 기법은 클러스터의 관리자에게 특정 네트워크에 대한 특정 유형의 서비스와 관련된 트래픽을 포함하는 메커니즘을 제공한다. 상기 기법은 관리자에게 의미있는 그러한 방법으로 네트워크 트래픽 제어를 제공한다. 클라이언트는 상기 서비스에 대한 노드 어드레스들의 리스트를 검색한다는 것을 알 수 있다. 처음에, 상기 리스트는 서비스 그 자체로 발행되기 때문에 정렬되지 않는다. 상기 예에서, DCM 컴포넌트를 이용하여 그것의 노드 어드레스들의 리스트를 발행하는 것은 시스템 레지스트리이다. 그러나, 시스템 레지스트리는 네트워크 구조 및 시스템 관리자의 선호에 대한 정보를 전혀 갖고 있지 않으며, 따라서 정렬된 리스트를 제공할 수 없다. 따라서, 시스템 관리자는 상기 맵핑이 나타내는 바와 같이, 서브네트워크 객체들을 네트워크 객체들에 할당할 수 있다.
시스템 관리자에 의해 발생한 변화는 이동된 서브네트워크로 맵핑되는 모든 어드레스들에 대한 서비스 순위 할당에 영향을 미친다. 이 동작은 서브네트워크 표 내의 변화로 국부화되며, 이는 다른 컴포넌트들에 의해 인식된다. 이러한 편의는 제어에 있어 주요한데, 이것에 의해 시스템 관리자는 클러스터 시스템의 모든 컴포넌트에 대한 시스템 트래픽을 제어할 수 있다.
이상, 시스템 관리자에 의해 설정된 순위에 따른 서비스 어드레스들의 리스트를 정렬하는 한 기법을 기술하였다. 그러나, 어떤 경우에는, 시스템 관리자가 우선 순위 선호가 없는 등거리 네트워크를 이용할 수도 있다. 이 경우, 예를 들면, 경로 지정 단계를 이용하여 클라이언트에 근접한 순으로 서비스 어드레스들의 리스트를 정렬하는 것이 바람직하다. 표준 IP 프로토콜에서, 특정 서브네트워크로부터 전송되는 데이터그램은, 지정되지 않으면, 특정 서브네트워크 내의 노드들에만 도달할 것이다. 데이터그램이 다른 노드들에 도달하도록 하기 위하여, 그것은 지정된다(즉, 데이터그램은 데이터그램이 지향되는 서브네트워크와, 목표 네트워크 또는 다른 라우터 또는 라우터들의 열(이들 중 하나는 목표 네트워크로의 액세스를 갖는다) 모두에 접속되는 라우터 또는 스위칭 노드를 통하여 진행한다). 패키지 스위칭 노드를 통하여 경로를 지정하는 단계는 홉(hop)라 한다. 패키지 스위칭 동작은 목표 서브네트워크 내의 패킷의 수신을 느리게 하기 때문에, 홉과 관련된 동작에는 손실이 발생한다.
따라서, 시스템 관리자가 특정 서비스에 대해 클러스터 네트워크의 이용에 대한 임의의 우선 선호(priority preferences)를 설정하지 않으면, 데이터그램이 서버로부터 클라이언트로 지정될 때 발생하는 홉의 최소 수에 따라서 리스트를 정렬하는 것이 유리하다. 또한, 하나 이상의 서버가 클라이언트에 대하여 등거리에 있으면(즉, 하나 이상의 서버가 동일한 수의 홉을 이용하여 도달될 수 있으면), 각각의 클라이언트에 대하여 상기 리스트들을 상이하게 정렬하여 서비스 부하가 등거리 서버 사이에 동일하게 분산되도록 하는 것이 유리하다.
다음의 기법은 서비스 어드레스들의 리스트가 더 낮은 거리 및 부하 균형의 표준에 따라 정렬되는 편의를 제공한다. 이 기법은, 레지스트리 서버들의 리스트를 각각의 노드에 저장할 때(시스템 관리자가 클러스터 네트워크들의 이용을 위해 임의의 우선 순위를 설정하지 않는 경우) DCM에 의해 이용된다. 전술한 바와 같이, 이 기법은 서버에 대한 클라이언트의 거리 및 작업 부하를 서버들 사이에 동일하게 분산시키는 맵핑을 모두 이용한다. 상기 작업 부하 분산은 각각의 서브네트워크 내의 총 노드 수와 각각의 노드의 개별적인 노드 수 및 등거리 서버들의 수로부터 유도되는 공식에 기초한다.
클러스터 내의 특정 노드에 의해 사용되는 어드레스들의 정렬된 리스트를 생성하는데 사용된 논리의 일실시예는 도 24를 참조하여 설명한다. 일실시예에서, 상기 기법에 대한 입력 파라미터들은 특정 서비스에 대한 어드레스들의 리스트와, 특정 서비스에 대한 클라이언트인 노드의 노드 번호와, 그 노드 상에 존재하는 임의의 통신 인터페이스(노드 어드레스)에 대한 어드레스와, 홉의 수로 환산한 각각의 다른 서버로부터 노드의 거리를 포함한다. 상기 파라미터는 표준 IP 추적 경로 장치를 이용하여 추산될 수 있다.
출력은 서비스 어드레스들의 정렬된 리스트로서, 고유 노드 번호에 의해 식별되는 특정 노드에 맞게 조정된다. 상기 리스트는 최소 비용에 따라서 정렬되며 등거리 서버들을 위해 부하 균형을 이용한다.
도 24에서, 최초에, 입력 리스트 내의 임의의 어드레스가 노드 자체에 존재하는 노드 인터페이스에 대응하면, 이들 어드레스는 결과의 정렬된 리스트 상의 첫 번째에 위치한다(단계 2400). 따라서, 로컬 클라이언트들은 동일 노드 상에 공존하는 서버를 이용하여 선호를 가지며, 그 결과 최선의 동작이 가능해진다. 그 다음에, 가장 낮은 거리(홉 수로 환산하여)를 갖는 서버들의 어드레스들이 리스트된다(단계 2402).
등거리 서버(즉, 동일한 수의 홉을 이용하여 도달할 수 있는 서버)가 있는 경우, 보다 최적화된 정렬이 가능하다. 만약, 두 개의 등거리 서버가 있다면, 그들 중 하나를 클라이언트들의 반의 첫 번째에 리스트하고 다른 하나를 다른 반의 첫 번째에 리스트한다. 이것은 클라이언트들의 반이 하나의 서버에 대한 선호를 갖고 다른 반이 다른 서버에 대한 선호를 갖도록 하여 이상적인 부하 균형 구조를 얻을 수 있다. 만약 세 개의 서버가 있다면, 첫 번째 위치는 세 갈래로 분리될 수 있다.
어느 서버가 첫 번째에 리스트될지를 결정하는 한가지 기법은 단계 2404에서 설명된다. 특히, 처음에, 등거리 서버들의 집합(즉, 동일 수의 홉을 갖는 서버들의 집합)은 이들의 노드 어드레스에 따라서, 최저로부터 최고로 0, 1, 2, 등으로 색인된다(단계 2406). 노드 어드레스들은 유일하며, 상기 맵핑 또한 유일하다.
그 다음에, 사전 정의된 수학식을 이용하여 상기 등거리 서버들 중 한 서버에 대한 맵핑 인덱스가 계산된다(단계 2408). 특히, 등거리 서버들의 수에 대한 k=0인 경우, 맵핑 인덱스는 [(node_number)mod(number_of_equidistant_servers)+k)
mod(number_of_equidistant_servers)]와 같다. 여기서 mod는 나눗셈 연산의 정수 나머지로서 정의된 모듈 연산이다.
상기 맵핑 인덱스를 계산한 후에, 상기 맵핑 인덱스의 대응하는 어드레스가 리스트에 추가된다(단계 2410).
그 다음에, 더 이상의 등거리 서버가 상기 집합 내에 있는지에 대한 판정이 이루어진다.(INQUIRY 2412) 만약 더 이상의 등거리 서버가 상기 집합 내에 있다면, 프로세싱은 단계 2408로 진행한다. 더 이상의 등거리 서버가 상기 집합 내에 없으면, 프로세싱은 INQUIRY(2414)로 진행하며, 여기서 입력 리스트 내에서 처리될 더 많은 서버가 있는지의 여부에 대한 판정이 이루어진다. 만약 더 이상의 서버가 있다면, 프로세서는 단계 2402로 진행한다. 더 이상의 서버가 없다면, 서비스 어드레스들의 최종 정렬된 리스트가 제공되며, 상기 절차는 종료된다(단계 2416).
상기 절차를 예증하는 일례를 이하에 설명한다. 다음의 입력을 가정해 보자.
노드 번호 = 5
서비스 리스트(괄호 내에 거리를 갖는 노드 어드레스 부호를 이용함)는
{1(0), 3(1), 7(1), 9(1), 12(2), 2(2)}를 포함한다.
정렬을 위해, 상기 규칙은 다음과 같다.
1) 상기 기법은 노드 5에 대해 정의된 임의의 노드 어드레스 정의 표들을 조사하여 임의의 상기 입력 어드레스들이 상기 표들 중의 노드 어드레스 필드들 내에 있는지의 여부를 판정한다. 상기 기법은 거리가 0인 어드레스 1이 상기 노드에 대해 로컬이며, 상기 규칙에 따라 첫 번째에 리스트되는 것을 발견한다.
2) 세 개의 등거리 서버는 0->3, 1->7, 2->9의 맵핑을 갖는 노드 어드레스로 정렬된다. 상기 노드들은 규칙 3 내지 7을 이용하여 기록된다. 이 경우에 등거리 서버들의 수는 3이고 노드 번호는 5이며, 결국 다음과 같이 된다.
a) 제 1 서버를 선택하기 위해, k=0인 규칙 5를 적용하여
[5mod3+0)mod3]이 된다. 상기 결과는 상기 단계에서 획득한 리스트에 대한 맵핑 인덱스이다. 이 경우 맵핑 인덱스 2는 서버 어드레스 9로 맵핑된다.
b) 제 2 서버에 대해, k가 1인 규칙 5가 다시 반복되어
[(5mod3+1)mod3]이 된다. 이것은 [(2+1)mod3]=0이며, 서버 3으로 맵핑된다.
c) 마찬가지로, k=2인 규칙 5의 다음 반복으로
[(5mod3)+2)mod3]이 되며, 이것은 [(2+2)mod3]=1이며, 서버 7로 맵핑된다.
3) 이제, 동일한 절차(규칙 2 내지 5)가 등거리 서버들의 제 2 집합에 대해 이용된다. 먼저 맵핑 인덱스들이 0->12, 1->2로 할당된다. 등거리 서버의 수는 2이다.
a) 규칙 5의 첫 번째 반복으로
[(5mod2+0)mod2]=1이 되고, 이것은 서버 2로 맵핑된다.
b) k=1인 제 2 반복으로
[(5mod2+1)mod2]=0이 되고, 이것은 서버 12로 맵핑된다.
4) 최종 결과는 다음과 같이 리스트된다.
{1, 9, 3, 7, 2, 12}
출력 리스트는 각각의 클라이언트 노드 번호에 대하여 상이하며, 그 결과 각각의 클라이언트에 대해 균형된 리스트를 발생함을 관측할 수 있다.
이 외에, DCM은 정렬된 리스트를 유지한다. 일례에서, 상기 DCM은 새로운 서비스 노드가 추가 또는 삭제되었다는 통지를 수신한다.
이상, 클러스터된 환경을 관리하는 다양한 측면들을 기술하였다. 클러스터를 관리하는 기법뿐만 아니라 클러스터된 아키텍처도 제공하였다. 본 발명의 다양한 기법들은 단일 시스템, 동종 시스템, 이종 시스템에도 적용될 수 있다. 일례로서, 이종 환경의 시스템의 상호동작가능성을 용이하게 하는 능력이 제공된다.
본원에 기술된 실시예에서, 글로벌 데이터는 하나 이상의 저장소(글로벌 저장 장치) 내의 노드로부터 멀리 떨어져서 저장된다. 그러나, 다른 예들에서는 각각의 저장소가 하나 이상의 노드에 대해 로컬일 수 있다. 또한, 각 저장소는 저장소의 사용자에 대하여 원격일 수도 있고 로컬일 수도 있다.
본 발명은 예를 들어 컴퓨터 이용가능 매체를 포함하는 제조 품목(예를 들면, 하나 이상의 컴퓨터 프로그램 제품)에 포함될 수 있다. 상기 매체는 예를 들면, 그 내부에 본 발명의 능력을 제공하며 용이하게 하는 컴퓨터 판독가능 프로그램 코드 수단을 삽입하였다. 상기 제조 품목은 컴퓨터 시스템의 일부로서 포함될 수도 있고 개별적으로 판매될 수도 있다.
또한, 본 발명의 특성을 수행하기 위해 기계에 의해 실행가능한 명령들의 적어도 하나의 프로그램을 실제로 구현하는 기계에 의해 판독가능한 적어도 하나의 프로그램 저장 장치가 제공될 수 있다.
본원에 도시된 흐름도는 단지 예들일 뿐이다. 본 발명의 정신으로부터 벗어나지 않고 이들 도식들 또는 단계들(또는 동작들)에 많은 변형들이 있을 수 있다. 예를 들면, 상기 단계들은 다른 순서로 수행될 수도 있고, 단계들이 추가되거나 삭제되거나 수정될 수도 있다. 이들 모든 변형들은 청구한 본 발명의 일부로서 간주된다.
이상, 바람직한 실시예들을 상세하게 설명하고 도시하였지만, 당업자라면 본 발명의 정신을 벗어나지 않고 다양한 수정, 추가, 대체 등이 이루어질 수 있음을 알 수 있을 것이다. 따라서, 이들은 첨부한 청구범위에 규정된 본 발명의 범위 내에 있는 것으로 간주된다.
이상과 같이, 본 발명에 따르면, 컴퓨팅 환경의 클러스터들을 관리하는 시스템을 제공함으로서, 종래 기술의 문제점을 극복하고 부가적인 이점을 제공할 수 있다.
도 1은 본 발명의 특징들을 포함하여 이용하는 컴퓨팅 환경의 일례를 도시한 도면,
도 2는 본 발명에 따른, 복수의 클러스터를 갖는 컴퓨팅 환경의 일실시예를 도시한 도면,
도 3은 본 발명에 따른, 클러스터의 노드의 상태의 일실시예를 도시한 도면,
도 4는 본 발명에 따라 사용된 클러스터 아키텍처의 컴포넌트들의 일실시예를 도시한 도면,
도 5는 본 발명에 따른, 도 4의 시스템 레지스트리 성분이 클러스터된(clustered) 환경의 노드들의 일부 상에만 위치하는 상기 환경의 일실시예를 도시한 도면,
도 6은 본 발명에 따른, 클러스터된 아키텍처의 다양한 성분들의 데이터 의존성(dependencies)의 일례를 도시한 도면,
도 7은 본 발명에 따른, 클러스터된 아키텍처의 다양한 성분들의 함수적 의존성의 일례를 도시한 도면,
도 8은 본 발명에 따른, 사건들의 순서 및 부트스트랩 프로세스의 메시지 흐름의 일실시예를 도시한 도면,
도 9a는 본 발명에 따른, 클러스터 정의 데이터 구조의 일실시예를 도시한 도면,
도 9b는 본 발명에 따른, 노드 정의 데이터 구조의 일실시예를 도시한 도면,
도 9c는 본 발명에 따른, 레지스트리 서버 노드들의 리스트의 일실시예를 도시한 도면,
도 10은 본 발명에 따른, 로컬 저장 데이터 필드의 일례를 도시한 도면,
도 11은 본 발명에 따른, 클러스터 시스템의 고유 노드 식별자의 일실시예를 도시한 도면,
도 12는 본 발명의 노드 식별에 참여하는 프로세스의 일실시예를 도시한 도면,
도 13은 본 발명에 따른, 사건의 순서 및 노드 식별 프로세스의 메시지 흐름의 일실시예를 도시한 도면,
도 14는 본 발명의 자동 클러스터 구성(configuration) 기법에 이용된 다양한 프로세스의 일례를 도시한 도면,
도 15는 본 발명의 자동 클러스터 구성을 제공하기 위해 도 14의 프로세스들 간의 메시지 흐름의 일례를 도시한 도면,
도 16은 본 발명에 따른, 복수의 클러스터에 제한되는 노드들의 일례를 도시한 도면,
도 17은 본 발명에 따른, 하나의 클러스터로부터 다른 클러스터로 이동하는 노드의 일례를 도시한 도면,
도 18은 본 발명에 따른, 프로세스가 하나의 클러스터로부터 다른 클러스터로 이동하도록 하는 사건들의 순서 및 메시지 흐름의 일례를 도시한 도면,
도 19는 본 발명에 따른, 노드 어드레스 정의 데이터 구조의 일례를 도시한 도면,
도 20은 본 발명에 따른, 서브네트워크 정의 데이터 구조의 일례를 도시한 도면,
도 21은 본 발명에 따른, 네트워크 정의 데이터 구조의 일특징을 도시한 도면,
도 22는 본 발명에 따른, 특정 어드레스를 선택하여 서비스를 지정하기 위해 클러스터된 환경의 클라이언트에 의해 사용된 논리의 일실시예를 도시한 도면,
도 23은 본 발명에 따른, 노드 어드레스 정의를 서브네트워크 및 네트워크 정의로 맵핑하는 일실시예를 도시한 도면,
도 24는 본 발명에 따른, 클러스터 내의 특정 노드에 의해 사용되는 어드레스들의 주문된 리스트를 생성하여 특정 서비스에 도달하도록 사용된 논리의 다른 실시예를 도시한 도면.
도면의 주요 부분에 대한 부호의 설명
100 : 분산 컴퓨팅 환경 102 : 프레임
104 : LAN 게이트 106 : 처리 노드
Claims (5)
- 컴퓨팅 환경의 클러스터들을 관리하는 시스템으로서,기본 운영 체제와,상기 컴퓨팅 환경의 클러스터-상기 클러스터는 상기 컴퓨팅 환경의 하나 이상의 노드를 포함함-의 데이터를 위한 글로벌 데이터 기억 장치를 제공하는 레지스트리 컴포넌트(registry component)와,상기 하나 이상의 노드 중 적어도 하나의 노드 상에 국부적으로(locally) 구성 데이터를 유지하고 상기 레지스트리 컴포넌트에 글로벌 구성 데이터를 저장하는 분산 구성 관리자 컴포넌트(distributed configuration manager component)와,상기 클러스터의 하나 이상의 통신 경로의 상태를 제공하는 라이브니스 컴포넌트(liveness component)와,상기 클러스터의 하나 이상의 리소스 제어기에 통신을 제공하는 리소스 관리자 컴포넌트(resource manager component)와,상기 클러스터의 상기 레지스트리 컴포넌트, 분산 구성 관리자 컴포넌트, 라이브니스 컴포넌트, 리소스 관리자 컴포넌트 중 하나 이상의 컴포넌트에 하나 이상의 서비스를 제공하는 그룹 서비스 컴포넌트(group services component)를 포함하는 시스템에 있어서,상기 분산 구성 관리자 컴포넌트가 상기 기본 운영 체제에 의해 부트스트랩(bootstrap)된 후, 상기 분산 구성 관리자 컴포넌트는 상기 레지스트리 컴포넌트, 라이브니스 컴포넌트, 리소스 관리자 컴포넌트, 및 그룹 서비스 컴포넌트의 부트스트랩을 개시하도록 구성되고,상기 부트스트랩 동안에상기 레지스트리 컴포넌트를 제외한 나머지 상기 컴포넌트들은 상기 레지스트리 컴포넌트에 대하여 데이터 의존성을 가지고,상기 라이브니스 컴포넌트, 그룹 서비스 컴포넌트, 리소스 관리자 컴포넌트는 상기 분산 구성 관리자 컴포넌트에 대하여 데이터 의존성을 가지고,상기 분산 구성 관리자 컴포넌트를 제외한 나머지 상기 컴포넌트들은 상기 분산 구성 관리자 컴포넌트에 대하여 함수적 의존성을 가지고,상기 리소스 관리자 컴포넌트와 레지스트리 컴포넌트는 상기 그룹 서비스 컴포넌트에 대하여 함수적 의존성을 가지고,상기 그룹 서비스 컴포넌트는 상기 라이브니스 컴포넌트에 대하여 함수적 의존성을 가지는 컴퓨팅 환경의 클러스터 관리 시스템.
- 삭제
- 제1항에 있어서,상기 레지스트리 컴포넌트는 기록 동작을 위해 상기 그룹 서비스 컴포넌트에 대하여 함수적 의존성을 가지는 컴퓨팅 환경의 클러스터 관리 시스템.
- 컴퓨팅 환경의 클러스터들을 관리하는 방법에 있어서,기본 운영 체제를 제공하는 단계와,레지스트리 컴포넌트를 통하여, 상기 컴퓨팅 환경의 클러스터-상기 클러스터는 상기 컴퓨팅 환경의 하나 이상의 노드를 포함함-의 데이터를 위한 글로벌 데이터 기억 장치를 제공하는 단계와,분산 구성 관리자 컴포넌트를 통하여, 상기 하나 이상의 노드 중 적어도 하나의 노드 상에 국부적으로 데이터를 유지하고 상기 레지스트리 컴포넌트에 글로벌 구성 데이터를 저장하는 단계와,라이브니스 컴포넌트를 통하여, 상기 클러스터의 하나 이상의 통신 경로의 상태를 제공하는 단계와,그룹 서비스 컴포넌트를 통하여, 상기 클러스터의 하나 이상의 다른 컴포넌트에 하나 이상의 서비스를 제공하는 단계와,리소스 관리자 컴포넌트를 통하여, 상기 클러스터의 하나 이상의 리소스 제어기에 통신을 제공하는 단계와,클러스터된 환경의 부트스트랩을 위하여 상기 분산 구성 관리자 컴포넌트가 상기 기본 운영 체제에 의해 부트스트랩되는 단계와,그 후 상기 분산 구성 관리자 컴포넌트가 상기 레지스트리 컴포넌트, 라이브니스 컴포넌트, 리소스 관리자 컴포넌트, 및 그룹 서비스 컴포넌트의 부트스트랩을 개시하는 단계를 포함하고,상기 부트스트랩 동안에상기 레지스트리 컴포넌트를 제외한 나머지 상기 컴포넌트들은 상기 레지스트리 컴포넌트에 대하여 데이터 의존성을 가지고,상기 라이브니스 컴포넌트, 그룹 서비스 컴포넌트, 리소스 관리자 컴포넌트는 상기 분산 구성 관리자 컴포넌트에 대하여 데이터 의존성을 가지고,상기 분산 구성 관리자 컴포넌트를 제외한 나머지 상기 컴포넌트들은 상기 분산 구성 관리자 컴포넌트에 대하여 함수적 의존성을 가지고,상기 리소스 관리자 컴포넌트와 레지스트리 컴포넌트는 상기 그룹 서비스 컴포넌트에 대하여 함수적 의존성을 가지고,상기 그룹 서비스 컴포넌트는 상기 라이브니스 컴포넌트에 대하여 함수적 의존성을 가지는 컴퓨팅 환경의 클러스터 관리 방법.
- 제4항의 방법을 컴퓨터에서 구현하는 프로그램을 기록한 컴퓨터 판독 가능한 기록매체.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/583,677 | 2000-05-31 | ||
US09/583,677 US7185076B1 (en) | 2000-05-31 | 2000-05-31 | Method, system and program products for managing a clustered computing environment |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20010109086A KR20010109086A (ko) | 2001-12-08 |
KR100491802B1 true KR100491802B1 (ko) | 2005-05-27 |
Family
ID=24334126
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR10-2001-0024697A KR100491802B1 (ko) | 2000-05-31 | 2001-05-07 | 컴퓨팅 환경의 클러스터 관리 시스템, 컴퓨팅 환경의 클러스터 관리 방법 및 기록 매체 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7185076B1 (ko) |
JP (1) | JP2002041488A (ko) |
KR (1) | KR100491802B1 (ko) |
GB (1) | GB2368683B (ko) |
Families Citing this family (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7487152B1 (en) | 2000-05-31 | 2009-02-03 | International Business Machines Corporation | Method for efficiently locking resources of a global data repository |
US7640582B2 (en) | 2003-04-16 | 2009-12-29 | Silicon Graphics International | Clustered filesystem for mix of trusted and untrusted nodes |
US7617292B2 (en) * | 2001-06-05 | 2009-11-10 | Silicon Graphics International | Multi-class heterogeneous clients in a clustered filesystem |
US20040139125A1 (en) * | 2001-06-05 | 2004-07-15 | Roger Strassburg | Snapshot copy of data volume during data access |
US6917951B2 (en) * | 2001-07-26 | 2005-07-12 | Microsoft Corporation | System and method for replicating data in resource sets |
US7096459B2 (en) * | 2002-09-11 | 2006-08-22 | International Business Machines Corporation | Methods and apparatus for root cause identification and problem determination in distributed systems |
US7822708B1 (en) * | 2004-01-28 | 2010-10-26 | Oracle America, Inc. | Global attribute mapping data in an enterprise information system |
US7483870B1 (en) | 2004-01-28 | 2009-01-27 | Sun Microsystems, Inc. | Fractional data synchronization and consolidation in an enterprise information system |
US8898330B2 (en) * | 2004-05-28 | 2014-11-25 | Sap Se | Server node configuration using a configuration tool |
US8601101B1 (en) * | 2004-06-28 | 2013-12-03 | Oracle America, Inc. | Cluster communications framework using peer-to-peer connections |
US7757236B1 (en) | 2004-06-28 | 2010-07-13 | Oracle America, Inc. | Load-balancing framework for a cluster |
US7668957B2 (en) * | 2004-06-30 | 2010-02-23 | Microsoft Corporation | Partitioning social networks |
US8990365B1 (en) | 2004-09-27 | 2015-03-24 | Alcatel Lucent | Processing management packets |
US9332069B2 (en) | 2012-12-28 | 2016-05-03 | Wandisco, Inc. | Methods, devices and systems for initiating, forming and joining memberships in distributed computing systems |
US9495381B2 (en) | 2005-01-12 | 2016-11-15 | Wandisco, Inc. | Geographically-distributed file system using coordinated namespace replication over a wide area network |
US9424272B2 (en) | 2005-01-12 | 2016-08-23 | Wandisco, Inc. | Distributed file system using consensus nodes |
US8364633B2 (en) * | 2005-01-12 | 2013-01-29 | Wandisco, Inc. | Distributed computing systems and system components thereof |
US9361311B2 (en) | 2005-01-12 | 2016-06-07 | Wandisco, Inc. | Distributed file system using consensus nodes |
US20060174320A1 (en) * | 2005-01-31 | 2006-08-03 | Microsoft Corporation | System and method for efficient configuration of group policies |
JP4940613B2 (ja) * | 2005-09-29 | 2012-05-30 | 日本電気株式会社 | 制約条件に基づいた資源選択システム、資源選択方法および資源選択プログラム |
US8117155B2 (en) * | 2006-06-30 | 2012-02-14 | Microsoft Corporation | Collection-based object replication |
JP4505763B2 (ja) * | 2007-01-31 | 2010-07-21 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー. | ノードクラスタの管理 |
US8429400B2 (en) * | 2007-06-21 | 2013-04-23 | Cisco Technology, Inc. | VPN processing via service insertion architecture |
US20090049172A1 (en) * | 2007-08-16 | 2009-02-19 | Robert Miller | Concurrent Node Self-Start in a Peer Cluster |
US7822841B2 (en) * | 2007-10-30 | 2010-10-26 | Modern Grids, Inc. | Method and system for hosting multiple, customized computing clusters |
US8863278B2 (en) * | 2008-05-28 | 2014-10-14 | International Business Machines Corporation | Grid security intrusion detection configuration mechanism |
WO2010034608A1 (en) * | 2008-09-24 | 2010-04-01 | Telefonaktiebolaget Lm Ericsson (Publ) | System and method for configuration of processing clusters |
US20100162036A1 (en) * | 2008-12-19 | 2010-06-24 | Watchguard Technologies, Inc. | Self-Monitoring Cluster of Network Security Devices |
US8359592B2 (en) * | 2009-03-19 | 2013-01-22 | Microsoft Corporation | Identifying groups and subgroups |
CN102422552B (zh) * | 2009-03-26 | 2016-05-04 | Xped控股股份有限公司 | 设备间无线通信管理方案 |
US20100293555A1 (en) * | 2009-05-14 | 2010-11-18 | Nokia Corporation | Method and apparatus of message routing |
US8543800B2 (en) * | 2009-06-10 | 2013-09-24 | International Business Machines Corporation | Hierarchical services startup sequencing |
US8667122B2 (en) * | 2009-06-18 | 2014-03-04 | Nokia Corporation | Method and apparatus for message routing optimization |
US20100322264A1 (en) * | 2009-06-18 | 2010-12-23 | Nokia Corporation | Method and apparatus for message routing to services |
US20100322236A1 (en) * | 2009-06-18 | 2010-12-23 | Nokia Corporation | Method and apparatus for message routing between clusters using proxy channels |
US8065419B2 (en) * | 2009-06-23 | 2011-11-22 | Core Wireless Licensing S.A.R.L. | Method and apparatus for a keep alive probe service |
US8190947B1 (en) * | 2010-02-11 | 2012-05-29 | Network Appliance, Inc. | Method and system for automatically constructing a replica catalog for maintaining protection relationship information between primary and secondary storage objects in a network storage system |
US8768973B2 (en) | 2010-05-26 | 2014-07-01 | Pivotal Software, Inc. | Apparatus and method for expanding a shared-nothing system |
CN102340410B (zh) * | 2010-07-21 | 2014-09-10 | 中兴通讯股份有限公司 | 集群管理***及方法 |
EP2599006A4 (en) * | 2010-07-30 | 2014-03-05 | Hewlett Packard Development Co | CONFIGURATION MANAGEMENT |
US10108630B2 (en) * | 2011-04-07 | 2018-10-23 | Microsoft Technology Licensing, Llc | Cluster unique identifier |
US20120324456A1 (en) | 2011-06-16 | 2012-12-20 | Microsoft Corporation | Managing nodes in a high-performance computing system using a node registrar |
KR101352699B1 (ko) | 2011-11-30 | 2014-01-17 | 삼성에스디에스 주식회사 | 병렬 처리 기반의 가상 클러스터 컴퓨팅 시스템의 프로비저닝 방법 및 장치 |
US10454997B2 (en) | 2012-09-07 | 2019-10-22 | Avigilon Corporation | Distributed physical security system |
US9264516B2 (en) * | 2012-12-28 | 2016-02-16 | Wandisco, Inc. | Methods, devices and systems enabling a secure and authorized induction of a node into a group of nodes in a distributed computing environment |
US9009215B2 (en) | 2013-03-15 | 2015-04-14 | Wandisco, Inc. | Methods, devices and systems for dynamically managing memberships in replicated state machines within a distributed computing environment |
AU2015241457B2 (en) | 2014-03-31 | 2019-10-10 | Cirata, Inc. | Geographically-distributed file system using coordinated namespace replication |
WO2016161171A1 (en) | 2015-03-31 | 2016-10-06 | Avigilon Corporation | Security device capability discovery and device selection |
US9959109B2 (en) | 2015-04-10 | 2018-05-01 | Avigilon Corporation | Upgrading a physical security system having multiple server nodes |
US10241775B2 (en) | 2016-01-14 | 2019-03-26 | Ca, Inc. | Dynamic release baselines in a continuous delivery environment |
US10001981B2 (en) | 2016-05-26 | 2018-06-19 | At&T Intellectual Property I, L.P. | Autonomous server installation |
US10305970B2 (en) * | 2016-12-13 | 2019-05-28 | International Business Machines Corporation | Self-recoverable multitenant distributed clustered systems |
US11360942B2 (en) | 2017-03-13 | 2022-06-14 | Wandisco Inc. | Methods, devices and systems for maintaining consistency of metadata and data across data centers |
US10666714B2 (en) * | 2017-04-04 | 2020-05-26 | International Business Machines Corporation | Data integration application execution management |
US10609130B2 (en) | 2017-04-28 | 2020-03-31 | Microsoft Technology Licensing, Llc | Cluster resource management in distributed computing systems |
US10911336B2 (en) * | 2018-10-22 | 2021-02-02 | Juniper Networks, Inc. | Scalable visualization of health data for network devices |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10187638A (ja) * | 1996-10-28 | 1998-07-21 | Mitsubishi Electric Corp | クラスタ制御システム |
WO1999021091A1 (en) * | 1997-10-21 | 1999-04-29 | Sun Microsystems, Inc. | Data integrity and availability in a distributed computer system |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4958273A (en) | 1987-08-26 | 1990-09-18 | International Business Machines Corporation | Multiprocessor system architecture with high availability |
US5291480A (en) | 1991-06-18 | 1994-03-01 | Dsc Communications Corporation | Synchronous node controllers for switching network |
US5555404A (en) * | 1992-03-17 | 1996-09-10 | Telenor As | Continuously available database server having multiple groups of nodes with minimum intersecting sets of database fragment replicas |
JPH0695906A (ja) | 1992-09-17 | 1994-04-08 | Fujitsu Ltd | Scmpシステムおけるsvpのssu制御権の自動切り替え方法 |
JP2625385B2 (ja) | 1994-06-30 | 1997-07-02 | 日本電気株式会社 | マルチプロセッサシステム |
JPH08235141A (ja) | 1995-02-28 | 1996-09-13 | Kofu Nippon Denki Kk | 情報処理システム |
US5752264A (en) | 1995-03-31 | 1998-05-12 | International Business Machines Corporation | Computer architecture incorporating processor clusters and hierarchical cache memories |
US5666486A (en) * | 1995-06-23 | 1997-09-09 | Data General Corporation | Multiprocessor cluster membership manager framework |
US5748958A (en) | 1996-04-30 | 1998-05-05 | International Business Machines Corporation | System for utilizing batch requests to present membership changes to process groups |
US5842034A (en) | 1996-12-20 | 1998-11-24 | Raytheon Company | Two dimensional crossbar mesh for multi-processor interconnect |
US5950228A (en) | 1997-02-03 | 1999-09-07 | Digital Equipment Corporation | Variable-grained memory sharing for clusters of symmetric multi-processors using private and shared state tables |
US6151688A (en) * | 1997-02-21 | 2000-11-21 | Novell, Inc. | Resource management in a clustered computer system |
US5964838A (en) * | 1997-09-30 | 1999-10-12 | Tandem Computers Incorporated | Method for sequential and consistent startup and/or reload of multiple processor nodes in a multiple node cluster |
US6163855A (en) * | 1998-04-17 | 2000-12-19 | Microsoft Corporation | Method and system for replicated and consistent modifications in a server cluster |
US6393485B1 (en) * | 1998-10-27 | 2002-05-21 | International Business Machines Corporation | Method and apparatus for managing clustered computer systems |
US6453426B1 (en) | 1999-03-26 | 2002-09-17 | Microsoft Corporation | Separately storing core boot data and cluster configuration data in a server cluster |
US6748429B1 (en) | 2000-01-10 | 2004-06-08 | Sun Microsystems, Inc. | Method to dynamically change cluster or distributed system configuration |
WO2001084338A2 (en) | 2000-05-02 | 2001-11-08 | Sun Microsystems, Inc. | Cluster configuration repository |
-
2000
- 2000-05-31 US US09/583,677 patent/US7185076B1/en not_active Expired - Fee Related
-
2001
- 2001-05-07 KR KR10-2001-0024697A patent/KR100491802B1/ko not_active IP Right Cessation
- 2001-05-17 GB GB0112039A patent/GB2368683B/en not_active Expired - Fee Related
- 2001-05-29 JP JP2001159977A patent/JP2002041488A/ja active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10187638A (ja) * | 1996-10-28 | 1998-07-21 | Mitsubishi Electric Corp | クラスタ制御システム |
WO1999021091A1 (en) * | 1997-10-21 | 1999-04-29 | Sun Microsystems, Inc. | Data integrity and availability in a distributed computer system |
Also Published As
Publication number | Publication date |
---|---|
JP2002041488A (ja) | 2002-02-08 |
KR20010109086A (ko) | 2001-12-08 |
GB2368683A (en) | 2002-05-08 |
GB2368683B (en) | 2004-09-15 |
US7185076B1 (en) | 2007-02-27 |
GB0112039D0 (en) | 2001-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100491802B1 (ko) | 컴퓨팅 환경의 클러스터 관리 시스템, 컴퓨팅 환경의 클러스터 관리 방법 및 기록 매체 | |
KR100450727B1 (ko) | 클러스터 자동 구성 방법 및 시스템과 컴퓨터 판독가능한 기록 매체 | |
US6847993B1 (en) | Method, system and program products for managing cluster configurations | |
US6925490B1 (en) | Method, system and program products for controlling system traffic of a clustered computing environment | |
US7103664B1 (en) | Method, system and program products for ordering lists of service addresses to provide load balancing of a clustered environment | |
US6973473B1 (en) | Method, system and program products for managing identifiers of components of a clustered environment | |
US6801937B1 (en) | Method, system and program products for defining nodes to a cluster | |
US6807557B1 (en) | Method, system and program products for providing clusters of a computing environment | |
US11687555B2 (en) | Conditional master election in distributed databases | |
US9460185B2 (en) | Storage device selection for database partition replicas | |
US6704785B1 (en) | Event driven communication system | |
KR100387700B1 (ko) | 분산 컴퓨팅 시스템 내의 정족수 프로세서 그룹의 동적재구성 | |
US6542929B1 (en) | Relaxed quorum determination for a quorum based operation | |
JP2004246892A (ja) | マルチノード分散データ処理システムにおいてリモート・アクセス可能なリソースを管理する方法 | |
US8316110B1 (en) | System and method for clustering standalone server applications and extending cluster functionality | |
US6487678B1 (en) | Recovery procedure for a dynamically reconfigured quorum group of processors in a distributed computing system | |
KR100423225B1 (ko) | 클러스터링된 컴퓨터 시스템을 위한 통합 프로토콜 | |
US10747739B1 (en) | Implicit checkpoint for generating a secondary index of a table | |
US20180081676A1 (en) | System and method for partition-scoped patching in an application server environment | |
US7574455B2 (en) | Automatic pruning of orphaned objects from directory services and other databases | |
US6526432B1 (en) | Relaxed quorum determination for a quorum based operation of a distributed computing system | |
van Renesse et al. | Autonomic computing: A system-wide perspective | |
CN116360875A (zh) | 一种高可用性的配置中心服务*** | |
Poveda | SDKV: A Smart and Distributed Key-Value Store for the Edge-Cloud Continuum |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E902 | Notification of reason for refusal | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
J201 | Request for trial against refusal decision | ||
AMND | Amendment | ||
B701 | Decision to grant | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20090504 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |