KR20140125777A - 분산 시스템에서의 자체 업데이트 기능 - Google Patents

분산 시스템에서의 자체 업데이트 기능 Download PDF

Info

Publication number
KR20140125777A
KR20140125777A KR1020147021614A KR20147021614A KR20140125777A KR 20140125777 A KR20140125777 A KR 20140125777A KR 1020147021614 A KR1020147021614 A KR 1020147021614A KR 20147021614 A KR20147021614 A KR 20147021614A KR 20140125777 A KR20140125777 A KR 20140125777A
Authority
KR
South Korea
Prior art keywords
update
node
computer
self
workload
Prior art date
Application number
KR1020147021614A
Other languages
English (en)
Other versions
KR102056503B1 (ko
Inventor
다니엘 제이 톰슨
알리 에디즈 터코글루
가우라브 옴프라카쉬 데쉬팬드
말리카준 차달라파카
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20140125777A publication Critical patent/KR20140125777A/ko
Application granted granted Critical
Publication of KR102056503B1 publication Critical patent/KR102056503B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings

Abstract

서비스를 제공하는 컴퓨터 노드들의 분산 시스템이 분산 시스템의 컴포넌트를 통해 자체 업데이트되게 하는 기술이 기술되어 있다. 그러한 업데이트 실행(updating run)은 분산 시스템에 의해 제공된 서비스를 유지하면서 분산 시스템 내의 컴퓨터 노드 각각에 대해 하나 이상의 업데이트를 적용한다. 업데이트 실행은 업데이트될 각 컴퓨터 노드로부터 임의의 작업부하를 이동시키는 것과, 그 노드를 업데이트하는 것과 업데이트 후 작업부하를 복귀시키는 것을 포함할 수 있다. 업데이트 실행을 수행하는 것은 하나의 컴퓨터 노드로부터 다른 컴퓨터 노드로 작업부하일 수 있는 업데이트 관련 책임을 이동시키는 것을 포함할 수 있다.

Description

분산 시스템에서의 자체 업데이트 기능{SELF-UPDATING FUNCTIONALITY IN A DISTRIBUTED SYSTEM}
분산 시스템은, 예컨대 클러스터로서 구성된 노드/서버의 컬렉션을 통해 클라이언트에게 다양한 컴퓨터 서비스(애플리케이션을 포함)를 제공한다. 컴퓨터 소프트웨어가 분산 시스템 상에 제품으로 배치될 경우, 기업 등이 분산 시스템에 의해 제공된 서비스를 방해하지 않으면서 소프트웨어를 개선하고 그 소프트웨어를 최신 상태로 유지하기가 어렵다. 그 결과, 분산 시스템을 업데이트하기 위해, 관리자는 분산 시스템 컬렉션에 의해 제공된 서비스에 영향을 주지 않으면서 이 분산 시스템 컬렉션 내 노드/서버 상의 소프트웨어 목록을 업데이트하는 것(이것을 때론 업데이트에 대한 "서비스 인식(being service-aware)"이라고 함)을 목적으로 한 비교적 세밀한 계획을 수립한다.
통상의 관리자 단계는, 예컨대, 전체 컬렉션에 대한 장애 대비(fault-tolerant) "임계량(critical mass)"(예를 들면, 클러스터 쿼럼(cluster quorum))이 업데이트 프로세스를 통해 유지되는 것을 보장하면서 노드가 업데이트될 수 있도록 그러한 분산 시스템 컬렉션 내의 각 서버/노드에 대해 서비스를 이동시키거나(migrating)/리호스팅(re-hosting)하는 단계 및 노드 집약적 업데이트 소프트웨어를 사용하여 각 노드를 업데이트하는 단계를 포함한다. 일부 관리자는 이들 태스크를 수작업으로 수행하는 반면에, 다른 관리자는 애드혹(ad-hoc) 스크립트를 사용하여 프로세스의 부분들의 자동화를 시도한다. 일부 경우에, 특정 유형의 소프트웨어 업데이트 관리 소프트웨어와 연결된 특정 유형의 클러스터된 서비스를 위한 엔드투엔드 툴(end-to-end tool)이 존재할 수 있다. 어떠한 경우든, 이러한 정보 기술(IT) 프로세스는 번거롭고, 오류가 일어나기 쉬우며, 관리를 위한 IT 전문가가 요구되며, 지속적으로 관리하기 위해 비용이 많이 든다.
분산 시스템의 수가 증가함에 따라, 이들 수작업 프로세스/스크립트 및 이들 시스템을 실행/관리하기 위해 필요한 IT 관리자에 대한 운영 비용은 IT 조직체에게 상당한 운용 비용 부담이 된다. 이것은, 중소 규모의 사업체 및 로컬 IT 전문가를 구할 수 없는 수많은 지점(branch office)을 거느리는 경향이 있는 단체의 경우에 특히 그러하다.
본 요약은 이하의 상세한 설명에서 보다 자세히 설명될 개념들 중 선택된 것들을 단순화된 형태로 소개하고자 제공된다. 본 요약은 청구 대상의 필수 특성 또는 핵심 특성을 나타내고자 하는 것이 아니며, 청구 대상의 범위를 한정하기 위해 사용되는 것도 아니다.
간단히 말하면, 본 명세서에 기술된 발명 대상의 다양한 특징들은 서비스를 제공하는 컴퓨터 노드들의 분산 시스템이 분산 시스템의 컴포넌트를 통해 자체 업데이트되게 하는 기술과 관련이 있다. 컴퓨터 노드들의 멤버십이 결정되고, 컴포넌트가 분산 시스템에 의해 제공된 서비스를 유지하는 동안 멤버십 내 복수의 컴퓨터 노드 각각에 대해 하나 이상의 업데이트를 적용하는 업데이트 실행(updating run)을 수행한다. 업데이트 실행을 수행하는 것은 멤버십 내 복수의 컴퓨터 노드 각각을 잠재적으로 복수 회 리부팅 및/또는 재시동(restarting)하는 것을 포함할 수 있다.
일실시예에서, 업데이트 실행을 수행하는 것은 업데이트될 각 컴퓨터 노드로부터 임의의 작업부하를 이동시키는 것과, 컴퓨터 노드의 업데이트를 완료한 후 그 컴퓨터 노드에서 적어도 하나의 작업부하를 복귀시키는 것을 포함한다. 업데이트 실행을 수행하는 것은 하나의 컴퓨터 노드로부터 다른 컴퓨터 노드로 오케스트레이터 책임(orchestrator responsiblity)을 이동시키는 것을 포함할 수 있다. 업데이트 관련 상태 정보는 한 컴퓨터 노드로부터 다른 컴퓨터 노드로 오케스트레이터 책임을 이동시키기 전에 유지될 수 있고 하나의 컴퓨터 노드로부터 다른 컴퓨터 노드로 오케스트레이터 책임을 이동시킨 후에 제2 노드에서 판독될 수 있다.
다른 이점은 도면을 참고로 한 이하의 상세한 설명으로부터 명백해질 것이다.
본 발명은 예를 통해 설명되지만 첨부 도면에 한정되지는 않으며, 도면에서 유사한 참조 번호는 유사한 구성요소를 나타낸다.
도 1a는 분산 시스템의 소프트웨어 컴포넌트를 통해 자체 업데이트를 수행하는 분산 시스템의 예시적인 컴포넌트를 도시한 블록도이다.
도 1b는 분산 시스템의 하드웨어/펌웨어를 통해 자체 업데이트를 수행하는 다른 분산 시스템의 예시적인 컴포넌트를 도시한 블록도이다.
도 2 내지 6은 자체 업데이트 실행 동안 다양한 상태에서 예시적인 자체 업데이트 분산 시스템의 컴퓨터 노드 및 컴포넌트의 예시적인 표현을 보여주는 블록도이다.
도 7은 자체 업데이트 실행 동안 다양한 상태에서 예시적인 자체 업데이트 분산 시스템에서 취해질 수 있는 예시적인 단계를 나타내는 흐름도이다.
도 8은 본 명세서에 기재된 다양한 실시예가 구현될 수 있는 예시적인 비제한적인 네트워크 환경을 나타내는 블록도이다.
도 9는 본 명세서에 기재된 다양한 실시예 중 하나 이상의 특징이 구현될 수 있는 예시적인 비제한적 컴퓨팅 시스템 또는 운영 환경을 나타내는 블록도이다.
본 명세서에 기재된 기술의 다양한 측면들은 일반적으로 분산 시스템이 서비스 인식 방식(service-aware fashion)으로 자신의 노드를 원하는 소프트웨어 레벨로 자체 업데이트하도록 하는 것과 관련된다. 일반적으로, 이것은 분산 시스템 소프트웨어를 업데이트하기 위해 로컬 IT 전문가를 요구하지 않는 엔드투엔드 분산 시스템 업데이트 솔루션을 제공한다.
이해할 수 있는 바와 같이, 자체 업데이트 분산 시스템은 외부 도움 또는 감시의 필요 없이 동작할 수 있다. 분산 시스템 내의 개별 컴퓨터 노드는 IT 조직체에 적용할 수 있는 업데이트(패치) 적용 규칙 및 정책에 의해 꾸준히 관리될 수 있으며, 동시에 대체로 분산 시스템의 전역 서비스 유용성을 고려하면서 자신을 자체 업데이트할 만큼 충분히 지능적이다.
장애 조치 클러스터와 같은 분산 시스템의 다양한 예들이 본 명세서에서 사용되지만, 본 명세서에서의 어떠한 예들도 비제한적임을 이해해야 한다. 따라서, 본 발명은 임의의 특정한 실시예들, 특징들, 개념들, 구조들, 기능들 또는 본 명세서에 기술된 예들에 한정되지 않는다. 오히려, 실시예들, 특징들, 개념들, 구조들, 기능들 또는 본 명세서에 기술된 예들 중 어느 것도 일반적으로 컴퓨팅 및 분산 시스템에서 이점 및 더 나은 점을 제공하는 다양한 방법으로 사용될 수 있다.
일반적으로 그리고 본 명세서에 기술되어 있는 바와 같이, 자체 업데이트 클러스터 소프트웨어(예를 들어, 프로세스/스레드)는 오너 노드(owner node)에서 실행되고, 분산 시스템의 멤버십을 결정하며 멤버들 각각을 업데이트한다(신규, 비접속 또는 비 기능 머신과 같이, 비 멤버를 허용하기 전 또는 그 일부로서, 분산 시스템의 멤버가 되기 위해, 이들 비 멤버에 대해 업데이트가 수행될 수 있음에 주목하라). 이 목적을 위해, 자체 업데이트 클러스터 소프트웨어는 각각의 다른 노드를 업데이트할 수 있으며, 또한 자신이 실행되고 있는 노드를 업데이트하도록 동작할 수 있다. 한 시나리오에서, 자체 업데이트 클러스터 소프트웨어는 오너 노드로부터 새로운 오너 노드로 이동되는데, 이것은 그 후 자체 업데이트 클러스터 소프트웨어의 인스턴스를 실행하여 그 노드의 임의의 요구되는 리부트를 수행하는 것을 포함하여 이전의 오너 노드를 업데이트한다. 업데이트와 관련된 상태 정보는 유지되어 "공유 저장 장치"를 통해 새로운 오너 노드로 전달될 수 있다. 아무것도 공유되지 않은(shared-nothing) 분산 시스템의 소정의 실시예에서, 공유된 저장 장치가 분산 저장 서비스로 대체될 수 있는데, 여기서 이 서비스는, 심지어 모든 노드에 대해 진정한 공유된 저장 접속성을 요구하지 않으면서, 영구 저장소로서 분산 시스템 내의 노드들로부터 액세스가능함에 주의하라. 또한, 다른 시나리오에서, 자체 업데이트 클러스터 소프트웨어는 그 자신의 노드에 업데이트를 설치하기 위해 다른 노드에서 실행될 필요가 없음에 주의하라. 예를 들어, 리부트가 필요치 않으면, 자체 업데이트 클러스터 소프트웨어는 업데이트를 설치하기만 하면 된다. 또는, 리부트가 필요하고 오너 노드가 자신의 작업부하를 분산 시스템의 서비스를 계속할 수 있는 다른 노드로 이동시킬 수 있으면, 오너 노드의 자체 업데이트 소프트웨어는 자신을 리부트해서 업데이트를 완료할 수 있고, 오너 노드는 임의의 액세스가능한 영구 저장소에 상태 정보를 기록하여 상태 정보를 하나 이상의 리부트에 걸쳐 유지할 수 있다.
도 1a는 복수의 컴퓨터 노드(1041-104N)를 포함하는 자체 업데이트 분산 시스템(102)의 일실시예를 포함하는 블록도를 도시한 것이다. 예를 들어, 컴퓨터 노드는 가상 머신 또는 물리적 머신일 수 있다. 분산 시스템은 단 2개의 노드에서부터 실용적인 임의의 갯수까지의 노드를 가질 수 있다. 사실, 본 명세서에 기술된 자체 업데이트 기술은 2-블레이드(two-blade) 서버 클러스터를 갖는 경우에 유익한데, 다른 이점들 중에서 작은 업데이트 서버 클러스터는 수작업 관리를 거의 또는 전혀 필요로 하지 않는 어플라이언스 타입(appliance-type) 장치로서 구성될 수 있기 때문이다.
각각의 노드는 시스템(102)의 노드들 사이에 분산될 수 있는 (가능하게는 애플리케이션을 포함하는)서비스를 포함하는 하나 이상의 제각기의 작업부하(1061-106J 및 1071-107K)를 포함한다. 그러한 분산 시스템의 한 예가 장애 조치 클러스터인데, 여기서 하나의 노드에 장애가 발생하거나 또는 작동 중지될 경우에, 이는 예상치 못한(예컨대, 충돌 관련) 또는 의도적인(예컨대, 유지보수 관련) 이벤트로 인한 것일 수 있는데, 그 하나의 노드의 작업부하는 사실상 하나 이상의 다른 노드로 자동으로 이동(장애 조치(fail over))한다. 이를 위해, 하나의 노드로부터의 작업부하를 이동시킬 필요가 있을 경우, 대응하는 작업부하의 인스턴스가 다른 노드 또는 노드들 상에 론칭되고 이것에 의해 노드 클라이언트에게 투명하게 동작을 계속한다. 다른 유형의 분산 시스템은 다른 이유로, 예컨대 자동 로드 밸런싱을 수행하기 위해 또는 수작업 관리의 일환으로서, 작업부하를 이동시킨다. 분산 시스템 통신 메커니즘(1101-110N)에 결합된 공유된 네트워킹 인프라스트럭처(108)는 그러한 작업부하의 이동에 필요한 통신을 용이하게 한다.
일반적으로, 분산 시스템의 노드들은 가끔씩 그 노드들의 제각기의 노드-로컬 소프트웨어 목록(1121-112N)에 대한 업데이트로 업데이트될 필요가 있다. 다수의 이들 업데이트는 노드를 리부팅하는 것 및/또는 노드의 서비스를 중지하는 것을 포함하며, 이전에는 관리자가 그러한 업데이트를 계획하였다.
본 명세서에 기술된 바와 같이, 분산 시스템(102)은 자체 업데이트 관련 소프트웨어를 자신의 소프트웨어의 일부로서 분산 시스템(102)에 추가함으로써 자체 업데이트하도록 구성된다. 예를 들어, 자체 업데이트 작업부하에 관한 a.dll 파일이 각 노드의 노드-로컬 소프트웨어 목록(1121-112N)의 일부로서 설치될 수 있다. 이해할 수 있는 바와 같이, 자체 업데이트 관련 소프트웨어는, 오케스트레이터(120)를 위한 로컬 프록시로서 실행될 경우에, 분산 시스템에 의해 제공된 서비스를 유지하면서 하나 이상의 업데이트를 멤버심 내의 복수의 컴퓨터 노드 각각에 적용한다.
도 1b의 노드(1301, 1302)의 분산 시스템에 제시된 다른 구현예에서, 업데이트는, 노드(1301, 1302)를 각 노드에 영구적으로 결합된(여기서 "영구적"이라는 것은 원격 컴퓨터와 달리 쉽게 분리되지 않음을 의미하기 위한 것이다) 삽입된 하드웨어 및/또는 펌웨어 컴포넌트(134)에 결합하는 인터페이스를 통해, 업데이트 실행을 인스턴스화하고 조정하는 전용 자체 업데이트 메커니즘(132)에 기초할 수 있다. 도 1b의 예에는 단 2개의 노드(1301, 1302)가 도시되어 있지만, 그러한 구현예는 임의의 유용한 수의 노드를 포함할 수 있다. 또한, 도 1b의 분산 시스템은 (도 1a에 예시된 구현예일 수 있는)어플라이언스 타입 장치에 쉽게 포함될 수 있다.
일반적으로, 자체 업데이트 관련 소프트웨어는 분산 시스템을 통한 하나의 자체 업데이트 사이클을 포함하는 "업데이트 실행(updating run)"을 인스턴스화하는데, 이것은 일구현예에서 순차적으로(또는 그렇지 않으면, 예컨대 대규모 분산 시스템의 작은 그룹으로) 분산 시스템 노드들 각각을 제어된 방식으로 업데이트한다. 일구현예에서, 자체 업데이트 관련 소프트웨어는 작업부하를 포함한다. 다른 이점들 중에서, 이것은, 분산 시스템(102) 내에서의 노드 장애에 대한 회복력이 있음을 포함하여, 업데이트 관련 소프트웨어를 분산 시스템에 걸쳐 고도로 이용가능하게 만든다.
일구현예에서, 업데이트 실행을 인스턴스화하고 조정하는 소프트웨어(예컨대, 프로세스/스레드)의 부분은 서비스 인식 업데이트 오케스트레이터(service-aware updating orchestrator) 또는 간단히 "오케스트레이터"라고 지칭된다. 오케스트레이터는 순차적으로(또는 예컨대 대규모 분산 시스템의 작은 그룹으로) 각각의 분산 시스템 노드를 제어된 방식으로 업데이트한다. 본 명세서에 기술된 자체 업데이트 모드에서, 오케스트레이터는 현재의 업데이트 실행 동안 업데이트되는 분산 시스템 노드 상에서 실행될 수 있는데, 이는 이전에 오케스트레이터가 실행되었던 노드를 업데이트하기 전에 오케스트레이터를 다른 노드로 이동시킴으로써 발생할 수 있다.
도 1a에 도시된 바와 같이, (예컨대, 하나 이상의 프로세스 및/또는 하나 이상의 스레드를 포함하는)서비스 인식 업데이트 오케스트레이터(1141-114N)는 분산 시스템(102)을 업데이트하는 엔드투엔드 동작을 조정한다. 일반적으로, 오케스트레이터(예컨대, 1141)의 하나의 인스턴스만이 분산 시스템에서 한번에 실행되고, 업데이트 실행 진행 동안 필요한 분산 시스템 내 (점선 블록(114N)으로의 점선 화살표로 표시된)컴퓨터 노드들을 가로질러 이동할 수 있다.
도 1a의 예시적인 구현예에서, 각 노드는 하나 이상의 노드 소프트웨어 업데이트 툴(1161-116N)을 포함하는데, 이는 하나 이상의 적절한 소프트웨어 업데이트 소스(118)로부터 업데이트를 자동으로 다운로드한다. 소프트웨어 업데이트에 대한 다양한 상이한 소스가, 예컨대, 엔터프라이즈-로컬 분산 포인트, 공개 인터넷(예컨대, Microsoft® Update), 공개 클라우드(예컨대, Windows Azure™), 개인 클라우드(예컨대, Windows Azure Private Appliance) 등으로부터 지원될 수 있다.
도 1a에 도시된 예에서, 프록시(1201-120N)로 표시된 로컬 오케스트레이터 프록시(예컨대, Windows® Management Instumentation, 또는 WMI 기반 컴포넌트)가 각 분산 시스템 노드 상에 설치된다. 각각의 프록시는 오케스트레이터-노드 상호작용을 용이하게 하며 업데이트 실행 동안과 그 후에 분산 상태 관리를 제공한다. 프록시(1201-120N)는 또한 대응하는 노드-로컬 소프트웨어 업데이트 툴(1161-116N)과 상호작용하여 컴퓨터 노드에 대해 로컬인 대응 소프트웨어 목록(1121-112N)에 대한 소프트웨어 업데이트를 달성한다.
도 2 내지 6은 예시적인 3개의 노드(노드(2201-2203)) 분산 시스템에 대해 자체 업데이트가 수행될 수 있는 방법의 다양한 예시적인 상태에 대한 예를 보여준다. 도 2에 도시된 바와 같이, 노드들 중 하나는 자체 업데이트 관련 작업부하(222)의 인스턴스 실행에 대한 오너 노드(2201)이다. 자체 업데이트 관련 작업부하(222)는 스케줄러 컴포넌트에 의해, 적절한 인터페이스를 통한 수작업 상호작용에 의해, 그리고/또는 다른 이벤트에 응답하여, 예컨대 리부트후 자동으로 론칭될 수 있다.
일구현예에서, 자체 업데이트 관련 작업부하(222)는 업데이트를 수행하도록 동작하는 오케스트레이터 코드(223)를 포함할 수 있다. 다른 구현예에서, 자체 업데이트 관련 작업부하(222)는 업데이트를 수행하도록 동작하는 (예컨대, 노드의 노드-로컬 소프트웨어 목록 내에 유지되는)오케스트레이터 코드(223)의 로컬 인스턴스를 론칭하도록 동작할 수 있다. 어느 경우든, 이 예에서는 본 명세서에 기재된 바와 같이 업데이트 실행 중에 작업부하/오케스트레이터 코드(222, 223)가 노드(2201-2203)를 가로질러 이동될 수 있다.
각각의 컴퓨터 노드(2201-2203)는 다수의 분산 시스템 서비스 작업부하(2241-2243)를 호스팅한다. 일반적으로, 이들 작업부하(2241-2243)에 의해 제공된 서비스는 분산 시스템이 원하는 소프트웨어 업데이트로 업데이트되는 동안 이용가능하게 남아 있을 필요가 있다.
일반적으로, 도 3에 도시된 바와 같이, 오케스트레이터 코드(222)는 업데이트되는 노드(본 예예서는 노드(2202))의 작업부하를 이동시키도록 동작한다. 이것은 (점선 노드/작업부하(2242) 위에 점선 "X" 표시로도 표현된)이동된 시스템 서비스 작업부하(3242)로서 노드(2203)로 이동되는 시스템 서비스 작업부하(2242)로 표현된다. 예를 들어, 장애 조치 클러스터에서, 이것은 클러스터 시스템 소프트웨어(CSS)가 노드(2202)를 중지시키도록 요청함으로써 기지의 방식으로 자동으로 발생할 수 있다. 작업부하를 노드(2203)로 이동시키는 것 대신에 또는 이에 더하여, 클러스터 시스템 소프트웨어(CSS)가 자신의 메커니즘에 기초하여 작업부하(2242) 또는 그 일부 부분집합을 노드(2201)로 이동시키는 것이 가능하지만, 이것은 단순화를 위해 도 3에 도시되어 있지 않다.
작업부하가 이동되면, 오케스트레이터 코드(222)는 노드(2202)를 업데이트하도록 동작하는데 이것은 효율성을 위해 이미 업데이트의 일부 또는 전부를 다운로드했을 수 있으며, 그렇지 않으면 업데이트를 준비하기 위해 하나 이상의 단계를 취했을 수 있다. 더 이상 시스템 서비스 작업부하를 실행하고 있지 않는 노드(2202)는 원하는 업데이트 상태로 노드 소프트웨어(및 가능하게는 펌웨어까지)를 획득하는데 필요한 횟수만큼 리부트될 수 있다.
전술한 바와 같이, (예컨대, 매우 신뢰할 수 있고 이용가능한)공유 저장부(226)는 자체 업데이트와 관련된 상태 정보의 판독 및 기록 등을 위해 노드들에게 액세스가능하다. 오케스트레이터 코드는, 업데이트 실행의 상태를 반영하여, 예컨대 오너 노드(2201)의 장애로 인한 것을 포함하여 오케스트레이터 코드(222)에 어떠한 장애가 있던지간에 업데이트 상태가 알려지도록, 임의의 적절한 시간에 공유된 저장소에 정보를 기록할 수 있다. 예를 들어 노드(2202)에 대한 업데이트가 완료되면, 상태 정보가 업데이트되어 업데이트가 완료되었음을 나타내며, 이로 인해 다른 노드가 업데이트 실행을 넘겨받아야 할 경우, 이 상태 정보가 알려진다.
이 시점에서, 노드(2202)가 업데이트되고 하나 이상의 작업부하의 실행을 재개할 수 있다. 도 4의 예에서, 노드(2203)로부터의 작업부하(2243, 3242)는 이 목적을 위해 노드(2202)으로 이동된다. 또한, 노드(2203)의 작업부하의 일부 또는 전부가 노드(2201)로 이동될 수도 있지만, 본 예에서는 간략화를 위해 이들 작업부하가 노드(2202)로 이동되는 것으로 도시하였으며, 이동된 시스템 서비스 작업부하(444)로서 표현하였다. 작업부하가 이동되면, 노드(2203)는 업데이트할 준비가 된다.
임의의 리부트 동작을 포함하여, 업데이트되면, 노드(2203)는 하나 이상의 작업부하 실행을 재개할 수 있다. 도 4의 예 다음에, 오너 노드(2201)만이 여전히 업데이트될 필요가 있다. 전술한 바와 같이, 분산 시스템의 능력 및 구성에 따라서, 오케스트레이터 코드(223)는 자신의 작업부하를 이동시킬 수도 있고, 자신의 노드 소프트웨어를 업데이트하여 리부트 후에 자동으로 재시동할 수도 있으며, 그에 따라 다른 노드로 이동하지 않고 노드를 업데이트할 수도 있다. 그러나, 도 2 내지 6의 경우에, 오케스트레이터 코드(223)는 다른 노드로 이동하여 자신이 현재 실행중에 있는 노드(2201)가 업데이트되도록 할 필요가 있다.
오케스트레이터 코드(223)는 클러스터 시스템 소프트웨어(CSS)에 대한 요청에 의해 다른 노드로 이동할 수 있다. 다른 방법은, 클러스터 시스템 소프트웨어(CSS)에 의해 허용된다면 노드(2201)가 자신을 중지시키도록 요청하는 것으로, 그렇다면 작업 부하가 이동되며, 자체 업데이트 관련 작업부하(222)가 또한 작업부하이기 때문에, 기존의 클러스터링 기술을 사용하여 자동으로 이동이 발생한다.
도 5의 예에서, 노드(2201)를 업데이트하기 위해, 자체 업데이트 관련 작업부하(222)(및 그 내부에 포함되어 있다면 오케스트레이터 코드(223)) 및 노드(2201)의 시스템 서비스 작업부하(2241)는, 클러스터 시스템 소프트웨어(CSS)에 의해 지시된 대로 다른 노드(2202, 2203) 상에 자신의 인스턴스를 론칭함으로써, 이들 노드로 이동된다. 클러스터 시스템 소프트웨어(CSS)는 자신의 메커니즘에 따라서 작업부하를 다른 노드(2202, 2203)로 이동시킬 수 있는 것으로 이해할 수 있지만, 도 5의 예에서, 자체 업데이트 관련 작업부하(222)는 다른 자체 업데이트 관련 작업부하(522)의 인스턴스로서 노드(2202)로 이동되고, 시스템 서비스 작업부하(2241)는 노드(2203)로 이동하여 시스템 서비스 작업부하(555)가 된다. 오케스트레이터 코드(523)가 자체 업데이트 관련 작업부하(522)에 포함되지 않으면, 론칭 시에 자체 업데이트 관련 작업부하(522)가 오케스트레이터 코드(523)를 론칭하도록 동작한다. 이 때, 노드(2202)는 자체 업데이트 관련 작업부하(522)/오케스트레이터 코드(523)를 소유하는 것과 관련하여 새로운 오너가 된다.
오케스트레이터 코드(523)는, 론칭되면, 공유 저장부(228)를 판독하고, 유지된 상태 정보로부터 노드(2201)가 업데이트를 필요로 한다고 결정한다. 이것은 (전술한 바와 같이, 그러한 다른 작업부하는 이미 자체 업데이트 관련 작업부하(222)를 이동시키는 것과 함께 이동되었을 수도 있지만)노드(2201)로부터 임의의 다른 작업부하를 이동시키는 것을 포함할 수 있다. 그 후 노드(2201)는 필요하다면 임의의 리부트 동작을 포함하여 업데이트된다.
도 6은 3개의 노드에 대해 업데이트 실행이 완료된 후의 노드(2201-2203)의 예시적인 분산 시스템을 보여준다. 이 시점에서, 자체 업데이트 관련 작업부하는 업데이트 실행이 완료되었음을 나타내는 상태 정보를 공유 저장부(226)에 기록할 수 있다(또는 이 정보를 소거할 수 있다). 그 다음에 자체 업데이트 관련 작업 부하(522)(및/또는 오케스트레이터 코드(523))는 다음 업데이트 이벤트 또는 스케줄까지 완전히 또는 부분적으로 슬립 및/또는 종료될 수 있다(도 6에서 점선 박스로표시). 또한, 시스템 서비스 작업부하(6601-6603)로 표현된 바와 같이, 클러스터 시스템 소프트웨어(CSS)는, 예컨대 작업부하를 균형화하기 위해, 작업부하를 원하는 대로 이동시킬 수 있다. 이것은 적어도 업데이트된 머신으로부터 이동된 하나의 작업부하를 업데이트 후에 그 머신으로 다시 업데이트하기 전 또는 그 일부로서 복귀시키는 것을 포함할 수 있다.
반드시 필요한 것은 아니지만, 사용자가 업데이트 프로세스와 상호작용할 수 있도록 하는, 예컨대 도 1a의 로컬 프록시(1201-120N)에 결합되거나 또는 그 일부인, 사용자 인터페이스가 제공될 수 있다. 상호작용의 일부는 (예컨대, 변경되지 않으면 변경될 때까지 시스템에 대해 한번 설정되는)초기화일 수 있다. 예를 들어, 업데이트 관련 소프트웨어에 대한 임의의 옵션은, 예를 들어 디폴트 값과 관련하여 사용자 설정가능할 수 있다. 사용자는 또한 프로세스를 감시하기 위해, 예컨대, 공유 저장부 또는 다른 액세스가능한 위치에 기록된 업데이트 상태에 대한 정보를 볼 수 있다. 사용자는 적절한 인터페이스를 이용할 경우 비 멤버(non-member) 장치를 분산 시스템에 연결하여 어느 정도까지 업데이트와 상호작용할 수 있다.
예를 들어, 자체 업데이트 모드는 원한다면 사용자에 의해, 이를테면 사용자 인터페이스 또는 커맨드 라인, 예컨대, Windows® PowerShell cmdlet으로부터 일시 중지될 수 있다. 사용자가, 예컨대 유사한 상호작용을 통해, 자체 업데이트 관련 작업부하를 다시 인에이블할 경우, 다음 업데이트 실행 발생이 분산 작업부하 옵션에 정의된 스케줄에 의해 결정된다.
일구현예에서, 예컨대 분산 시스템 업데이트 인프라스트럭처에서 변경된 설정을 검사하거나 업데이트가 스케줄을 기다릴 필요가 없음을 보장하기 위해, 심지어 분산 시스템이 전체적으로 자체 업데이트 모드로 지속되는 동안에도 요구에 따라 업데이트 실행이 시작될 수 있다. 사용자 인터페이스 또는 커맨드 라인 옵션(예컨대, "UpdateNow" 옵션)은 이 한번 동안에 정의된 자체 업데이트 스케줄을 무시하고, 업데이트 실행을 개시한다.
도 7은 사용자 정의 스케줄과 같이 오케스트레이터 프로세스가 분산 시스템 오너 노드에서 실행되는 구현예의 예시적인 단계를 요약하는 흐름도로서, 임의의 사용자 정의 실행 옵션으로 업데이트 실행을 시작한다. 이 예에서 알 수 있듯이, 오너 노드가 업데이트되어야 할 경우, 오케스트레이터가 다른 컴퓨터 노드로 이동되는데, 통상적으로는 이 업데이트 실행에서 이미 업데이트된 노드로 이동된다. 또한 이 예에서 알 수 있듯이, 새로운(이동된) 오케스트레이터 프로세스는 동일한 업데이트 실행을 계속하고, 아직 업데이트되지 않은 임의의 나머지 시스템 노드를 업데이트함으로써 업데이트 실행이 적절히 완료됨을 보장한다.
단계(700)는 오케스트레이터가 업데이트될 노드들을 포함하는 멤버십을 결정하는 것에 관한 것이다. 일반적으로, 분산 시스템은 자신의 노드들 전부가 (업데이트 실행 동안의 일시적인 경우를 제외하고)서로의 업데이트에 대해 일관된 상태를 갖기를 원하지만, 다른 구현예들은 상이한 멤버 집합에게 업데이트를 허용할 수도 있다. 단계(700)는 또한 업데이트가 분산 시스템에 의해 제공된 서비스의 이용가능성을 유지하는 방법으로 적용될 수 있음을 (예컨대, 클러스터 시스템 소프트웨어를 통해)오케스트레이터 또는 다른 업데이트 관련 소프트웨어가 보장한다는 것을 나타낸다. 예를 들어, 단 하나의 노드만이 현재 동작중이면, 업데이트 실행은 그 하나의 노드를 중지 또는 정지시키도록 허용될 수 있다. 또한, 분산 시스템이 그 시간에 과부하가 걸린 경우와 같이 작업부하가 다른 노드 또는 노드들로 이동된 경우 이들에 의해 적절히 처리될 수 없으면, 업데이트는 덜 바쁜 시간으로 연기될 수 있다. 따라서, 제공된 시스템 서비스를 방해하지 않으면서 업데이트를 허용하도록 업데이트는 충분한 노드/리소스가 이용가능할 때까지 대기할 필요가 있다.
단계(702)는 오케스트레이터가 공유된 저장소를 검사하여 이 업데이트 실행을 위한 임의의 기존의 상태를 획득하는 것을 나타낸다. 이 예에서, 오케스트레이터는 론칭될 때 새로운 실행을 시작하고 있는지 아니면 다른 실행을 완료하고 있는지를 알지 못하며, 따라서 (비록 파라미터 등이 새로운 업데이트 실행을 구별하는데 사용될 수 있지만)상태 정보에 액세스한다.
단계(704)는 업데이트될 다음 노드를 중지시키는 것을 나타낸다. 예컨대, 노드가 시스템 고유의(system-unique) 아이덴티티를 가지므로, 이것은 상태 정보로부터 결정가능하며, 업데이트가 존재할 경우 업데이트되는 것(들)은 상태 정보에 기록되는 데이터이다. 전술한 바와 같이, (예컨대 클러스터 시스템 소프트웨어에게 행해지는)중지 요청은 중지된 노드의 작업부하를 하나 이상의 다른 노드로 이동시킨다.
단계(706)는 준비가 되면, 예컨대 중지된 노드의 작업부하가 이동되면, 중지된 노드를 업데이트한다. 업데이트 처리 중 일부는 예를 들어 업데이트되는 코드에 따라서, 작업부하가 이동되는 동안 시작할 수 있다는 점에 주의하라.
단계(708)는 단계(706)에서 업데이트된 노드의 업데이트를 반영하도록 공유 저장부 내의 상태 정보를 업데이트하는 것을 나타낸다. 업데이트는, 전술한 바와 같이, 통상적으로 1회 이상의 리부팅을 포함한다. 상태 정보는 때때로 몇몇 상태/경과 데이터를 제공하기 위해 또는 장애가 있을 경우에 대비하기 위해 다른 시간에 업데이트될 수 있지만(도 7에는 도시되어 있지 않음), 중요한 시간은 노드 업데이트가 완료되는 때인데 그 이유는 다른 노드가 이 때 업데이트 실행을 재개할 수 있기 때문이다.
단계(710)는 중지된 노드를 다시 분산 시스템의 멤버로서 추가한다. 이것은 클러스터 시스템 소프트웨어에 대한 요청에 의해 행해질 수 있으며, 지금 업데이트된 노드가 클러스터 시스템 소프트웨어에 의해 지시된 대로 분산 시스템 서비스 작업부하를 처리하는 것을 시작하도록 한다. 작업부하들 중 하나는 2개의 노드 시스템의 경우에서와 같이 자체 업데이트 관련 작업부하일 수 있다.
단계(712)는 오케스트레이터를 실행하는 노드를 제외한 업데이트되어야 하는 모든 다른 멤버 노드가 업데이트되었는지를 평가한다. 만약 업데이트되지 않았다면, 단계(712)는 단계(704)로 다시 분기하여 업데이트 실행을 계속한다.
업데이트될 다른 모든 노드가 업데이트되었다면, 단계(712)는 단계(714)로 분기한다. 단계(714)는 업데이트 실행이 완료되었는지 여부, 즉, 오케스트레이터를 실행하는 노드를 포함한 모든 멤버 노드가 업데이트되었는지 여부를 평가한다. 업데이트되지 않았다면, 단계(716)는 오케스트레이터를 이동시키는 것을 나타내는데, 이는 오케스트레이터를 포함하는 자체 업데이트 관련 작업부하를 이동시키거나 또는 오케스트레이터를 론칭할 때 자체 업데이트 관련 작업부하를 이동시킴으로써 행해질 수 있다. 어느 경우든, 오케스트레이터는 새로운 노드로 이동되며 단계(718)에서 론칭된다.
단계(718)는 단계(702)로 돌아가서 프로세스를 반복한다. 장애가 없는 통상의 시나리오에서는, 단계(704)에서 원래는 업데이트되지 않은 노드만이 오케스트레이터를 실행한 노드이지만, 장애 때문에, 업데이트할 하나 이상의 노드가 있을 수 있다. 어쨌든, 멤버이거나 멤버로 남아있는 모든 노드가 업데이트될 때까지 이 프로세스는 반복된다.
어느 시점에서, 단계(714)에서 오케스트레이터를 실행하고 있는 노드가 단계(712)에서 평가된 대로 모든 다른 노드 상에서의 업데이트 실행을 완료하였고, 그 자신이 단계(714)에서 평가된 대로 업데이트되었다. 이 시점에서, 업데이트 실행이 완료되며, 단계(720)에서 공유된 저장소 내의 상태 정보가 업데이트 완료를 반영하여 업데이트된다. 구현에 따라, 노드가 업데이트된 버전 데이터와 같은 다른 정보가 유지될 수는 있지만, 예컨대 상태 정보가 소거되어, 다음 업데이트 실행이 완전히 새로운 업데이트 실행이 수행되어야 함을 인식할 수 있다.
예시적인 네트워킹 및 분산 환경
당업자는 본 명세서에 기재된 다양한 실시예 및 방법이, 컴퓨터 네트워크의 일부로서 또는 분산 컴퓨팅 환경에서 배치될 수 있고 임의의 종류의 데이터 저장소 또는 저장소들에 연결될 수 있는, 임의의 컴퓨터 또는 다른 클라이언트 또는 서버 장치와 함께 구현될 수 있음을 이해할 수 있을 것이다. 이와 관련하여, 본 명세서에 기재된 다양한 실시예는 임의의 수의 메모리 또는 저장 유닛을 갖는 임의의 컴퓨터 시스템 또는 환경과, 임의의 수의 저장 유닛에 걸쳐 발생하는 임의의 수의 애플리케이션 및 프로세스로 구현될 수 있다. 이것은, 제한적인 것은 아니지만, 원격 또는 로컬 저장소를 갖는 네트워크 환경 또는 분산 컴퓨팅 환경에서 배치된 서버 컴퓨터 및 클라이언트 컴퓨터를 갖는 환경을 포함한다.
분산 컴퓨팅은 컴퓨팅 장치 및 시스템 사이의 통신 교환에 의해 컴퓨터 자원 및 서비스의 공유를 제공한다. 이들 자원 및 서비스는 정보의 교환을 포함하고, 파일과 같은 객체의 캐시 저장 및 디스크 저장을 포함한다. 이들 자원 및 서비스는 또한 로드 밸런싱, 자원의 확장, 처리의 특화 등을 위해 복수의 처리 유닛에 걸쳐 처리 능력을 공유한다. 분산 컴퓨팅은 네트워크 접속성을 이용하여, 클라이언트들이 그들의 수집 능력을 이용하여 전체 엔터프라이즈에 도움이 될 수 있게 한다. 이와 관련하여, 본 명세서의 다양한 실시예에서 기술되어 있는 바와 같이 다양한 장치들이 자원 관리 메커니즘에 참가할 수 있는 애플리케이션, 객체 또는 자원을 가질 수 있다.
도 8은 예시적인 네트워킹되거나 분산된 컴퓨팅 환경의 개략도이다. 분산 컴퓨팅 환경은 컴퓨팅 객체(810, 812 등) 및 컴퓨팅 객체 또는 장치(820, 822, 824, 826, 828 등)를 포함하고, 이들은 예시적인 애플리케이션(830, 832, 834, 836, 838)에 의해 표현된 프로그램, 방법, 데이터 저장소, 프로그램가능 로직 등을 포함할 수 있다. 컴퓨팅 객체(810, 812 등) 및 컴퓨팅 객체 또는 장치(820, 822, 824, 826, 828 등)는 PDA(personal digital assistant), 오디오/비디오 장치, 모바일 폰, MP3 플레이어, 개인용 컴퓨터, 랩탑 등과 같은 다른 장치를 포함할 수 있다.
각각의 컴퓨팅 객체(810, 812 등) 및 컴퓨팅 객체 또는 장치(820, 822, 824, 826, 828 등)는 통신 네트워크(840)를 통해 직접적으로 또는 간접적으로 하나 이상의 다른 컴퓨팅 객체(810, 812 등) 및 컴퓨팅 객체 또는 장치(820, 822, 824, 826, 828 등)와 통신할 수 있다. 통신 네트워크(840)는, 도 8에는 단일 요소로서 도시되어 있지만 도 8의 시스템에 서비스를 제공하는 다른 컴퓨팅 객체 및 컴퓨팅 장치를 포함할 수 있으며/또는 복수의 상호접속된 네트워크를 나타낼 수도 있는데, 이러한 경우는 도시되어 있지 않다. 각각의 컴퓨팅 객체(810, 812 등) 및 컴퓨팅 객체 또는 장치(820, 822, 824, 826, 828 등)는 또한 API를 이용할 수 있는 애플리케이션(830, 832, 834, 836, 838)과 같은 애플리케이션, 또는 본 명세서의 다양한 실시예에 따라 제공된 애플리케이션의 구현 또는 이와 통신하기에 적합한 다른 객체, 소프트웨어, 펌웨어 및/또는 하드웨어를 포함할 수 있다.
분산 컴퓨팅 환경을 지원하는 다양한 시스템, 컴포넌트, 및 네트워크 구성이 있다. 예를 들어, 컴퓨팅 시스템은 로컬 네트워크 또는 널리 분산된 네트워크에 의해 유선 또는 무선 시스템에 의해 함께 연결될 수 있다. 현재, 많은 네트워크들이 인터넷에 연결되어 있는데, 이는 널리 분산된 컴퓨팅을 위한 인프라스트럭처를 제공하고 많은 상이한 네트워크를 포함하며, 임의의 네트워크 인프라스트럭처가 사용될 수 있지만 예컨대 통신은 다양한 실시예에서 기술된 시스템에 따르도록 만들어졌다.
따라서, 클라이언트/서버, 피어투피어, 또는 하이브리드 아키텍처와 같은 네트워크 토폴로지 및 네트워크 인프라스트럭처의 호스트가 이용될 수 있다. "클라이언트"는 자신과 관련없는 다른 클래스 또는 그룹의 서비스를 이용하는 클래스 또는 그룹의 멤버이다. 클라이언트는, 다른 프로그램 또는 프로세스에 의해 제공된 서비스를 요청하는 프로세스, 예컨대, 명령어 또는 태스크의 집합일 수 있다. 클라이언트 프로세스는 다른 프로그램 또는 서비스 자체에 대한 임의의 작업 세부사항을 알 필요없이 요청된 서비스를 이용한다.
클라이언트/서버 아키텍처에서, 특히 네트워킹된 시스템에서, 클라이언트는 일반적으로 다른 컴퓨터, 예컨대 서버에 의해 제공된 공유된 네트워크 자원에 액세스하는 컴퓨터이다. 도 8의 예시에서, 비제한적 예로서, 임의의 컴퓨터가 상황에 따라서 클라이언트, 서버 또는 둘 모두로서 간주될 수 있지만, 컴퓨팅 객체 또는 장치(820, 822, 824, 826, 828 등)는 클라이언트로서 생각될 수 있고, 컴퓨팅 객체(810, 812 등)는, 클라이언트 컴퓨팅 객체 또는 장치(820, 822, 824, 826, 828 등)로부터 데이터를 수신하거나, 데이터를 저장하거나, 데이터를 처리하거나, 데이터를 클라이언트 컴퓨팅 객체 또는 장치(820, 822, 824, 826, 828 등)에게 전송하는 것과 같이, 서버로서 동작하는 컴퓨팅 객체(810, 812 등)가 데이터 서비스를 제공하는 서버로서 생각될 수 있다.
서버는 통상적으로 인터넷 또는 무선 네트워크 인프라스트럭처와 같은 원격 또는 로컬 네트워크를 통해 액세스가능한 원격 컴퓨터 시스템이다. 클라이언트 프로세스는 제1 컴퓨터 시스템에서 활성일 수 있고, 서버 프로세스는 제2 컴퓨터 시스템에서 활성일 수 있는데, 통신 매체를 통해 서로 통신하고, 따라서 분산 기능을 제공하며 복수의 클라이언트가 서버의 정보 수집 기능을 이용할 수 있도록 한다.
통신 네트워크(840) 또는 버스가 인터넷인 네트워크 환경에서, 컴퓨팅 객체(810, 812 등)는 웹 서버일 수 있으며, 다른 컴퓨팅 객체 또는 장치(820, 822, 824, 826, 828 등)가 HTTP(hypertext transfer protocol)와 같은 다수의 기존의 프로토콜 중 어느 하나를 통해 이 웹 서버와 통신한다. 서버로서 동작하는 컴퓨팅 객체(810, 812 등)는 또한 예컨대, 컴퓨팅 객체 또는 장치(820, 822, 824, 826, 828 등)와 같은 클라이언트 역할을 할 수도 있는데, 이는 분산 컴퓨팅 환경의 특징일 수 있다.
예시적인 컴퓨팅 장치
전술한 바와 같이, 본 명세서에 기술된 기법들은 어떠한 장치에도 적용될 수 있다는 이점이 있다. 그러므로, 핸드헬드, 휴대형 및 기타 컴퓨팅 장치와 모든 종류의 컴퓨팅 객체가 다양한 실시예와 함께 사용되도록 고려될 수 있음을 이해할 수 있을 것이다. 따라서, 아래 도 9에 기술된 범용 원격 컴퓨터는 컴퓨팅 장치의 일례일 뿐이다.
실시예들은 장치 또는 객체에 대한 서비스의 개발자에 의해 사용하도록 운영 체제를 통해 부분적으로 구현될 수 있으며/또는, 본 명세서에 기술된 다양한 실시예의 하나 이상의 기능적 특징을 수행하도록 동작하는 애플리케이션 소프트웨어 내에 포함될 수 있다. 소프트웨어는 클라이언트 워크스테이션, 서버, 또는 기타 장치와 같은 하나 이상의 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어의 일반적인 컨텍스트로 기술될 수 있다. 당업자는 컴퓨터 시스템이 데이터 통신에 사용될 수 있는 다양한 구성 및 프로토콜을 가지며, 따라서 어떠한 특정한 구성 또는 프로토콜도 제한으로 간주되어서는 안 된다는 것을 알 수 있을 것이다.
도 9는 본 명세서에 기술된 실시예들의 하나 이상의 특징이 구현될 수 있는 적절한 컴퓨팅 시스템 환경(900)의 일례를 도시한 것이며, 위에서 명확히 알 수 있겠지만, 컴퓨팅 시스템 환경(900)은 적절한 컴퓨팅 환경의 일례일 뿐이며 사용 또는 기능의 범위에 대해 어떠한 제한도 암시하고자 하는 것은 아니다. 또한, 컴퓨팅 시스템 환경(900)은 예시적인 컴퓨팅 시스템 환경(900)에서 도시된 컴포넌트들의 임의의 하나 이상의 조합과 관련하여 어떠한 의존성을 갖는 것으로 해석되어서는 안 된다.
도 9를 참조하면, 하나 이상의 실시예를 구현하는 예시적인 원격 장치는 컴퓨터(910)의 형태로 범용 컴퓨팅 장치를 포함한다. 컴퓨터(910)의 컴포넌트는 처리 유닛(920), 시스템 메모리(930), 및 시스템 메모리를 포함한 다양한 시스템 컴포넌트를 처리 유닛(920)에 연결하는 시스템 버스(922)를 포함할 수 있지만, 이들로 한정되지는 않는다.
컴퓨터(910)는 통상적으로 컴퓨터(910)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있는 다양한 컴퓨터 판독가능 매체를 포함한다. 시스템 메모리(930)는 ROM(read only memory) 및/또는 RAM(radom access memory)과 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함할 수 있다. 예를 들어, 제한적인 것은 아니지만, 시스템 메모리(930)는 또한 운영 체제, 애플리케이션 프로그램, 기타 프로그램 모듈, 및 프로그램 데이터를 포함할 수 있다.
사용자는 입력 장치(940)를 통해 컴퓨터(910)에 커맨드 및 정보를 입력할 수 있다. 모니터 또는 다른 유형의 디스플레이 장치가 또한 출력 인터페이스(950)와 같은 인터페이스를 통해 시스템 버스(922)에 연결된다. 컴퓨터는 모니터 외에도 출력 인터페이스(950)를 통해 연결될 수 있는 스피커 및 프린터와 같은 다른 주변 출력 장치를 포함할 수 있다.
컴퓨터(910)는 원격 컴퓨터(970)와 같은 하나 이상의 다른 컴퓨터에 대한 논리 접속을 이용하여 네트워킹 또는 분산 환경에서 동작할 수 있다. 원격 컴퓨터(970)는 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타 일반적인 네트워크 노드, 또는 임의의 다른 원격 매체 소비 또는 전송 장치일 수 있으며, 컴퓨터(910)와 관련하여 상술한 요소들 중 어느 하나 또는 전부를 포함할 수 있다. 도 9에 도시된 논리 접속은 네트워크(960) 및 LAN 또는 WAN과 같은 인터페이스(972)를 포함하지만, 다른 네트워크/버스를 포함할 수도 있다. 이러한 네트워킹 환경은 가정, 사무실, 전사적 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일상적이다.
전술한 바와 같이, 예시적인 실시예들이 다양한 컴퓨팅 장치 및 네트워크 아키텍처와 함께 기술되었지만, 그 기본 개념은 자원 사용의 효율성을 향상시키기에 바람직한 임의의 시스템 및 임의의 컴퓨팅 장치 또는 시스템에 적용될 수 있다.
또한, 예컨대, 적절한 API, 툴 킷(tool kit), 드라이버 코드, 운영 체제, 컨트롤, 독립형 또는 다운로드가능한 소프트웨어 객체 등 본 명세서에 제공된 기법들을 애플리케이션 및 서비스가 이용할 수 있게 하는 동일하거나 유사한 기능을 구현하는 복수의 방법이 있다. 따라서, 본 명세서에서의 실시예는 API(또는 기타 소프트웨어 객체)의 관점에서뿐만 아니라 본 명세서에 기술된 하나 이상의 실시예를 구현하는 소프트웨어 또는 하드웨어 객체로부터 고려된다. 따라서, 본 명세서에 기술된 다양한 실시예는 전반적으로 하드웨어적, 일부 하드웨어 및 일부 소프트웨어적, 또는 소프트웨어적 특징을 가질 수 있다.
분명히, 본 명세서에 개시된 청구 대상은 이들 예로 제한되지 않는다. 또한, 본 명세서에 예로서 기술된 임의의 특징 또는 설계는 반드시 다른 특징 또는 설계에 비해 바람직하다거나 유익한 것으로 해석되어서는 안 되며, 또한 당업자에게 알려진 예시적인 등가의 구조 및 기술을 배제하는 것을 의미하는 것도 아니다. 또한, "포함"한다거나 "갖는"다거나 하는 용어 및 이와 유사한 다른 단어가 사용되는 경우에 있어서, 그러한 용어는 청구항에 사용될 때 임의의 추가적인 요소 또는 다른 요소들을 배제하지 않고 포괄적으로 포함하도록 의도된다.
전술한 바와 같이, 본 명세서에 기술된 다양한 기법들은 하드웨어 또는 소프트웨어 또는 필요하다면 이들의 조합으로 구현될 수 있다. 본 명세서에 사용된 "컴포넌트", "모듈", "시스템" 등은 마찬가지로 하드웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행시의 소프트웨어인 컴퓨터 관련 개체를 지칭하기 위한 것이다. 예컨대, 컴포넌트는 프로세서 상에서 실행되는 프로세스, 프로세서, 객체, 실행화일, 실행 스레드, 프로그램, 및/또는 컴퓨터일 수 있지만, 이들로 제한되지는 않는다. 예를 들어, 컴퓨터 상에서 실행되는 애플리케이션 및 컴퓨터가 컴포넌트일 수 있다. 하나 이상의 컴포넌트가 프로세스 및/또는 실행 스레드 내에 존재할 수 있고 컴포넌트는 하나의 컴퓨터 상에 로컬로 존재할 수도 있고/또는 둘 이상의 컴퓨터 사이에 분산될 수도 있다.
전술한 시스템은 몇몇 컴포넌트 간의 상호작용과 관련하여 기술되었다. 이들 시스템 및 컴포넌트는 그러한 컴포넌트들 또는 지정된 서브컴포넌트들, 일부 지정된 컴포넌트들 또는 서브컴포넌트들, 및/또는 추가 컴포넌트들을 포함할 수 있으며, 전술한 것들의 다양한 치환 및 조합에 따른다. 서브컴포넌트는 또한 부모 컴포넌트 내에 포함되기보다는 다른 컴포넌트에 통신가능하게 연결된 컴포넌트로서 구현될 수 있다(계층적). 또한, 하나 이상의 컴포넌트가 총괄 기능을 제공하는 단일 컴포넌트로 결합될 수도 있고 여러 개의 분리된 서브컴포넌트로 분할될 수도 있으며, 통합 기능을 제공하기 위해 관리 층과 같은 임의의 하나 이상의 중간 층이 그러한 서브컴포넌트에 통신가능하게 결합되도록 제공될 수 있음을 알 수 있다. 본 명세서에 기술된 임의의 컴포넌트는 또한 본 명세서에 구체적으로 설명되지는 않았지만 당업자에게 일반적으로 알려져 있는 하나 이상의 다른 컴포넌트와 상호작용할 수 있다.
본 명세서에 기술된 예시적인 시스템을 고려해 볼 때, 본 발명에 따라 구현될 수 있는 방법은 다양한 도면의 흐름도를 참조하여 이해될 수 있다. 설명을 간단하게 하기 위해, 방법들이 일련의 블록으로 도시되고 설명되지만, 다양한 실시예들은 이들 블록의 순서에 의해 제한되지 않는데, 그 이유는 일부 블록이 도시 및 본 명세서에 기술된 것과 다른 순서로 발생할 수 있고/또는, 다른 블록들과 동시에 발생할 수도 있다는 것을 이해할 수 있을 것이다. 비순차적 또는 분기형 흐름이 흐름도를 통해 도시되어 있지만, 동일 또는 유사한 결과를 달성하는 다양한 다른 분기들, 흐름 경로, 및 블록의 순서가 구현될 수도 있다. 또한, 일부 도시된 블록은 상술한 방법을 구현하는데 있어서 선택적이다.
결론
본 발명은 다양한 수정 및 대안적인 구성을 허용하지만, 소정의 예시된 실시예들이 도면에 도시되고 상세히 설명되었다. 그러나, 본 발명을 개시된 특정한 형태로 제한하고자 하는 것은 아니며, 오히려, 본 발명은 본 발명의 사상 및 범주 내에 있는 모든 변형들, 대안적인 구성들 및 균등물들을 커버한다.
본 명세서에 기술된 다양한 실시예들에 더하여, 다른 유사한 실시예들이 이용될 수 있거나 또는 그로부터 벗어나지 않고 대응 실시예의 동일 또는 등가의 기능을 수행하기 위해 기술된 실시예에 변형 및 추가가 이루어질 수 있음을 이해해야 한다. 또한, 복수의 처리 칩 또는 복수의 장치가 본 명세서에 기술된 하나 이상의 기능의 수행을 공유할 수 있고, 마찬가지로 저장이 복수의 장치에 걸쳐 이루어질 수 있다. 따라서, 본 발명은 임의의 단일 실시예에 한정되지 않고, 오히려 첨부된 청구범위에 따른 범위, 사상 및 범주 내에서 해석되어야 한다.

Claims (20)

  1. 컴퓨팅 환경에서, 적어도 하나의 프로세서 상에서 적어도 부분적으로 수행되는 방법으로서,
    서비스를 제공하는 분산 시스템의 복수의 컴퓨터 노드의 노드 멤버십(node membership)을 결정하는 단계와,
    상기 분산 시스템의 적어도 하나의 컴포넌트를 통해, 상기 분산 시스템에 의해 제공된 서비스를 유지하면서 상기 멤버심 내의 상기 복수의 컴퓨터 노드 각각에 대해 하나 이상의 업데이트를 적용하는 업데이트 실행(updating run)을 수행하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 업데이트 실행을 수행하는 단계는 상기 멤버십 내의 상기 복수의 컴퓨터 노드 각각을 적어도 1회 리부팅(rebooting)하거나 재시동(restarting)하거나 또는 리부팅 및 재시동 모두를 하는 단계를 포함하는
    방법.
  3. 제1항에 있어서,
    상기 업데이트 실행을 수행하는 단계는, 업데이트되는 각각의 컴퓨터 노드에 대해,
    해당 컴퓨터 노드를 업데이트하기 전 또는 업데이트의 일부로서 해당 컴퓨터 노드로부터 임의의 작업부하를 이동시키는 단계와,
    해당 컴퓨터 노드의 업데이트를 완료한 후에 해당 컴퓨터 노드 상에 적어도 하나의 작업부하를 복귀시키는 단계
    를 포함하는 방법.
  4. 제1항에 있어서,
    상기 업데이트 실행을 수행하는 단계는 상기 업데이트 실행을 인스턴스화하고 조정하기 위해 프로세스 또는 스레드를 오케스트레이터(orchestrator)로서 실행하는 단계를 포함하는
    방법.
  5. 제1항에 있어서,
    상기 업데이트 실행을 수행하는 단계는 상기 업데이트 실행을 인스턴스화하고 조정하도록 구성된 자체 업데이트 메커니즘을 이용하는 단계를 포함하되, 상기 자체 업데이트 메커니즘은 삽입된 하드웨어 또는 펌웨어로 적어도 부분적으로 구현되는
    방법.
  6. 제1항에 있어서,
    상기 업데이트 실행을 수행하는 단계는 오케스트레이터 책임(orchestrator responsibility)을 업데이트될 하나의 컴퓨터 노드로부터 다른 컴퓨터 노드로 이동시키는 단계를 포함하는
    방법.
  7. 제1항에 있어서,
    상기 업데이트 실행을 수행하는 단계는 한 컴퓨터 노드로부터 다른 컴퓨터 노드로 오케스트레이터 책임을 이동시키는 단계를 포함하는
    방법.
  8. 제7항에 있어서,
    상기 오케스트레이터는 자체 업데이트 관련 작업부하와 연관되고, 상기 오케스트레이터 소프트웨어를 이동시키는 단계는 상기 자체 업데이트 관련 작업부하를 이동시키는 단계를 포함하는
    방법.
  9. 제7항에 있어서,
    상기 분산 시스템은 장애 조치 클러스터(failover cluster)를 포함하고, 상기 오케스트레이터는 자체 업데이트 관련 작업부하와 연관되며, 상기 오케스트레이터 소프트웨어를 이동시키는 단계는 상기 자체 업데이트 관련 작업부하를 장애 조치하는(fail over) 단계를 포함하는
    방법.
  10. 제7항에 있어서,
    상기 한 컴퓨터 노드로부터 다른 컴퓨터 노드로 오케스트레이터 책임을 이동시키는 단계 이전에 업데이트 관련 상태 정보를 유지하는 단계와,
    상기 한 컴퓨터 노드로부터 다른 컴퓨터 노드로 오케스트레이터 책임을 이동시키는 단계 이후에 상기 다른 노드에서 상기 업데이트 관련 상태 정보를 판독하는 단계
    를 더 포함하는 방법.
  11. 분산 시스템으로서 구성된 복수의 컴퓨터 노드와,
    상기 분산 시스템 내의 자체 업데이트 컴포넌트
    를 포함하되,
    상기 자체 업데이트 컴포넌트는
    상기 분산 시스템의 임의의 노드의 임의의 리부팅 동안 또는 재시동 동안 또는 리부팅 및 제시동 동안을 포함하는 업데이트 실행 동안 상기 분산 시스템에 의해 제공된 서비스를 유지하기 위해 업데이트 실행 내 소프트웨어 업데이트를 조정함으로써, 상기 컴퓨터 노드 각각을 상기 소프트웨어 업데이트로 업데이트하도록 구성되는
    시스템.
  12. 제11항에 있어서,
    상기 분산 시스템은 공유 저장부 또는 분산 저장 서비스를 포함하고, 상기 자체 업데이트 컴포넌트는 상기 공유 저장부 또는 상기 분산 저장 서비스에 업데이트 실행 상태 정보를 기록함으로써 상기 업데이트 실행 동안 적어도 2개의 컴퓨터 노드 사이에서 이동하도록 구성된 소프트웨어 작업부하를 포함하는
    시스템.
  13. 제11항에 있어서,
    상기 자체 업데이트 컴포넌트는 상기 컴퓨터 노드 각각에 영구적으로 결합된 하드웨어 또는 펌웨어 상에 적어도 부분적으로 구현된 메커니즘을 포함하는
    시스템.
  14. 제11항에 있어서,
    상기 분산 시스템은 어플라이언스 타입 장치(appliance-type device)에 포함되는
    시스템.
  15. 제11항에 있어서,
    상기 분산 시스템은 장애 조치 클러스터를 포함하는
    시스템.
  16. 컴퓨터 실행가능 명령어를 포함하는 하나 이상의 컴퓨터 판독가능 매체로서,
    상기 컴퓨터 실행가능 명령어는
    실행될 경우, 복수의 컴퓨터 노드를 포함하는 분산 시스템 상에서 업데이트 실행을 실행하는 단계들을 수행하되, 상기 단계들은
    (a) 상기 업데이트 실행 동안 아직 업데이트되지 않은 컴퓨터 노드를 선택하는 단계와,
    (b) 상기 선택된 컴퓨터 노드로부터의 작업부하를 다른 컴퓨터 노드로 이동시키는 단계와,
    (c) 상기 선택된 컴퓨터 노드를 상기 분산 시스템의 자체 업데이트 오케스트레이터 컴포넌트를 통해 하나 이상의 소프트웨어 업데이트 세트로 업데이트하는 단계와,
    (d) 상기 분산 시스템의 각 컴퓨터 노드가 업데이트될 때까지 단계 (a)로 복귀하는 단계
    를 포함하는 시스템.
  17. 제16항에 있어서,
    선택된 상기 컴퓨터 노드를 업데이트하는 단계는 상기 노드를 적어도 1회 리부팅하거나 또는 재시동하거나 또는 리부팅하고 재시동하는 단계를 포함하는
    시스템.
  18. 제16항에 있어서,
    상기 자체 업데이트 오케스트레이터 컴포넌트는 작업부하를 포함하고,
    선택된 상기 컴퓨터 노드로부터의 작업부하를 다른 컴퓨팅 노드로 이동시키는 단계는 상기 자체 업데이트 오케스트레이터 컴포넌트를 이동시키는 단계를 포함하는
    시스템.
  19. 제16항에 있어서,
    상기 작업부하를 이동시키는 단계는 상기 선택된 노드를 중지시키는 단계를 포함하는
    시스템.
  20. 제16항에 있어서,
    상기 업데이트 실행의 상태를 나타내는 상태 정보를 공유 저장소 또는 분산 저장 서비스에 기록하는 단계를 수행하는 컴퓨터 실행가능 명령어를 더 포함하는
    시스템.
KR1020147021614A 2012-02-02 2013-01-29 분산 시스템에서의 자체 업데이트 기능 KR102056503B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/364,714 US9170852B2 (en) 2012-02-02 2012-02-02 Self-updating functionality in a distributed system
US13/364,714 2012-02-02
PCT/US2013/023524 WO2013116173A1 (en) 2012-02-02 2013-01-29 Self-updating functionality in a distributed system

Publications (2)

Publication Number Publication Date
KR20140125777A true KR20140125777A (ko) 2014-10-29
KR102056503B1 KR102056503B1 (ko) 2019-12-16

Family

ID=48903968

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147021614A KR102056503B1 (ko) 2012-02-02 2013-01-29 분산 시스템에서의 자체 업데이트 기능

Country Status (6)

Country Link
US (1) US9170852B2 (ko)
EP (1) EP2810178A4 (ko)
JP (1) JP6358958B2 (ko)
KR (1) KR102056503B1 (ko)
CN (2) CN104094248A (ko)
WO (1) WO2013116173A1 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9400642B2 (en) * 2013-08-29 2016-07-26 Mckesson Financial Holdings Self-updating application agent
CN105005487B (zh) * 2015-06-29 2018-06-22 清华大学 一种持续服务的高性能集群操作系统在线升级方法
US9935982B2 (en) * 2015-10-09 2018-04-03 International Business Machines Corporation Server workload assignment based on known update/security vulnerabilities
SG11201809097WA (en) * 2016-05-17 2018-11-29 Ab Initio Technology Llc Reconfigurable distributed processing
US10122647B2 (en) * 2016-06-20 2018-11-06 Microsoft Technology Licensing, Llc Low-redistribution load balancing
US10432450B2 (en) 2016-06-30 2019-10-01 Microsoft Technology Licensing, Llc. Data plane API in a distributed computing network
CN106302700B (zh) * 2016-08-11 2019-09-24 浪潮(北京)电子信息产业有限公司 基于paxos算法的分布式系统一致性更新方法及系统
CN106354531B (zh) * 2016-08-25 2020-03-27 杭州华为数字技术有限公司 物理节点升级方法及装置
CN108667641A (zh) * 2017-03-30 2018-10-16 杭州海康威视数字技术股份有限公司 分布式系统升级方法、分布式系统及升级管理设备
CN107360018A (zh) * 2017-06-05 2017-11-17 小草数语(北京)科技有限公司 配置更新方法及装置
CN107391156B (zh) * 2017-07-31 2021-01-08 成都华为技术有限公司 用于分布式系统传输业务的方法、管理节点和服务节点
CN109525410B (zh) * 2017-09-20 2021-05-18 华为技术有限公司 分布式存储系统升级管理的方法、装置及分布式存储系统
US10852946B1 (en) * 2018-01-31 2020-12-01 EMC IP Holding Company LLC Non-disruptive upgrade of storage appliance nodes using host initiator login information to avoid data unavailability
US10261775B1 (en) * 2018-04-17 2019-04-16 Hewlett Packard Enterprise Development Lp Upgrade orchestrator
US10949190B2 (en) 2018-04-17 2021-03-16 Hewlett Packard Enterprise Development Lp Upgradeable component detection and validation
US10824413B2 (en) * 2018-07-23 2020-11-03 International Business Machines Corporation Maintenance of computing nodes concurrently in a number updated dynamically
US10860306B2 (en) * 2018-08-03 2020-12-08 Dell Products L.P. Reducing downtime when applying a patch to multiple databases
US10897497B2 (en) * 2018-11-13 2021-01-19 International Business Machines Corporation Automated infrastructure updates in a cluster environment that includes containers
CN110806927A (zh) * 2019-10-15 2020-02-18 中国航空无线电电子研究所 分布式系统下的软件运行控制方法
US11216270B2 (en) * 2019-10-24 2022-01-04 Dell Products L.P. Metadata driven workflow semantics for management operations
CN111654532B (zh) * 2020-05-08 2023-08-01 国云科技股份有限公司 一种配置文件集中管理系统、方法及装置
CN111787113B (zh) * 2020-07-03 2021-09-03 北京大道云行科技有限公司 一种节点故障的处理方法、装置、存储介质和电子设备
US11218378B1 (en) 2020-09-14 2022-01-04 Dell Products L.P. Cluser-aware networking fabric update system
FR3116682B1 (fr) * 2020-11-24 2023-10-27 Thales Sa Procédé de communication de l’état d’un réseau de calculateur(s), programme d’ordinateur, nœud de calcul et réseau associés

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8502066D0 (en) * 1985-01-28 1985-02-27 Du Pont Canada Deactivation of catalyst
KR930010739A (ko) 1991-11-26 1993-06-23 정용문 노드간에 분산된 데이타 베이스의 변경방법
JPH09114722A (ja) 1995-10-20 1997-05-02 Nippon Telegr & Teleph Corp <Ntt> 分散システムにおける共有情報管理方法
US6754848B1 (en) * 1999-09-30 2004-06-22 International Business Machines Corporation Method, system and program products for operationally migrating a cluster through emulation
US7000230B1 (en) 2000-06-21 2006-02-14 Microsoft Corporation Network-based software extensions
US20020091819A1 (en) 2001-01-05 2002-07-11 Daniel Melchione System and method for configuring computer applications and devices using inheritance
US7496646B2 (en) 2001-09-21 2009-02-24 Hewlett-Packard Development Company, L.P. System and method for management of a storage area network
US7043732B2 (en) 2002-04-29 2006-05-09 Sun Microsystems, Inc. Method and apparatus for managing remote data replication using CIM providers in a distributed computer system
US7519976B2 (en) 2002-05-01 2009-04-14 Bea Systems, Inc. Collaborative business plug-in framework
US20040003007A1 (en) 2002-06-28 2004-01-01 Prall John M. Windows management instrument synchronized repository provider
CN1261889C (zh) * 2002-07-30 2006-06-28 英业达股份有限公司 自远端自动更新电脑基本输入/输出系统的方法
US7178057B1 (en) 2003-01-17 2007-02-13 Unisys Corporation Method for allowing a clustered computer systems manager to use disparate hardware on each of the separate servers utilized for redundancy
US7149923B1 (en) 2003-01-17 2006-12-12 Unisys Corporation Software control using the controller as a component to achieve resiliency in a computer system utilizing separate servers for redundancy
US7155638B1 (en) 2003-01-17 2006-12-26 Unisys Corporation Clustered computer system utilizing separate servers for redundancy in which the host computers are unaware of the usage of separate servers
US7181642B1 (en) 2003-01-17 2007-02-20 Unisys Corporation Method for distributing the processing among multiple synchronization paths in a computer system utilizing separate servers for redundancy
US7043580B1 (en) 2003-01-17 2006-05-09 Unisys Corporation Cluster lock server: ability to support multiple standard and proprietary locking protocols
US7000046B1 (en) 2003-01-17 2006-02-14 Unisys Corporation Standard channel I/O processor (SCIOP)
US20040148370A1 (en) 2003-01-23 2004-07-29 Electronic Data Systems Corporation System and method for composing, configuring, deploying, and managing services using a graphical user interface
US20050086384A1 (en) 2003-09-04 2005-04-21 Johannes Ernst System and method for replicating, integrating and synchronizing distributed information
US7571227B1 (en) 2003-09-11 2009-08-04 Sun Microsystems, Inc. Self-updating grid mechanism
US7464378B1 (en) * 2003-12-04 2008-12-09 Symantec Operating Corporation System and method for allowing multiple sub-clusters to survive a cluster partition
JP4870915B2 (ja) * 2004-07-15 2012-02-08 株式会社日立製作所 ストレージ装置
JP2006252437A (ja) * 2005-03-14 2006-09-21 Nec Corp パッチ適用方式及びパッチ適用方法
US7484048B2 (en) 2005-04-27 2009-01-27 Red Hat, Inc. Conditional message delivery to holder of locks relating to a distributed locking manager
US20060294413A1 (en) * 2005-06-28 2006-12-28 Filz Frank S Fault tolerant rolling software upgrade in a cluster
US7523461B2 (en) 2005-07-01 2009-04-21 Microsoft Corporation Modification of logic in an application
JP2007213494A (ja) 2006-02-13 2007-08-23 Ntt Docomo Inc 更新起動装置及び更新起動制御方法
US7971202B2 (en) 2006-03-14 2011-06-28 International Business Machines Corporation Method for advanced management of software distribution tasks
US7890646B2 (en) 2006-04-27 2011-02-15 Microsoft Corporation Synchronization orchestration
US8301589B2 (en) 2006-05-10 2012-10-30 Sybase, Inc. System and method for assignment of unique identifiers in a distributed environment
EP1898656A1 (en) * 2006-09-06 2008-03-12 Nokia Siemens Networks Gmbh & Co. Kg Method for recovering connectivity in the event of a failure in a radio communications system and controlling node thereof
JP4545225B2 (ja) * 2007-03-29 2010-09-15 富士通株式会社 システム管理装置、計算機システム、制御方法、および制御プログラム
JP4467623B2 (ja) * 2008-03-19 2010-05-26 富士通株式会社 アップデート管理プログラム、管理ノード、アップデート管理方法、およびクラスタシステム
US8375387B2 (en) 2008-05-30 2013-02-12 Red Hat, Inc. Product independent orchestration tool
US8375383B2 (en) * 2008-08-28 2013-02-12 Microsoft Corporation Rolling upgrades in distributed applications
US8260742B2 (en) 2009-04-03 2012-09-04 International Business Machines Corporation Data synchronization and consistency across distributed repositories
US8103643B2 (en) 2009-12-21 2012-01-24 Oracle America, Inc. System and method for performing distributed transactions using global epochs
US20120124193A1 (en) * 2010-11-12 2012-05-17 International Business Machines Corporation Identification of Critical Web Services and their Dynamic Optimal Relocation
US10678602B2 (en) 2011-02-09 2020-06-09 Cisco Technology, Inc. Apparatus, systems and methods for dynamic adaptive metrics based application deployment on distributed infrastructures
US9262148B2 (en) 2011-09-12 2016-02-16 Microsoft Technology Licensing, Llc Modular architecture for distributed system management
US8560662B2 (en) 2011-09-12 2013-10-15 Microsoft Corporation Locking system for cluster updates

Also Published As

Publication number Publication date
US9170852B2 (en) 2015-10-27
EP2810178A4 (en) 2015-11-25
CN109347681B (zh) 2021-11-30
EP2810178A1 (en) 2014-12-10
JP2015509253A (ja) 2015-03-26
WO2013116173A1 (en) 2013-08-08
KR102056503B1 (ko) 2019-12-16
CN109347681A (zh) 2019-02-15
JP6358958B2 (ja) 2018-07-18
CN104094248A (zh) 2014-10-08
US20130205128A1 (en) 2013-08-08

Similar Documents

Publication Publication Date Title
KR102056503B1 (ko) 분산 시스템에서의 자체 업데이트 기능
EP3561669B1 (en) Containerized application deployment
US11038809B1 (en) Migration of files contained on virtual storage to a cloud storage infrastructure
US8386501B2 (en) Dynamically splitting multi-tenant databases
US8909767B2 (en) Cloud federation in a cloud computing environment
US8799453B2 (en) Managing networks and machines for an online service
US20120102480A1 (en) High availability of machines during patching
EP3254193B1 (en) Dynamically controlled workload execution
US8751656B2 (en) Machine manager for deploying and managing machines
US20130332610A1 (en) Unified storage/vdi provisioning methodology
US20140007092A1 (en) Automatic transfer of workload configuration
KR20110030447A (ko) 가상 머신 및 애플리케이션 수명들의 동기화
SG189417A1 (en) Upgrade of highly available farm server groups
EP3254194B1 (en) Dynamically controlled workload execution by an application
US11588698B2 (en) Pod migration across nodes of a cluster
US20120102484A1 (en) Installing software remotely using a high privilege process
Buchanan et al. Operating Azure Kubernetes Service
Kaufman et al. Implementing High Availability

Legal Events

Date Code Title Description
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant