KR102406564B1 - 비용-효율적 고-가용성 다중-단일-테넌트 서비스들 - Google Patents

비용-효율적 고-가용성 다중-단일-테넌트 서비스들 Download PDF

Info

Publication number
KR102406564B1
KR102406564B1 KR1020217013101A KR20217013101A KR102406564B1 KR 102406564 B1 KR102406564 B1 KR 102406564B1 KR 1020217013101 A KR1020217013101 A KR 1020217013101A KR 20217013101 A KR20217013101 A KR 20217013101A KR 102406564 B1 KR102406564 B1 KR 102406564B1
Authority
KR
South Korea
Prior art keywords
auxiliary
computing resources
tasks
resources
pool
Prior art date
Application number
KR1020217013101A
Other languages
English (en)
Other versions
KR20210060615A (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 구글 엘엘씨
Priority to KR1020227018764A priority Critical patent/KR20220080029A/ko
Publication of KR20210060615A publication Critical patent/KR20210060615A/ko
Application granted granted Critical
Publication of KR102406564B1 publication Critical patent/KR102406564B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45554Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool

Landscapes

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

Abstract

VM들의 보조 풀이 보조 서비스들 또는 작업들을 실행하는 데 사용되며, 이는 대응하는 주 VM의 장애 시 축출될 수 있다. 주 자원의 장애의 검출 시, 보조 서비스들 또는 작업들이 보조 풀 자원들로부터 축출되고, 보조 풀 자원들은 장애가 발생한 주 자원의 작업들에 자동으로 배정될 수 있다. 이와 관련하여, 보조 작업은 선점형 작업으로 간주될 수 있고, 주 자원의 서비스 또는 작업보다 낮은 우선순위인 서비스들 또는 작업들을 포함한다. 보조 풀의 컴퓨팅 자원들을 사용하여 보조 또는 선점형 작업들을 실행함으로써, 이 기술은 그렇지 않으면 유휴 자원들일 것을 사용한다. 이것은 유익하게 보조 작업들을 위해 추가 및 별개의 컴퓨팅 자원들을 배정하지 않아도 되고, 네트워크 자원들의 더 효율적 사용으로 이어지고, 비용들을 절감할 수 있다.

Description

비용-효율적 고-가용성 다중-단일-테넌트 서비스들
[0001] 본 출원은 2019년 3월 8일자로 출원된 미국 특허 출원 번호 제 16/297,054호에 대한 연속이며, 그에 의해 상기 출원의 개시내용은 인용에 의해 본원에 포함된다.
[0002] MST(multi-single-tenant) 서비스들은 별개의 VM(virtual machine)과 같은 격리된 환경에서 개별 서비스 인스턴스(service instance)들을 실행한다. Cloud SQL이 그러한 서비스의 예이다. 개별 서비스 인스턴스들이 단일 VM 상에서 실행되기 때문에, VM의 장애는 서비스 인스턴스의 비가용성을 초래할 것이다. 장애들은 계획되거나 또는 계획되지 않을 수 있지만, 두 경우 모두 VM이 중단(take down)될 것을 요구한다. 계획된 장애의 예는 커널에 대한 중요한 보안 패치들과 같은 VM 업데이트들이다. 서비스의 제어 평면은 VM 장애들을 검출할 수 있고, 새롭게 생성된 VM으로 페일오버(failover)할 수 있다. 계획된 페일오버들의 경우, 이전 VM을 중단하기 이전에 새로운 VM을 재생성함으로써 VM에 대한 비가용성 시간을 줄일 수 있다. 그러나 두 접근법들 모두는 타겟 구역에서 요청된 머신 유형의 용량의 부족으로 인해 사용자들이 VM들을 생성할 수 없는 VM 부족 현상(stockouts)이 발생하기 쉽다. 이것은 고객의 기존 서비스 인스턴스들이 무기한으로 이용가능하지 않게 되므로 수용불가능하다.
[0003] Cloud SQL과 같은 일부 MST 서비스들은 상시 대기 보조 VM이 주 VM에 장애가 발생한 경우 부족 현상을 회피하기 위해 그리고 주 VM에 장애가 발생한 경우 또는 업데이트될 필요가 있는 경우 빠른 페일오버를 수행가능하기 위해 항상 주 VM 옆에 계속 있는 HA(High Availability) 솔루션들을 제공한다. 주 및 보조 VM들은 통상적으로 로드 밸런서 엔드포인트(load balancer endpoint) 뒤에 놓여 인스턴스의 IP 어드레스가 페일오버 동안 안정적으로 유지되게 한다. 이러한 액티브-패시브 모델(active-passive model)을 요구하는 서비스들의 경우, 보조 VM이 페일오버 동안 독점적으로 사용되고 그렇지 않으면 유휴 상태로 유지된다. 이것은 서비스의 단일 인스턴스와 연관된 컴퓨팅 자원들을 두 배로 늘리고 서비스 비용을 거의 두 배만큼 많이 증가시킬 수 있으므로 비용이 많이 든다. 이러한 추가된 비용으로 인해, 보조 VM은 통상적으로 계획되지 않은 장애들의 경우 거의 매 1-2 년마다 한 번씩만 사용되고, 계획된 업데이트들의 경우 매 분기마다 한 번씩만 사용된다.
[0004] 본 개시내용은 가동 시간, 페일오버 시간 등과 같은 가용성 특성들을 희생하지 않고 HA 솔루션에서 대기 VM을 유지하는 비용을 절감하는 솔루션을 제공한다. VM들의 보조 풀(pool), 또는 더 일반적으로 컴퓨팅 자원들이 보조 서비스들 또는 작업들을 실행하는 데 사용된다. 주어진 VM의 장애의 검출 시, 보조 서비스들 또는 작업들이 보조 풀 자원들로부터 축출(evict)되어, 그러한 보조 풀 자원들은 장애가 발생한(failed) VM의 주 작업 또는 서비스에 자동으로 배정될 수 있다. 이와 관련하여, 보조 작업은 선점형 작업으로 간주될 수 있고, 장애가 발생한 서비스 또는 작업보다 더 낮은 우선순위를 받을 자격이 있는 서비스들 또는 작업들을 포함한다. 보조 풀의 컴퓨팅 자원들을 사용하여 보조 또는 선점형 작업들을 실행함으로써, 이러한 기술은 그렇지 않으면 유휴 자원들일 것을 사용한다. 이것은 유익하게 보조 작업들을 위해 추가 및 별개의 컴퓨팅 자원들을 배정해야 하는 것을 회피한다. 이것은 네트워크 자원들의 더 효율적 사용으로 이어지고, 그렇지 않으면 잠재적으로 이용률이 낮은(under-utilized) 네트워크들을 성장시켜야 하는 것을 잠재적으로 완화하며, 이는 "HA"(high availability) 비용들의 절감을 초래한다.
[0005] 본 개시내용의 일 양상은 분산 시스템에서 서비스들을 제공하기 위해 사용되는 풀링(pool)된 컴퓨팅 자원들을 관리하기 위한 방법을 제공한다. 방법은, 분산 시스템의 데이터 프로세싱 하드웨어에 의해, 하나 이상의 주 작업들을 실행하기 위해 지정된 컴퓨팅 자원들의 주 풀을 결정하는 단계, 분산 시스템의 데이터 프로세싱 하드웨어에 의해, 하나 이상의 주 작업들과 상이한 하나 이상의 보조 작업들을 실행하기 위해 지정된 컴퓨팅 자원들의 보조 풀을 결정하는 단계, 주 풀로부터의 컴퓨팅 자원들을 사용하여 실행되는 하나 이상의 주 작업들 중 주어진 하나와 연관된 장애 조건의 검출 시 보조 풀로부터의 컴퓨팅 자원들을 사용하여 하나 이상의 보조 작업들 중 주어진 하나를 선점하는 단계, 및 주어진 보조 작업으로부터 장애 조건과 연관된 주어진 주 작업으로 보조 컴퓨팅 자원들을 배정하는 단계를 포함한다.
[0006] 본 개시내용의 다른 양상은 분산 시스템에서 서비스들을 제공하기 위해 사용되는 풀링된 컴퓨팅 자원들을 관리하기 위한 시스템을 제공한다. 시스템은 하나 이상의 주 작업들을 실행하기 위해 지정된 컴퓨팅 자원들의 주 풀, 하나 이상의 주 작업들과 상이한 하나 이상의 보조 작업들을 실행하기 위해 지정된 컴퓨팅 자원들의 보조 풀, 및 하나 이상의 프로세서들을 포함한다. 하나 이상의 프로세서들은 주 풀로부터의 컴퓨팅 자원들을 사용하여 실행되는 하나 이상의 주 작업들 중 주어진 하나와 연관된 장애 조건을 검출하고, 장애 조건 검출 시 보조 풀로부터의 컴퓨팅 자원들을 사용하여 하나 이상의 보조 작업들 중 주어진 하나를 선점하고, 그리고 주어진 보조 작업으로부터 장애 조건과 연관된 주어진 주 작업으로 보조 컴퓨팅 자원들을 배정하도록 구성된다. 장애 조건은 예컨대, 계획된 시스템 업데이트, 예상치 못한 장애, 또는 컴퓨팅 자원의 비가용성을 초래하는 다른 이벤트일 수 있다.
[0007] 분산 시스템에서 서비스들을 제공하기 위해 사용되는 풀링된 컴퓨팅 자원들을 관리하는 방법을 수행하기 위한 하나 이상의 프로세서들에 의해 실행가능한 명령들을 저장하는 비-일시적 컴퓨터 판독가능한 매체로서, 그 방법은, 하나 이상의 주 작업들을 실행하기 위해 지정된 컴퓨팅 자원들의 주 풀을 결정하는 단계, 하나 이상의 주 작업들과 상이한 하나 이상의 보조 작업들을 실행하기 위해 지정된 컴퓨팅 자원들의 보조 풀을 결정하는 단계, 주 풀로부터의 컴퓨팅 자원들을 사용하여 실행되는 하나 이상의 주 작업들 중 주어진 하나와 연관된 장애 조건의 검출 시 보조 풀로부터의 컴퓨팅 자원들을 사용하여 하나 이상의 보조 작업들 중 주어진 하나를 선점하는 단계, 및 주어진 보조 작업으로부터 장애 조건과 연관된 주어진 주 작업으로 보조 컴퓨팅 자원들을 배정하는 단계를 포함한다.
[0008] 도 1은 본 개시내용의 양상들에 따라 네트워크를 통해 분산 시스템과 통신하는 사용자 디바이스를 포함하는 예시적 시스템의 개략도이다.
[0009] 도 2는 본 개시내용의 양상들에 따른, 페일오버 동안 도 1의 시스템의 예를 예시한다.
[0010] 도 3은 본 개시내용의 양상들에 따라 가상 컴퓨팅 환경을 실행하는 예시적 분산 시스템의 개략도이다.
[0011] 도 4는 본 개시내용의 양상들에 따른 주 가상 머신들의 풀 및 보조 가상 머신들의 풀을 갖는 예시적 가상 컴퓨팅 환경의 개략도이다.
[0012] 도 5는 본 개시내용의 양상들에 따른 예시적 컴퓨팅 디바이스이다.
[0013] 도 6은 본 개시내용의 양상들에 따라 가상 머신 인스턴스들의 가용성을 유지하는 예시적 방법의 흐름도이다.
개요
[0014] VM들의 보조 풀이 보조 서비스들 또는 작업들을 실행하는 데 사용되며, 이는 대응하는 주 VM의 장애 시 축출될 수 있다. 예컨대, 주 자원의 장애의 검출 시, 보조 서비스들 또는 작업들이 보조 풀 자원들로부터 축출되고, 보조 풀 자원들은 장애가 발생한 주 자원의 작업들에 자동으로 배정될 수 있다. 이와 관련하여, 보조 작업은 선점형 작업으로 간주될 수 있고, 주 자원의 서비스 또는 작업보다 낮은 우선순위인 서비스들 또는 작업들을 포함한다. 보조 풀의 컴퓨팅 자원들을 사용하여 보조 또는 선점형 작업들을 실행함으로써, 이러한 기술은 그렇지 않으면 유휴 자원들일 것을 사용한다. 이것은 유익하게 보조 작업들을 위해 추가 및 별개의 컴퓨팅 자원들을 배정해야 하는 것을 회피한다. 이것은 네트워크 자원들의 더 효율적 사용으로 이어지고, 그렇지 않으면 잠재적으로 이용률이 낮은 네트워크들을 성장시켜야 하는 것을 잠재적으로 완화하며, 그에 의해 HA 비용들을 절감한다.
[0015] 이러한 기술의 하위 양상은 페일오버 조건을 검출하는 것에 대한 응답으로 컴퓨팅 자원들을 적절하게 완화(dial down)하고, 보조 작업으로부터 장애가 발생한(failed) 또는 장애를 발생시킨(failing) 작업으로 컴퓨팅 자원들을 전달하는 것을 포함한다. 예컨대, 선점형 또는 보조 작업이 보조 풀의 자원들을 사용하여 컨테이너(container)(예컨대, 도커(docker), lxc, 등)에서 실행되고 있는 경우, 그러한 자원들은 보조 작업으로부터 주 또는 메인 작업으로 동적으로 시프팅(shift)될 수 있다. 자원들의 동적 시프팅 또는 배정은 보조 작업에 의해 사용되고 있는 자원들(예컨대, CPU, 메모리, 네트워킹 등)을 점진적으로 감소시키는 것 및 그 감소와 함께 해제(free-up)된 또는 현재 미사용된 자원들을 주 작업에 배정하는 것을 포함한다. 그런 다음, 해제된 자원들은 단지 예로서, 다른 도커 컨테이너에서 VM 상에서 주 작업을 실행할 수 있다. 실행 중이었던 VM이 장애의 원인이었으면, 주 작업은 상이한 VM으로 페일오버할 수 있다. 상이한 VM은 보조 VM 풀로부터 배정된다. 동적으로 배정되고 있는 자원이 CPU를 포함하는 경우, 사용되고 있는 각각의 CPU의 성능 또는 CPU들의 수는 원하는 결과를 달성하기 위해 스로틀링(throttle)될 수 있다. 컴퓨팅 자원들의 완화 및 재배정은 보조 작업의 성능에 영향을 미칠 수 있지만, 적어도 그것이 적절하게 셧다운될 기회를 제공하는 동시에 주 작업의 성능에 큰 영향을 미치는 것을 회피할 수 있다.
[0016] 컴퓨팅 자원들의 완화 및 재배정은 사전 결정된 기간, 예컨대, 소위 "유예 기간" 동안 발생하도록 세팅될 수 있다. 이 기간 동안, 보조 작업들에 의해 사용되는 컴퓨팅 자원들이 완화될 때, 이들은 주 작업에 의한 사용을 위해 배정된다. 일단 유예 기간이 끝나면, 보조 작업은 종료되며, 예컨대, 보조 작업의 컨테이너가 해체(tear down)된다. 유예 기간 동안, 실제로 보조 작업과 주 작업 사이의 컴퓨팅 자원들의 재분산은 반비례 관계를 포함한다. 즉, 보조 작업에 사용되는 컴퓨팅 자원들이 완화 또는 감소되는 동안, 주 작업은 그것에 이용가능해진 자원들로 시작될 수 있고, 주 작업에 이용가능해진 자원들은 이들이 보조 작업의 완료에 의해 해제되므로 증가될 수 있다.
[0017] VM이 생성되는 시간에 주 작업이 시작될 수 있고, 그 시점에 이용가능한 모든 자원들(단일 "vCPU"(virtual CPU))을 사용하고, 그런 다음 이러한 자원들이 페일오버 시간에 유예 기간 동안 증가될 수 있는 경우들이 존재할 수 있다. 예로서, 다양한 주 작업들은 트래픽을 서빙하지 않는 유휴 모드로 지칭될 수 있는 것으로 보조 VM들 상에서 실행될 수 있다. 대부분의 자원들이 통상적으로 보조 작업들에 배정될 것이므로, CPU, 메모리, 네트워크와 같은 적당한 양의 자원들이 이러한 작업들에 배정될 것이다. 이 예에서, 주 작업 X를 실행하는 VM에 장애가 발생할 때, 그 주 작업은 보조 VM으로 빠르게 페일오버할 수 있고, 주 작업 X는 이미 보조 VM 상에서 실행되고 있을 것이고, 그에 따라 단지 그것에 더 많은 자원들이 배정될 필요가 있다.
[0018] 다른 예로서, 이러한 기술은 서버가 단일 테넌트 물리적 서버(single tenant physical server)로서 역할을 하는 "베어 메탈(bare metal)" 환경에서 또한 적용될 수 있다. 더 일반적으로, "베어 메탈"은 호스트로부터의 컨테이너화를 위한 임의의 형태 또는 가상화 기술의 제거와 관련된다. 예컨대, 위에서 설명된 바와 같이 작업이 VM 상에서 실행되고 있는 경우, 그것은 이제 전체 물리적 머신 상에서 실행될 것이고, 머신을 중단시키는 장애들은 장애들이 VM과 관련하여 처리되는 방법과 유사하게 처리될 것이다. 그러한 환경에서, 자원들의 슬롯은 특정 베어 메탈 호스트 상에서 예비될 수 있다. 보조 작업은 그 슬롯 상에서 생성된 컨테이너에서 실행될 수 있다. 베어-메탈 예에서, 애플리케이션들은 VM들에서 실행되지 않고, 오히려 물리적 머신의 OS(operating system) 상에서 실행된다. 따라서 보조 작업들이 VM들 또는 컨테이너들에 있는 동안, 주 워크로드는 머신의 OS 상에서 직접 실행되고 있다. 따라서, 이러한 개시내용은 또한 가상화 계층을 사용하고 있지 않는 클러스터들에 적용된다.
[0019] 이러한 기술의 다른 양상에서, 페일오버 또는 보조 VM 풀은 최악의 경우의 장애 시나리오들을 수용하도록 사이즈가 조정될 수 있다. 예컨대, 페일오버 또는 보조 VM 풀의 사전 결정된 부분은 발생할 수 있는 페일오버들이 영향을 받지 않도록 보조 또는 선점형 작업들을 실행하기 위해 따로 세팅될 수 있다. 이와 관련하여, 해제된 상태로 유지되어야 하고 페일오버들에 이용가능한 페일오버 VM들의 수를 표시하는 임계치가 식별될 수 있다. 임계치는 선점형 또는 보조 작업들의 실행 시간 및 발생할 수 있는 페일오버들의 통상적인 수에 기초할 수 있다. 특정 예로서, 선점형 작업이 최대 및 최소 실행 시간을 가지면(예컨대, 최소 10분이상 24시간 미만 동안 실행해야 함), 발생할 필요가 있는 페일오버들의 통상적인 수에 영향을 미치지 않고 실행될 수 있는 선점형 작업들의 최대 수에 대해 예측들이 이루어질 수 있다. 이로써, 선점형 작업 요청들이 만족될 수 있고, 컴퓨팅 자원들에 대한 최대 임계치가 소비될 때까지 그리고 선점형 작업들을 위해 따로 세팅된 컴퓨팅 자원들이 없거나 또는 부족할 때까지 계속 론칭(launch)될 수 있다. 이 시점에서, 페일오버 작업들은 보조 또는 선점형 풀에서 론칭되지 않을 것이다. 또한, 추가 페일오버 또는 보조 풀 컴퓨팅 자원들이 필요하도록 페일오버들의 수가 충분히 커지면, 풀의 임계 섹션 내의 선점형 작업들의 일부 부분은 자원들을 해제하도록 축출되어 추가 페일오버 요청들을 수용할 수 있다. 이러한 방식으로, 이용가능한 임계 자원들이 임계 제한보다 약간 낮은 레벨로 감소될 것이다.
[0020] 옵션으로서, 선점형 또는 보조 작업들은 이용가능한 VM들에 걸쳐 균등하게 확산될 수 있거나 또는 다른 VM을 사용하기 이전에 주어진 VM의 자원들을 완전히 소비하도록 이용가능한 VM들에 걸쳐 연속적으로 분산될 수 있다.
예시적 시스템들
[0021] 도 1은 주 VM 인스턴스들(350P)의 풀 상에서 실행되는 가상 컴퓨팅 환경(300)에서, 소프트웨어 애플리케이션과 같은 서비스(360)를 실행하도록 구성된 분산 시스템(200)을 포함하는 예시적 시스템(100)을 예시한다. 고객과 같은 사용자(130)와 연관된 컴퓨터와 같은 사용자 디바이스(120)는 네트워크(140)를 통해 분산 시스템(200)과 통신하여 가상 컴퓨팅 환경(300)에서 실행되는 주 VM 인스턴스들(350P)을 배치(deploy), 제거 또는 수정하기 위한 커맨드들(150)을 제공한다. 주 VM 인스턴스들(350P)의 풀의 주 VM 인스턴스들(350P)의 수는 사용자 디바이스(120)로부터 수신된 커맨드들(150)에 기초하여 동적으로 변경될 수 있다. 일부 예들에서, 소프트웨어 애플리케이션(360)은 MST 서비스와 연관되고, 각각의 주 VM 인스턴스(350P)는 소프트웨어 애플리케이션(360)의 대응하는 개별 서비스 인스턴스(362)(예컨대, MST 서비스의 단일 테넌트)를 실행하도록 구성된다.
[0022] 가상 환경(300)은 보조 작업들을 실행하는 보조 VM 인스턴스들(350S)의 풀을 더 포함한다. 예컨대, 보조 작업들은 주 VM 인스턴스들(350P) 상에서 실행되는 서비스(360)보다 우선순위가 낮을 수 있어, 보조 작업들에 대한 중단(disruption)들은 주 인스턴스들에 대한 중단들보다 문제가 적다. 도 2와 관련하여 아래에서 추가로 논의되는 바와 같이, 하나 이상의 주 VM 인스턴스들(350P)이 이용가능하지 않게 되는 경우, 분산 시스템(200)은 이용가능하지 않은 VM 인스턴스로부터 페일오버된 작업들을 실행하기 위해 보조 VM 인스턴스들(350S) 중 하나 이상을 식별하도록 구성된 컴퓨팅 디바이스(112)를 실행한다.
[0023] 일부 예들에서, 주 VM 인스턴스들(350P)의 풀은 단일 사용자/고객(130)과 연관되고, 보조 VM 인스턴스들(350S)의 풀은 또한 단일 사용자/고객(130)에 의한 사용을 위한 것이다. 다른 예들에서, 주 VM 인스턴스들(350P)의 풀은 상이한 사용자/고객(130)과 연관되고, 다른 서브-풀들로부터 격리된 각각의 서브-풀을 갖는 주 VM 인스턴스들(350P)의 다수의 서브-풀들을 포함한다. 이러한 예들에서, 보조 VM 인스턴스들(350S)의 풀은 서브-풀들 중 임의의 것에서의 하나 이상의 주 VM 인스턴스들(350P)이 이용가능하지 않은 경우들에서 다수의 상이한 사용자/고객들(130) 사이에 공유된다.
[0024] 일부 구현들에서, 가상 컴퓨팅 환경(300)은 분산 시스템(200)의 자원들(110, 110a-n) 상에 오버레이된다. 자원들(110)은 하드웨어 자원들(110) 및 소프트웨어 자원들(110)을 포함할 수 있다. 하드웨어 자원들(110)은 컴퓨팅 디바이스들(112)(데이터 프로세싱 디바이스들 및 데이터 프로세싱 하드웨어로 또한 지칭됨) 또는 비-일시적 메모리(114)(메모리 하드웨어로 또한 지칭됨)를 포함할 수 있다. 소프트웨어 자원들(110)은 소프트웨어 애플리케이션들, 소프트웨어 서비스들, API(application programming interface)들 등을 포함할 수 있다. 소프트웨어 자원들(110)은 하드웨어 자원들(110)에 상주할 수 있다. 예컨대, 소프트웨어 자원들(110)은 메모리 하드웨어(114)에 저장될 수 있거나 또는 하드웨어 자원들(110)(예컨대, 컴퓨팅 디바이스들(112))은 소프트웨어 자원들(110)을 실행하는 것일 수 있다.
[0025] 네트워크(140)는 LAN(local area network), WAN(wide area network), 및/또는 인터넷과 같은 다양한 유형들의 네트워크들을 포함할 수 있다. 네트워크(140)는 장거리 네트워크(예컨대, 인터넷 또는 WAN)를 표현할 수 있지만, 일부 구현들에서, 네트워크(140)는 LAN(local area network)과 같은 더 짧은 범위 네트워크를 포함한다. 일부 구현들에서, 네트워크(140)는 표준 통신 기술들 및/또는 프로토콜들을 사용한다. 따라서, 네트워크(140)는 Ethernet, WiFi(Wireless Fidelity)(예컨대, 802.11), WiMAX(worldwide interoperability for microwave access), 3G, LTE(Long Term Evolution), DSL(digital subscriber line), ATM(asynchronous transfer mode), InfiniBand, PCI Express Advanced Switching, Bluetooth, BLE(Bluetooth Low Energy) 등과 같은 기술들을 사용하는 링크들을 포함할 수 있다. 유사하게, 네트워크(132) 상에서 사용되는 네트워킹 프로토콜들은 MPLS(multiprotocol label switching), TCP/IP(transmission control protocol/Internet protocol), UDP(User Datagram Protocol), HTTP(hypertext transport protocol), SMTP(simple mail transfer protocol), FTP(file transfer protocol) 등을 포함할 수 있다. 네트워크(140)를 통해 교환되는 데이터는 HTML(hypertext markup language), XML(extensible markup language) 등을 포함하는 기술들 및/또는 포맷들을 사용하여 표현될 수 있다. 또한, 링크들의 전부 또는 일부는 SSL(secure sockets layer), TLS(transport layer security), VPN(virtual private network)들, IPsec(Internet Protocol security) 등과 같은 종래의 암호화 기술들을 사용하여 암호화될 수 있다. 다른 예들에서, 네트워크(140)는 위에서 설명된 것들 대신에 또는 이들과 더불어 맞춤형 및/또는 전용 데이터 통신 기술들을 사용한다.
[0026] 도 2에 도시된 바와 같이, 주 VM 인스턴스(350P)는 계획되지 않은 그리고 예상치 못한 장애, 주 VM 인스턴스(350P)의 재생성 지연의 결과로서 그리고/또는 주 VM 인스턴스(350P)의 커널에 대한 중요한 보안 패치들에 대한 업데이트들과 같은 주 VM 인스턴스(350P)에 대한 계획된 유지 보수 시간 기간의 결과로서 이용가능하지 않게 될 수 있다. 하나 이상의 주 VM 인스턴스들(350P)의 비가용성이 계획되거나 또는 검출될 때(이를테면, 업데이트 동안 또는 장애 동안), 주 인스턴스는 보조 VM들(350S) 중 하나 이상으로 자동으로 페일오버할 수 있다. 예컨대, 분산 시스템(200)은 이용가능하지 않은 VM 인스턴스로부터 작업들을 실행하기 위해 보조 VM 인스턴스들(350S) 중 하나 이상을 식별하도록 구성된 컴퓨팅 디바이스(112)를 실행한다. 이와 관련하여, 분산 시스템은 이용가능하지 않은 주 VM 인스턴스들(350P)과 연관된 하나 이상의 개별 서비스 인스턴스들(362)의 가용성을 유지한다. 식별된 하나 이상의 보조 VM들이 이미 보조 작업들을 실행하고 있기 때문에, 이러한 작업들은 장애가 발생한 주 VM 인스턴스로부터 작업들에 대한 자원들을 해제하기 위해 완화 및 제거될 수 있다. 예컨대, 보조 서비스들 또는 작업들이 보조 풀 자원들로부터 축출되고, 보조 풀 자원들은 장애가 발생한 주 자원의 작업들에 자동으로 배정될 수 있다. 이와 관련하여, 보조 작업은 선점형 작업으로 간주될 수 있고, 주 자원의 서비스 또는 작업보다 낮은 우선순위인 서비스들 또는 작업들을 포함한다. 보조 풀의 컴퓨팅 자원들을 사용하여 보조 또는 선점형 작업들을 실행함으로써, 이러한 기술은 그렇지 않으면 유휴 자원들일 것을 사용한다. 이것은 유익하게 보조 작업들을 위해 추가 및 별개의 컴퓨팅 자원들을 배정해야 하는 것을 회피한다. 이것은 네트워크 자원들의 더 효율적 사용으로 이어지고, 그렇지 않으면 잠재적으로 이용률이 낮은 네트워크들을 성장시켜야 하는 것을 잠재적으로 완화하며, 그에 의해 HA 비용들을 절감한다.
[0027] 위의 개시내용은 VM 인스턴스들로서 자원들을 지칭하지만, 컨테이너들, 베어 메탈 환경에서의 서버 슬롯들 등과 같은 다른 유형들의 자원들이 사용될 수 있다는 것이 이해되어야 한다. 예컨대, 보조 자원들 상에서 실행되는 보조 작업들의 어레인지먼트(arrangement)는 서버가 단일 테넌트 물리적 서버로서 역할을 하는 "베어 메탈" 환경에 적용될 수 있다. 더 일반적으로, "베어 메탈"은 호스트로부터의 컨테이너화를 위한 임의의 형태 또는 가상화 기술의 제거와 관련된다. 예컨대, 작업은 전체 물리적 머신 상에서 실행될 수 있고, 머신을 중단시키는 장애들은 장애들이 VM과 관련하여 처리되는 방법과 유사하게 처리될 것이다. 그러한 환경에서, 자원들의 슬롯은 특정 베어 메탈 호스트 상에서 예비될 수 있다. 보조 작업은 그 슬롯 상에서 생성된 컨테이너에서 실행될 수 있다. 베어-메탈 예에서, 애플리케이션들은 VM들에서 실행되지 않고, 오히려 물리적 머신의 운영 시스템(OS) 상에서 실행된다. 따라서 보조 작업들이 VM들 또는 컨테이너들에 있는 동안, 주 워크로드는 머신의 OS 상에서 직접 실행되고 있다. 따라서, 이러한 개시내용은 또한 가상화 계층을 사용하지 않는 클러스터들에 적용된다.
[0028] 도 3에 도시된 예에서, 분산 시스템(200)은 가상 컴퓨팅 환경(300)을 실행하는 자원들(110)(예컨대, 하드웨어 자원들(110))의 집합(collection)(210)을 포함한다. 가상 컴퓨팅 환경(300)은 VMM(virtual machine manager)(320) 및 하나 이상의 소프트웨어 애플리케이션들(360)의 인스턴스들(362a, 362a-n)을 실행하도록 구성된 하나 이상의 VM(virtual machine)들(350, 350a-n)을 실행하는 VM(virtual machine) 계층(340)을 포함한다. 각각의 하드웨어 자원(110)은 하나 이상의 pCPU(physical central processing units)(112)("데이터 프로세싱 하드웨어(112)") 및 메모리 하드웨어(114)를 포함할 수 있다. 각각의 하드웨어 자원(110)이 단일 물리적 프로세서(112)를 갖는 것으로 도시되어 있지만, 임의의 하드웨어 자원(110)은 다수의 물리적 프로세서들(112)을 포함할 수 있다. 호스트 OS(operating system)(312)은 자원들(110)의 집합(220) 상에서 실행될 수 있다.
[0029] 일부 예들에서, VMM(320)은 VM들(350)을 생성, 인스턴스화(instantiate)/배치 및 실행하도록 구성된 소프트웨어, 펌웨어 또는 하드웨어 중 적어도 하나를 포함하는 하이퍼바이저(hypervisor)(320)(예컨대, Compute Engine)에 대응한다. 하나 이상의 VM들(350)을 실행하는 VMM(320)과 연관된 데이터 프로세싱 하드웨어(112)와 같은 컴퓨터는 호스트 머신(310)으로 지칭될 수 있는 반면, 각각의 VM(350)은 게스트 머신으로 지칭될 수 있다. 여기서, VMM(320) 또는 하이퍼바이저는 각각의 VM(350)에 가상 운영 플랫폼을 갖는 대응하는 게스트 OS(operating system)(354, 354a-n)를 제공하고, VM(350) 상에서 대응하는 게스트 OS(354)의 실행을 관리하도록 구성된다. 본원에서 사용되는 바와 같이, 각각의 VM(350)은 "인스턴스" 또는 "VM 인스턴스"로 지칭될 수 있다. 일부 예들에서, 다양한 운영 시스템들의 다수의 인스턴스들은 가상화된 자원들을 공유할 수 있다. 예컨대, Linux® 운영 시스템의 제1 VM(350), Windows® 운영 시스템의 제2 VM(350) 및 OS X® 운영 시스템의 제3 VM(350)은 모두 단일 물리적 x86 머신 상에서 실행될 수 있다.
[0030] VM 계층(340)은 하나 이상의 가상 머신들(350)을 포함한다. 분산 시스템(200)은 사용자(130)가 요청 시, 즉, 네트워크(140)를 통해 분산 시스템(200)에 커맨드(150)(도 1)를 전송함으로써, VM들(350)을 론칭하는 것이 가능하다. 예컨대, 커맨드(150)는 대응하는 운영 시스템(312)과 연관된 이미지 또는 스냅샷(snapshot)을 포함할 수 있고, 분산 시스템(200)은 이미지 또는 스냅샷을 사용하여 대응하는 VM(350)에 대한 루트 자원(root resource)(110)을 생성할 수 있다. 여기서, 커맨드(150) 내의 이미지 또는 스냅샷은 부트 로더(boot loader), 대응하는 운영 시스템(312) 및 루트 파일 시스템을 포함할 수 있다. 커맨드(150)의 수신에 대한 응답으로, 분산 시스템(200)은 대응하는 VM(350)을 인스턴스화하고, 인스턴스화 시 VM(350)을 자동으로 시작할 수 있다. VM(350)은 실제 컴퓨터 시스템(예컨대, 호스트 머신(310))을 에뮬레이션(emulate)하고, 특수 하드웨어, 소프트웨어 또는 이들의 조합을 포함할 수 있는 실제 컴퓨터 시스템 또는 가설 컴퓨터 시스템의 컴퓨터 아키텍처 및 기능들에 기초하여 동작한다. 일부 예들에서, 분산 시스템(200)은 하나 이상의 VM들(350)을 론칭하기 이전에 사용자(130)를 허가하고 인증한다. 소프트웨어 애플리케이션(360)의 인스턴스(362) 또는 단순히 인스턴스는 분산 시스템(200)의 데이터 프로세싱 하드웨어(112) 상에 호스팅된(데이터 프로세싱 하드웨어(112) 상에서 실행되는) VM(350)을 지칭한다.
[0031] 호스트 OS(312)는 기본 호스트 머신 하드웨어를 가상화하고, 하나 이상의 VM 인스턴스들(350)의 동시 실행을 관리한다. 예컨대, 호스트 OS(312)는 VM 인스턴스들(350a-n)을 관리할 수 있고, 각각의 VM 인스턴스(350)는 기본 호스트 머신 하드웨어의 시뮬레이션된 버전 또는 상이한 컴퓨터 아키텍처를 포함할 수 있다. 각각의 VM 인스턴스(350, 350a-n)와 연관된 하드웨어의 시뮬레이션된 버전은 가상 하드웨어(352, 352a-n)로 지칭된다. 가상 하드웨어(352)는 호스트 머신(310)의 하나 이상의 물리적 프로세서들(112)을 에뮬레이션하는 하나 이상의 vCPU(virtual central processing unit)들("가상 프로세서")을 포함할 수 있다(도 3). 가상 프로세서는 VM 인스턴스(350)와 연관된 "컴퓨팅 자원"으로 상호 교환가능하게 지칭될 수 있다. 컴퓨팅 자원은 대응하는 개별 서비스 인스턴스(362)를 실행하기 위해 요구되는 타겟 컴퓨팅 자원 레벨을 포함할 수 있다.
[0032] 가상 하드웨어(352)는, 가상 프로세서와 통신하고 동작들을 수행하기 위해 가상 프로세서에 의해 실행가능한 게스트 명령들(예컨대, 게스트 소프트웨어)을 저장하는 가상 메모리를 더 포함할 수 있다. 예컨대, 가상 프로세서는, 가상 프로세서로 하여금, 소프트웨어 애플리케이션(360)의 대응하는 개별 서비스 인스턴스(362)를 실행하게 하는 가상 메모리로부터의 명령들을 실행할 수 있다. 여기서, 개별 서비스 인스턴스(362)는 그것이 가상 하드웨어(352) 또는 물리적 데이터 프로세싱 하드웨어(112)에 의해 실행되고 있는지를 결정할 수 없는 게스트 인스턴스로 지칭될 수 있다. 대응하는 VM 인스턴스(350) 상에서 실행되는 게스트 서비스 인스턴스(362) 또는 VM 인스턴스(350) 자체가 오작동하거나 또는 중단되는 경우, 대응하는 개별 서비스 인스턴스들(362)을 실행하는 다른 VM 인스턴스들은 영향을 받지 않을 것이다. 호스트 머신의 마이크로프로세서(들)는, 가상 하드웨어(352)가, 게스트 소프트웨어 명령들이 코드-재기록, 재컴파일링 또는 명령 에뮬레이션을 요구하지 않고 호스트 머신의 마이크로프로세서 상에서 직접 실행될 수 있게 함으로써 애플리케이션들(360)의 소프트웨어 인스턴스들(362)을 효율적으로 실행하는 것을 가능하게 하기 위한 프로세서-레벨 메커니즘들을 포함할 수 있다. 가상 메모리는 VM 인스턴스(350)와 연관된 "메모리 자원"으로 상호 교환가능하게 지칭될 수 있다. 메모리 자원은 대응하는 개별 서비스 인스턴스(362)를 실행하기 위해 요구되는 타겟 메모리 자원 레벨을 포함할 수 있다.
[0033] 가상 하드웨어(352)는 물리적 메모리 하드웨어(114) 상의 서비스에 대한 스토리지 용량을 제공하는 적어도 하나의 가상 스토리지 디바이스를 더 포함할 수 있다. 적어도 하나의 가상 스토리지 디바이스는 VM 인스턴스(350)와 연관된 스토리지 자원으로 지칭될 수 있다. 스토리지 자원은 대응하는 개별 서비스 인스턴스(362)를 실행하기 위해 요구되는 타겟 스토리지 자원 레벨을 포함할 수 있다. 각각의 VM 인스턴스(350) 상에서 실행되는 게스트 소프트웨어는 네트워크 경계들을 추가로 할당(예컨대, 네트워크 어드레스들을 배정)할 수 있으며, 이를 통해 개개의 게스트 소프트웨어가 내부 네트워크(330)(도 3), 외부 네트워크(140)(도 1) 또는 둘 다를 통해 도달가능한 다른 프로세스들과 통신할 수 있다. 네트워크 경계들은 VM 인스턴스(350)와 연관된 네트워크 자원으로 지칭될 수 있다.
[0034] 각각의 VM(350) 상에서 실행되는 게스트 OS(354)는 VM 인스턴스(350)에 의해 애플리케이션(360)의 대응하는 개별 서비스 인스턴스(362, 362a-n)의 실행을 제어하는 소프트웨어를 포함한다. VM 인스턴스(350, 350a-n) 상에서 실행되는 게스트 OS(354, 354a-n)는 다른 VM 인스턴스들(350) 상에서 실행되는 다른 게스트 OS(354)와 동일하거나 또는 상이할 수 있다. 일부 구현들에서, VM 인스턴스(350)는 개별 서비스 인스턴스(362)를 실행하기 위해 게스트 OS(354)를 요구하지 않는다. 호스트 OS(312)는 호스트 OS(312)의 커널(316)을 위해 예비된 가상 메모리를 더 포함할 수 있다. 커널(316)은 커널 확장들 및 디바이스 구동기들을 포함할 수 있고, 호스트 OS(312)의 사용자 프로세스 공간에서 실행되는 프로세스들에 대한 제한들을 벗어난 특정 특권 동작들을 수행할 수 있다. 특권 동작들의 예들은 상이한 어드레스 공간들에 대한 액세스, 메모리 관리 유닛들과 같은 호스트 머신(310)의 특수 기능 프로세서 유닛들에 대한 액세스 등을 포함한다. 호스트 OS(312) 상에서 실행되는 통신 프로세스(314)는 VM 네트워크 통신 기능의 일부를 제공할 수 있고, 커널(316)과 연관된 커널 프로세스 공간 또는 사용자 프로세스 공간에서 실행될 수 있다.
[0035] 도 4를 참조하면, 일부 구현들에서, 분산 시스템(200) 상에서 실행되는 가상 컴퓨팅 환경(300)은, 상이한 물리적 위치들에 로케이팅(locate)될 수 있고 상이한 능력들 및 컴퓨터 아키텍처들을 가질 수 있는 다수의 호스트 머신들(310, 310a-n)(예컨대, 랙 장착 서버(rack mounted server)들 또는 상이한 컴퓨팅 디바이스들과 같은 하나 이상의 데이터 프로세싱 장치)을 포함한다. 호스트 머신들(310)은 내부 데이터 통신 네트워크(330)(내부 네트워크)를 통해 서로 통신할 수 있다. 내부 네트워크(330)는 예컨대, 하나 이상의 유선(예컨대, Ethernet) 또는 무선(예컨대, Wi-Fi) 네트워크들을 포함할 수 있다. 일부 구현들에서, 내부 네트워크(330)는 인트라넷이다. 선택적으로, 호스트 머신들(310)은 또한 인터넷과 같은 외부 네트워크(140) 상의 디바이스들과 통신할 수 있다. 다른 유형들의 외부 네트워크들이 가능하다.
[0036] 도시된 예에서, 각각의 호스트 머신(310)은, 호스트 머신(310)의 기본 하드웨어(즉, 데이터 프로세싱 하드웨어(112) 및 메모리 하드웨어(114))를 가상화하고, 다수의 VM 인스턴스들(350)의 동시 실행을 관리하는 대응하는 호스트 OS(operating system)(312, 312a-n)를 실행한다. 예컨대, 호스트 운영 시스템들(312a-312n-1)은 주 VM들(350P)의 풀을 집합적으로 제공하기 위해 다수의 주 VM 인스턴스들(350P)의 동시 실행을 각각 관리하는 반면, 호스트 머신(310n) 상에서 실행되는 호스트 운영 시스템(312n)은 보조 VM 인스턴스들(350S)의 풀의 실행을 관리한다. 여기서, 전용 호스트 머신(예컨대, 호스트 머신(310n))은 보조 VM 인스턴스들(350S)의 전체 풀을 호스팅하여, 그에 의해 (충분한 자원들을 갖는 상이한 호스트 머신(310)으로 마이그레이션(migrate)하도록 페일오버 보조 VM 인스턴스들(350S)을 요구하지 않고) 페일오버의 경우 충분한 자원들이 보조 VM 인스턴스들(350S)에 의한 사용에 이용가능하도록 보장한다. 그러나, 다른 예들에서, 보조 VM 인스턴스들(350S) 중 하나 이상은, 하나 이상의 주 VM 인스턴스들(350P)을 또한 실행하고 있을 수 있는 다수의 호스트 머신들(310)에 걸쳐 인스턴스화될 수 있다.
[0037] 일부 구현들에서, 가상 머신 매니저(320)는 주 VM 매니저(322)를 사용하여, 지정된 호스트 머신(310) 상에서의 실행을 위해 각각의 주 VM 인스턴스(350P)를 생성하여 주 VM 인스턴스들(350)의 풀에 배치한다. VMM(320)은 대응하는 개별 서비스 인스턴스(362)를 실행하기 위해 요구되는 컴퓨팅 자원 레벨들, 메모리 자원 레벨들, 네트워크 규격들 및/또는 스토리지 자원 레벨들을 배정함으로써 각각의 주 VM 인스턴스(350)를 생성할 수 있다. 따라서, 주 VM 인스턴스들(350P)의 풀의 각각의 주 VM 인스턴스(350P)는 대응하는 주 VM 인스턴스(350)에 대한 메모리 자원 요건들, 컴퓨팅 자원 요건들, 네트워크 규격 요건들 또는 스토리지 자원 요건들 중 적어도 하나를 표시하는 대응하는 VM 유형(380)을 포함할 수 있다. 도시된 예에서, 주 VM 인스턴스들(350P)의 풀의 모든 주 VM 인스턴스들(350P)은 유형 A 또는 유형 B의 VM 유형(380)을 갖는다. 따라서, 유형 A의 VM 유형(380)은 유형 B의 VM 유형(380)과 상이한 컴퓨팅 자원 레벨들, 메모리 자원 레벨들, 네트워크 규격 또는 스토리지 자원 레벨들 중 적어도 하나를 포함할 수 있다.
[0038] VMM(320)에서의 주 VM 매니저(322)는 주 VM 인스턴스들(350P)의 풀에 배치된 각각의 VM 인스턴스(350P)의 액티브 로그(active log), 각각의 VM 인스턴스(350P)의 VM 유형(380) 및 각각의 주 VM 인스턴스(350P) 상에서 실행되는 대응하는 개별 서비스 인스턴스(362)를 유지할 수 있다. 로그는 주 VM 인스턴스들(350P)이 주 VM 인스턴스들(350P)의 풀에 배치되거나 또는 주 VM 인스턴스들(350P)의 풀로부터 제거될 때 업데이트될 수 있다. 추가적으로, 주 VM 인스턴스들(350P)의 풀은 빌딩, 구역 또는 지역과 같은 다양한 장애 도메인(fault domain)들에서 주 VM 인스턴스들(350P)의 분산에 기초하여 하위-풀들로 추가로 분배될 수 있다. 일부 구현들에서, 개별 서비스 인스턴스들(362)은 각각 다수의 다른 컨테이너들과 함께 단일 주 VM 인스턴스(350P) 상에서 실행되는 대응하는 컨테이너에서 실행된다. 따라서, 로그는 각각의 주 VM 인스턴스(350P) 상에서 실행되는 컨테이너들의 리스트뿐만 아니라 각각의 컨테이너에서 실행되는 대응하는 서비스 인스턴스(362)를 표시할 수 있다.
[0039] 주 VM 매니저(322)는 각각의 주 VM 인스턴스(350P)에 대한 비가용성의 비율을 추가로 획득한다. 예컨대, 각각의 주 VM 인스턴스(350P)는 장애가 발생하기 이전에 주 VM 인스턴스(350P)가 동작하는 데 예상되는 기간(예컨대, 일 수)을 표시하는 대응하는 MTTF(mean-time-to-failure)를 포함할 수 있다. MTTF 값은 365일(예컨대, 1년) 또는 720일(예컨대, 2년)일 수 있다. 각각의 주 VM 인스턴스(350P)에 대한 비가용성 비율은 대응하는 주 VM 인스턴스를 재생성하는 데 예상되는 시간 길이(예컨대, 부족 값(stock-out value))를 더 포함할 수 있다. 예컨대, VM 인스턴스(350)는 부족 값과 연관될 수 있는 반면, 분산 시스템(200)은 자원들(즉, 프로세싱 자원들 및/또는 메모리 자원들)이 VM 인스턴스(350)를 재생성하는 데 이용가능해질 때까지 대기한다. MTTF 및 각각의 주 VM 인스턴스(350P)를 재생성하는 데 예상되는 시간 길이는 동일하거나 또는 유사한 VM 유형(즉, 프로세싱 자원들, 메모리 자원들, 스토리지 자원들, 네트워크 구성)을 갖는 VM 인스턴스들(350)의 실행을 관측함으로써 통계 분석 및/또는 머신 러닝 기법들을 통해 획득될 수 있다.
[0040] 일부 예들에서, 주 VM 인스턴스들(350P)의 풀의 모든 주 VM 인스턴스들(350P)은 동일한 비가용성 비율을 포함한다. 다른 예들에서, 유형 A VM 유형(380)과 연관된 주 VM 인스턴스들(350P)은 유형 B VM 유형(380)과 연관된 주 VM 인스턴스들(350P)에 대한 비가용성 비율과 상이한 비가용성 비율을 포함한다. 위의 설명들에 기술된 바와 같이, 각각의 주 VM 인스턴스(350P)는 장애를 발생시키기 이전에 주 VM 인스턴스(350P)가 동작하는 데 예상되는 기간(예컨대, 일 수)을 표시하는 대응하는 MTTF 값 및 주 VM 인스턴스(350P)를 재생성하는 데 예상되는 시간 길이를 표시하는 부족 값을 포함할 수 있다. MTTF 값 및 부족 값은 관측된 모니터링 데이터뿐만 아니라 시간에 따른 유사한 VM 인스턴스들(350)의 실행을 관측하는 머신 러닝 알고리즘들로부터 도출될 수 있다.
[0041] VMM(320)은 주 VM 인스턴스들(350P)의 풀의 대응하는 주 VM 인스턴스(350P) 상에서 실행되는 소프트웨어 애플리케이션(360)의 각각의 개별 서비스 인스턴스(362)를 표시하는 서비스 인스턴스 레포지토리(service instance repository)(324) 및 대응하는 개별 서비스 인스턴스(362)를 실행하기 위해 요구되는 타겟 자원 레벨들을 추가로 유지할 수 있다. VMM(320)은 보조 작업들이 각각의 보조 VM 인스턴스(350S)에서 실행되고 있다는 것의 표시를 서비스 인스턴스 레포지토리(324)에 추가로 유지할 수 있다. 이와 관련하여, VMM(320)은 주 VM들(350P) 중 하나 이상의 장애 시, 보조 VM들(350S) 상에서 장애가 발생한 주 VM으로부터의 인스턴스들을 실행하기 위해 보조 VM들(350S)로부터 축출할 작업들을 결정할 수 있다. 그러한 결정은 예컨대, 보조 작업들과 연관된 우선순위 값, 장애가 발생한 주 VM으로부터 페일오버된 주 인스턴스를 실행하는 데 필요한 공간의 양, 특정 보조 작업들을 비우는 데 필요한 시간의 양, 장애가 발생한 주 VM이 이용가능하지 않을 것으로 예상되는 시간의 양, VM 유형(예컨대, A 또는 B), 또는 다양한 다른 팩터(factor)들 중 임의의 것에 기초할 수 있다.
[0042] 일부 예들에서, VMM(320)은 주 VM 인스턴스들(350P)의 풀의 하나 이상의 주 VM 인스턴스들(350P)이 오프라인으로 수행되는 유지 보수/업데이트들에 이용가능하지 않을 것일 때 유지 보수 시간 기간들을 식별하는 유지 보수 스케줄러(326)를 포함한다. 예컨대, 유지 보수 스케줄러(326)는 유지 보수/업데이트들을 수행하기 위해 계획된 유지 보수 시간 기간 동안 이용가능하지 않을 것인 주 VM 인스턴스들(350P)의 수를 표시할 수 있다. 일 예에서, 분산 시스템(200)은 2-퍼센트(2%) 배치율(deployment rate)(또는 다른 백분율/값)로 커널 업데이트를 주기적으로 롤아웃(roll out)하여, 주 VM 인스턴스들(350P)의 풀의 주 VM 인스턴스들(350P)의 2-퍼센트는 업데이트를 완료하기 위해 계획된 유지 보수 시간 기간 동안 이용가능하지 않을 것이다. 커널 업데이트는 VM 인스턴스(350)와 연관된 커널(216)에서 보안 패치들을 수리(fix)하는 것을 포함할 수 있다. 일부 예들에서, VMM(320)은 유지 보수/업데이트들을 수행하기 위해 계획된 유지 보수 시간 기간 동안 이용가능하지 않을 것인 주 VM 인스턴스들(350P)의 수(또는 백분율)를 표시하는 계획된 페일오버 메시지(302)를 컴퓨팅 디바이스(304)로부터 수신한다. 컴퓨팅 디바이스(304)는 분산 시스템(200)의 관리자에 속할 수 있다. 선택적으로, 사용자 디바이스(120)는 사용자(130)가 주 VM 인스턴스들(350P)의 풀의 하나 이상의 주 VM 인스턴스들(350P)을 업데이트하기를 원할 때 외부 네트워크(140)를 통해 계획된 페일오버 메시지(302)를 제공할 수 있다.
[0043] 일부 구현들에서, 보조 VM 인스턴스들(350S)의 풀은 고객/사용자(130)가 다수의 주 VM 인스턴스들(350P)을 배치하고, 분산 시스템(200)의 다른 사용자들/고객들과 보조 VM 인스턴스들(350S)의 풀의 공유를 방지하는 특정 네트워킹 또는 격리 요건들을 가질 때, 전체적(global)인 것이기 보다는 고객/사용자(130)별이다. 다른 구현들에서, 보조 VM 인스턴스들(350S)의 풀은 분산 시스템(200)의 모든 고객들/사용자들에 걸쳐 모든 개별 서비스 인스턴스들(362) 사이에서 공유된다.
[0044] 일부 예들에서, VMM(320)은 보조 VM 매니저(328)를 포함하며, 이는 주 VM(350P)로부터 보조 VM들(350S)로 페일오버된 인스턴스들을 배정하는 방법을 결정할 수 있다. 예컨대, 보조 VM 매니저(328)는 페일오버된 주 VM 인스턴스들을 위한 공간을 생성하기 위해 어떤 보조 VM들(350S)로부터 어떤 작업들이 축출되어야 하는지를 결정할 수 있다. 위에서 언급된 바와 같이, 그러한 결정은 예컨대, 보조 작업들과 연관된 우선순위 값, 장애가 발생한 주 VM으로부터 페일오버된 주 인스턴스를 실행하는 데 필요한 공간의 양, 특정 보조 작업들을 비우는 데 필요한 시간의 양, 장애가 발생한 주 VM이 이용가능하지 않을 것으로 예상되는 시간의 양, VM 유형(예컨대, A 또는 B), 또는 다양한 다른 팩터들 중 임의의 것에 기초할 수 있다. 축출된 보조 작업들은 보조 풀 자원들이 페일오버된 주 인스턴스들에 의해 더 이상 필요하지 않을 때까지 일시적으로 중지될 수 있다. 예컨대, 일단 장애가 발생한 VM이 백업되어 주 인스턴스를 실행하면, 보조 VM은 이전에 축출된 보조 작업들을 재개할 수 있다. 다른 예들에서, 보조 작업들은 적절하게 셧다운되고, 그런 다음 유예 기간 이후에 종료될 수 있다. 예컨대, 작업은 그것이 X 초 내에 셧다운될 것이라는 통지를 시스템으로부터 수신할 수 있고, 그것이 적절한 셧다운을 수행한다는 것이 의미하는 것을 선택할 수 있다. 예컨대, 일부 애플리케이션들은 상태를 안정적 스토리지로 플러싱(flush)하도록 선택할 수 있다.
[0045] 일부 구현들에 따르면, 보조 작업들을 축출하는 것은 페일오버 조건을 검출하는 것에 대한 응답으로 컴퓨팅 자원들을 적절하게 완화하고, 보조 작업으로부터 장애가 발생한 또는 장애를 발생시킨 작업으로 컴퓨팅 자원들을 전달하는 것을 포함한다. 예컨대, 선점형 또는 보조 작업이 보조 VM들(350S) 중 하나에서 실행되고 있는 경우, 보조 VM에 할당된 자원들은 보조 작업으로부터 주 또는 메인 작업으로 동적으로 시프팅될 수 있다. 자원들의 동적 시프팅 또는 배정은 해제된 자원들을 주 작업에 배정하는 동안 보조 작업에 의해 사용되고 있는 자원들을 점진적으로 감소시키는 것을 포함할 수 있다. 예컨대, 보조 자원들은 이들이 해제될 때 배정될 수 있다. 그런 다음, 해제된 자원들은 주 작업을 실행할 수 있다. 동적으로 배정되고 있는 자원이 CPU를 포함하는 경우, 사용되고 있는 각각의 CPU의 성능 또는 CPU들의 수는 원하는 결과를 달성하기 위해 스로틀링될 수 있다. 컴퓨팅 자원들의 완화 및 재배정은 보조 작업의 성능에 영향을 미칠 수 있지만, 적어도 그것이 적절하게 셧다운될 기회를 제공하는 동시에 주 작업의 성능에 큰 영향을 미치는 것을 회피할 수 있다.
[0046] 컴퓨팅 자원들의 완화 및 재배정은 사전 결정된 기간, 예컨대, 소위 "유예 기간" 동안 발생하도록 세팅될 수 있다. 이 기간 동안, 보조 작업들에 의해 사용되는 컴퓨팅 자원들이 완화될 때, 이들은 주 작업에 의한 사용을 위해 배정된다. 일단 유예 기간이 끝나면, 보조 작업은 종료되며, 예컨대, 보조 작업의 컨테이너가 해체된다. 유예 기간 동안, 실제로 보조 작업과 주 작업 사이의 컴퓨팅 자원들의 재분산은 반비례 관계를 포함한다. 즉, 보조 작업에 사용되는 컴퓨팅 자원들이 완화 또는 감소되는 동안, 주 작업은 그것에 이용가능해진 자원들로 시작될 수 있고, 주 작업에 이용가능해진 자원들은 이들이 보조 작업의 완료에 의해 해제되므로 증가될 수 있다.
[0047] 보조 작업들이 주 페일오버 작업들이 그들의 자원들을 증가시키는 것에 비례하여 자원들을 적절하게 감소시키고 더 적은 자원들을 사용할 수 있는 다수의 상이한 방식들이 존재한다. 예컨대, 컨테이너들에 대한 입력/출력(I/O)의 양은 동적으로 튜닝(tune)될 수 있다. 이로써, 보조 작업들에는 10초, 30초, 2분 등과 같은 사전 결정된 양의 시간이 할당되어 종료되기 이전에 서서히 중단될 수 있다. 사전 결정된 양의 시간은 모든 보조 작업들에 대해 동일할 수 있거나 또는 그것은 작업의 유형, 보조 작업에 배정된 자원들, 장애가 발생한 주 작업의 긴급성, 또는 임의의 다른 팩터들에 기초하여 상이할 수 있다. 사전 결정된 양의 시간 동안, 주 작업은 보조 작업에 의해 해제된 자원들로 페일오버된다. 다른 예로서, 보조 작업에 할당된 자원들은 매 5초, 10초, 30초 또는 다른 시간 인터벌과 같이 증분식으로 감소될 수 있다. 이러한 자원들이 증분식으로 해제되므로, 이들은 증가하고 있는 주 페일오버 작업에 배정될 수 있다. 이들은 동적 자원 배정이 수행될 수 있는 방법에 대한 몇 가지 예들이지만, 다수의 다른 방식들이 가능하다는 것이 이해되어야 한다.
[0048] 동적 자원 배정이 수행되는 방식은 예컨대, 감소하고 있는 선점형 보조 작업의 유형에 기초할 수 있다. 예컨대, 많은 I/O를 요구하는 보조 작업은 유사한 양의 I/O를 유지하면서 그것의 CPU 사용량을 예비로 감소시키고 그런 다음 추후에 그것의 I/O를 감소시킬 수 있다. 다른 예로서, 동적 자원 배정은 주 작업의 실패 시 보조 작업의 프로세싱 상태에 기초할 수 있다. 예컨대, 보조 작업이 사전 정의된 특정 임계치 미만과 같은 적은 양의 계산만을 수행하는 경우, 작업은 비교적 짧은 시간 기간 내에 종료될 수 있다. 예컨대, 보조 작업이 종료되기 이전에 감소하는 데 할당된 시간은 보조 작업에 의해 수행되고 있는 계산의 양에 비례할 수 있다.
[0049] 일부 예들에 따르면, 적절한 감소 이후에 보조 작업이 종료되기 보다는, 보조 작업은 더 적은 자원들을 사용하여 계속 실행될 수 있다. 예컨대, 보조 작업들은 범위의 하단에 최소 CPU 수, 메모리의 양, I/O 등과 같이 필요한 자원들의 범위를 특정하고, 범위의 상단에 자원들의 원하는 최대 수를 특정할 수 있다. 보조 작업은 범위의 더 높은 단에 더 가까운 자원들의 양을 사용하여 실행될 수 있지만, 주 인스턴스의 페일오버가 발생할 때, 보조 작업은 감소될 수 있다. 예컨대, 배정된 자원들 중 일부는 페일오버 작업을 실행하기 위해 해제될 수 있어, 보조 작업이 그런 다음 범위의 하단에 더 가까운 자원들의 양을 사용하여 실행되고 있다.
[0050] VM이 생성되는 시간에 주 작업이 시작될 수 있고, 그 시점에 이용가능한 모든 자원들(예컨대, 단일 "vCPU"(virtual CPU))을 사용하고, 그런 다음 이러한 자원들이 페일오버 시간에 유예 기간 동안 증가될 수 있는 경우들이 존재할 수 있다. 예로서, 다양한 주 작업들은 트래픽을 서빙하지 않는 유휴 모드로 지칭될 수 있는 것으로 보조 VM들 상에서 실행될 수 있다. 대부분의 자원들이 통상적으로 보조 작업들에 배정될 것이므로, CPU, 메모리, 네트워크와 같은 적당한 양의 자원들이 이러한 작업들에 배정될 수 있다. 이 예에서, 주 작업 X를 실행하는 VM이 실패할 때, 그 주 작업은 그것이 이동될 필요가 없을 것이기 때문에 보조 VM으로 빠르게 페일오버할 수 있다. 오히려, 주 작업 X의 유휴 모드가 실행되기 시작할 것이다.
[0051] 일부 예들에 따르면, 보조 VM 매니저(328)는 보조 작업들의 상이한 양상들을 제어하는 복수의 별개의 매니저들을 포함할 수 있다. 단지 예로서, 보조 VM 매니저(328)는 보조 자원들에 대한 정보를 제어하는 클러스터 자원 매니저(cluster resource manager)를 포함할 수 있다. 추가로, 보조 VM 매니저(328)는 페일오버 트랜지션 매니저(failover transition manager)를 포함할 수 있다. 장애가 발생할 때, 장애 트랜지션 매니저는 페일오버할 노드를 결정하고, 트랜지션을 조정(orchestrate)할 수 있다. 보조 VM 매니저(328)는 선점형 작업 스케줄러를 더 포함할 수 있다. 예컨대, 선점형 작업을 실행하기 위한 요청이 수신될 때, 선점형 작업 스케줄러는 보조 풀에서 이용가능한 자원들을 파악할 수 있고, 그러한 자원들을 요청에 배정할 수 있다. 이러한 다른 매니저들이 보조 VM 매니저(328)의 가능한 하위-매니저들로서 설명되지만, 이러한 다른 매니저들 중 일부 또는 전부는 보조 VM 매니저(328)에 의해 또는 주 CM 매니저(322), 유지 보수 스케줄러(326) 등과 같은 다른 매니저들에 의해 처리되는 기능들 일 수 있다는 것이 이해되어야 한다. 다른 예들에서, 이러한 다른 매니저들 중 일부 또는 전부는 VM 매니저(320) 내의 추가 매니저들일 수 있다.
[0052] 일부 시나리오들에서, VMM(320)(또는 호스트 머신(310))은 주 VM 인스턴스들(350P)의 풀에서 주 VM 인스턴스들(350P) 중 하나의 비가용성을 식별한다. 예컨대, 각각의 주 VM 인스턴스(350P)는 에이전트(agent)를 사용하여, 주 VM 인스턴스(350P)가 동작 중인지 여부, 또는 장애로 인해 이용가능하지 않은지 여부를 표시하는 동작 상태(370)를 수집할 수 있다. 호스트 머신들(310)은 서로에 추가하여, VM 인스턴스들(350)의 동작 상태(370)를 VMM(320)에 통신할 수 있다. 본원에서 사용되는 바와 같이, "에이전트"라는 용어는 VM 인스턴스(350)의 동작 상태(370)를 식별하기 위해 (게스트 OS(354)의 일부로서 그리고/또는 게스트 OS(354) 상에서 실행되는 애플리케이션으로서) VM 인스턴스(350) 내부에 배치되는 코드의 일부분을 포함하는(그러나 이에 제한되지 않음) 평범하고 통상적인 의미를 망라하는 광범위한 용어이다. 따라서, VMM(320) 및/또는 호스트 머신(310)은 주 VM 인스턴스들(350) 중 하나의 비가용성을 표시하는 동작 상태(370)를 수신할 수 있고, 이용가능하지 않은 주 VM 인스턴스(350P)로 하여금, 이용가능하지 않은 주 VM 인스턴스(350P)와 연관된 개별 서비스 인스턴스(362)의 실행을 시작하기 위해 보조 VM 인스턴스들(350S) 중 하나로 페일오버하게 할 수 있다. 도 3에 도시된 예에서, 동작 상태(370)는 호스트 머신(310n-1) 상에서 실행되고 유형 B의 VM 유형(380)을 갖는 주 VM 인스턴스들(350P) 중 하나의 (예컨대, 장애로 인한) 비가용성을 표시하여, 그에 의해 주 VM 인스턴스(350P)로 하여금, 유형 B'의 VM 유형(380)을 갖는 보조 VM 인스턴스(350S)로 페일오버하게 하여 유형 B의 VM 유형(380)을 갖는 이용가능하지 않은 주 VM 인스턴스(350P)와 연관된 개별 서비스 인스턴스(362)의 실행을 시작한다.
[0053] VM 매니저(320)는 선점할 보조 작업들을 선택할 수 있다. 그러한 선택은 다양한 팩터들 중 임의의 것에 기초하여, 다양한 방식들 중 임의의 것으로 수행될 수 있다. 일 예에 따르면, VM 매니저(320)는 이용가능한 자원들이 가장 많은 보조 풀에서, VM 또는 베어 메탈과 같은 노드를 식별할 수 있다. 예컨대, 그것은 CPU가 가장 많은 노드, 메모리가 가장 많은 노드, I/O가 가장 많은 노드, 또는 이들의 임의의 조합을 식별할 수 있다. 일부 예들에서, 머신 러닝 기법들은 주어진 시점에 이용가능한 자원들을 가장 많이 갖고 있을 것인 노드를 예측하는 데 사용될 수 있다. 예컨대, 주 인스턴스들의 장애들은 페일오버를 위해 자원들을 해제하기 위한 선점을 위해 선택된 보조 작업들과 함께, 시간이 지남에 따라 추적될 수 있다. 그러한 정보는 특정 주 인스턴스에 장애가 발생할 시기를 예측하기 위한 모델을 생성하는 데 사용될 수 있다. 모델은 이를테면, 그 시점에 이용가능한 자원들을 가장 많이 갖고 있을 보조 노드들을 결정함으로써 그 시점에 선점할 보조 작업을 추가로 예측할 수 있다.
[0054] 다른 예들에 따르면, 선점할 보조 작업들이 위치에 기초하여 선택될 수 있다. 예컨대, 글로벌 클라우드 제공업체(global cloud provider)는 전 세계 상이한 도시들 또는 국가들에서 다수의 데이터 센터들을 가질 수 있다. 장애가 발생한 노드에 물리적으로 근접한 노드는 페일오버 작업들을 처리하기 위해 선택될 수 있어, 페일오버 작업들은 짧은 물리적 거리를 통해 전송될 수 있고, 그에 따라 선택된 노드 상에서 더 빠르게 증가될 수 있다.
[0055] 다른 예에 따르면, 선점할 보조 작업들에 대한 선택은 페일오버 작업을 위한 애플리케이션 유형 및 그 애플리케이션에 필요한 하드웨어 자원들의 유형에 기초할 수 있다. 예컨대, 일부 애플리케이션들은 GPU(graphics processing unit)들, 가속기들 등을 요구할 수 있다. 따라서, 페일오버 애플리케이션에 의해 요구되는 그러한 하드웨어 자원들을 갖는 노드들이 선택될 수 있고, 그러한 노드들 상에서 실행되는 보조 작업들이 선점될 수 있다.
[0056] 소프트웨어 애플리케이션(즉, 소프트웨어 자원(110))은 컴퓨팅 디바이스로 하여금 작업을 수행하게 하는 컴퓨터 소프트웨어를 지칭할 수 있다. 일부 예들에서, 소프트웨어 애플리케이션은 "애플리케이션", "앱" 또는 "프로그램"으로 지칭될 수 있다. 예시적 애플리케이션들은 시스템 진단 애플리케이션들, 시스템 관리 애플리케이션들, 시스템 유지 관리 애플리케이션들, 단어 프로세싱 애플리케이션들, 스프레드시트 애플리케이션들, 메시징 애플리케이션들, 미디어 스트리밍 애플리케이션들, 소셜 네트워킹 애플리케이션들 및 게이밍 애플리케이션들을 포함하지만, 이들에 제한되지 않는다.
[0057] 비-일시적 메모리(예컨대, 메모리 하드웨어(114))는 컴퓨팅 디바이스(예컨대, 데이터 프로세싱 하드웨어(112))에 의해 사용하기 위해 일시적 또는 영구적으로 프로그램들(예컨대, 명령들의 시퀀스들) 또는 데이터(예컨대, 프로그램 상태 정보)를 저장하기 위해 사용되는 물리적 디바이스들일 수 있다. 비-일시적 메모리(114)는 휘발성 및/또는 비-휘발성 어드레싱가능한 반도체 메모리일 수 있다. 비-휘발성 메모리의 예들은, 플래시 메모리 및 ROM(read-only memory)/PROM(programmable read-only memory)/EPROM(erasable programmable read-only memory)/EEPROM(electronically erasable programmable read-only memory)(예컨대, 부트 프로그램들과 같은 펌웨어에 통상적으로 사용됨)을 포함하지만, 이들에 제한되는 것은 아니다. 휘발성 메모리의 예들은, RAM(random access memory), DRAM(dynamic random access memory), SRAM(static random access memory), PCM(phase change memory)뿐만 아니라 디스크들 또는 테이프들을 포함하지만, 이들에 제한되는 것은 아니다.
[0058] 도 5는 본 문서에서 설명된 시스템들 및 방법들을 구현하기 위해 사용될 수 있는 예시적 컴퓨팅 디바이스(500)의 개략도이다. 컴퓨팅 디바이스(500)는 다양한 형태들의 디지털 컴퓨터들, 이를테면, 랩탑들, 데스크탑들, 워크스테이션들, 개인용 디지털 보조기들, 서버들, 블레이드 서버들, 메인 프레임들 및 다른 적절한 컴퓨터들을 표현하도록 의도된다. 여기서 도시된 컴포넌트들, 이들의 연결들 및 관계들, 및 이들의 기능들은 단지 예들인 것을 의미하며, 본 문서에 설명 및/또는 청구된 발명들의 구현들을 제한하는 것으로 의미되지 않는다. 컴퓨팅 디바이스(500)는, 프로세서(510), 메모리(520), 저장 디바이스(530), 메모리(520) 및 고속 확장 포트들(550)에 연결되는 고속 인터페이스/제어기(540), 및 저속 버스(570) 및 저장 디바이스(530)에 연결되는 저속 인터페이스/제어기(560)를 포함한다. 컴포넌트들(510, 520, 530, 540, 550, 및 560) 각각은 다양한 버스들을 사용하여 상호 연결되며, 공통 마더보드 상에 또는 적절하게 다른 방식들로 장착될 수 있다. 프로세서(510)는, 고속 인터페이스(540)에 커플링된 디스플레이(580)와 같은 외부 입력/출력 디바이스 상의 GUI(graphical user interface)에 대한 그래픽 정보를 디스플레이하기 위해, 메모리(520)에 또는 저장 디바이스(530) 상에 저장된 명령들을 포함하는, 컴퓨팅 디바이스(500) 내의 실행을 위한 명령들을 프로세싱할 수 있다. 다른 구현들에서, 다수의 프로세서들 및/또는 다수의 버스들은, 다수의 메모리들 및 메모리 유형들과 함께 적절하게 사용될 수 있다. 또한, 다수의 컴퓨팅 디바이스들(500)이 연결될 수 있으며, 각각의 디바이스는 (예컨대, 서버 뱅크, 블레이드 서버들의 그룹 또는 멀티-프로세서 시스템으로서) 필요한 동작들의 부분들을 제공한다.
[0059] 메모리(520)는 컴퓨팅 디바이스(500) 내에 정보를 비-일시적으로 저장한다. 메모리(520)는 컴퓨터 판독가능한 매체, 휘발성 메모리 유닛(들) 또는 비-휘발성 메모리 유닛(들)일 수 있다. 비-일시적 메모리(520)는 컴퓨팅 디바이스에 의해 사용하기 위해 일시적 또는 영구적으로 프로그램들(예컨대, 명령들의 시퀀스들) 또는 데이터(예컨대, 프로그램 상태 정보)를 저장하기 위해 사용되는 물리적 디바이스들일 수 있다.
[0060] 비-휘발성 메모리의 예들은, 플래시 메모리 및 ROM(read-only memory)/PROM(programmable read-only memory)/EPROM(erasable programmable read-only memory)/EEPROM(electronically erasable programmable read-only memory)(예컨대, 부트 프로그램들과 같은 펌웨어에 통상적으로 사용됨)을 포함하지만, 이들에 제한되는 것은 아니다.
[0061] 휘발성 메모리의 예들은, RAM(random access memory), DRAM(dynamic random access memory), SRAM(static random access memory), PCM(phase change memory)뿐만 아니라 디스크들 또는 테이프들을 포함하지만, 이들에 제한되는 것은 아니다.
[0062] 저장 디바이스(530)는 컴퓨팅 디바이스(500)에 대한 대용량 저장을 제공할 수 있다. 일부 구현들에서, 저장 디바이스(530)는 컴퓨터 판독가능한 매체이다. 다양한 상이한 구현들에서, 저장 디바이스(530)는, 플로피 디스크 디바이스, 하드 디스크 디바이스, 광학 디스크 디바이스, 또는 테이프 디바이스, 플래시 메모리 또는 다른 유사한 고체 상태 메모리 디바이스, 또는 저장 영역 네트워크 또는 다른 구성들에서의 디바이스들을 포함하는 디바이스들의 어레이일 수 있다. 추가적 구현들에서, 컴퓨터 프로그램 제품은 정보 캐리어에서 유형적으로 구현된다. 컴퓨터 프로그램 제품은, 실행될 때 위에서 설명된 것들과 같은 하나 이상의 방법들을 수행하는 명령들을 포함한다. 정보 캐리어는, 메모리(520), 저장 디바이스(530) 또는 프로세서(510) 상의 메모리와 같은 컴퓨터 또는 기계 판독가능한 매체이다.
[0063] 단지 예시로서, 고속 제어기(540)는 컴퓨팅 디바이스(500)에 대한 대역폭-집약적 동작들을 관리하지만, 저속 제어기(560)는 더 낮은 대역폭-집약적 동작들을 관리한다. 일부 구현들에서, 고속 제어기(540)는 메모리(520)에, 디스플레이(580)에 (예컨대, 그래픽 프로세서 또는 가속기를 통해), 그리고 고속 확장 포트들(550)에 커플링되고, 이들은 다양한 확장 카드들(도시되지 않음)을 수용할 수 있다. 일부 구현들에서, 저속 제어기(560)는 저장 디바이스(530) 및 저속 확장 포트(590)에 커플링된다. 다양한 통신 포트들(예컨대, USB, Bluetooth, Ethernet, 무선 Ethernet)을 포함할 수 있는 저속 확장 포트(590)는, 하나 이상의 입력/출력 디바이스들, 이를테면, 키보드, 포인팅 디바이스, 스캐너, 또는 네트워킹 디바이스, 이를테면, 스위치 또는 라우터에, 예컨대, 네트워크 어댑터를 통해, 커플링될 수 있다.
[0064] 컴퓨팅 디바이스(500)는, 도면에 도시된 바와 같이, 다수의 상이한 형태들로 구현될 수 있다. 예컨대, 그것은 표준 서버(500a)로서 구현되거나, 또는 랩탑 컴퓨터(500b)로서 그러한 서버들(500a)의 그룹에서 다수 회 구현되거나, 또는 랙 서버 시스템(500c)의 일부로서 구현될 수 있다.
[0065] 본원에서 설명된 시스템들 및 기법들의 다양한 구현들이 디지털 전자 및/또는 광학 회로망, 집적 회로망, 특수하게 설계된 ASIC(application specific integrated circuit)들, 컴퓨터 하드웨어, 펌웨어, 소프트웨어 및/또는 이들의 조합들로 실현될 수 있다. 이러한 다양한 구현들은, 저장 시스템, 적어도 하나의 입력 디바이스 및 적어도 하나의 출력 디바이스로부터 데이터 및 명령들을 수신하고 데이터 및 명령들을 이들에 송신하도록 커플링될 수 있는 특수 목적 또는 범용인 적어도 하나의 프로그래밍가능한 프로세서를 포함하는 프로그래밍가능한 시스템 상에서 실행가능한 그리고/또는 인터프리팅가능한 하나 이상의 컴퓨터 프로그램들로의 구현을 포함할 수 있다.
[0066] 이러한 컴퓨터 프로그램들(프로그램들, 소프트웨어, 소프트웨어 애플리케이션들 또는 코드로서 또한 알려져 있음)은 프로그래밍가능한 프로세서에 대한 기계 명령들을 포함하며, 고-레벨 프로시저 및/또는 객체-지향 프로그래밍 언어로 구현될 수 있고 그리고/또는 어셈블리어/기계어로 구현될 수 있다. 본원에서 사용되는 바와 같이, "기계 판독가능한 매체" 및 "컴퓨터 판독가능한 매체"라는 용어들은, 기계 판독가능한 신호로서 기계 명령들을 수신하는 기계 판독가능한 매체를 포함하는 프로그래밍가능한 프로세서에 기계 명령들 및/또는 데이터를 제공하기 위해 사용되는 임의의 컴퓨터 프로그램 제품, 비-일시적 컴퓨터 판독가능한 매체, 장치 및/또는 디바이스(예컨대, 자기 디스크들, 광학 디스크들, 메모리, PLD(Programmable Logic Device)들)를 지칭한다. "기계 판독가능한 신호"라는 용어는 기계 명령들 및/또는 데이터를 프로그래밍가능한 프로세서에 제공하기 위해 사용되는 임의의 신호를 지칭한다.
[0067] 본 명세서에서 설명된 프로세스들 및 로직 흐름들은 입력 데이터에 대해 동작하여 출력을 생성함으로써 기능들을 수행하기 위해 하나 이상의 컴퓨터 프로그램들을 실행하는 하나 이상의 프로그램가능한 프로세서들에 의해 수행될 수 있다. 프로세스들 및 로직 흐름들은 또한, 특수 목적 로직 회로망, 예컨대, FPGA(field programmable gate array) 또는 ASIC(application specific integrated circuit)에 의해 수행될 수 있다. 컴퓨터 프로그램의 실행에 적합한 프로세서들은, 예로서, 범용 그리고 특수 목적 마이크로프로세서들 둘 다 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 다로부터 명령들 및 데이터를 수신할 것이다. 컴퓨터의 필수 엘리먼트들은 명령들을 수행하기 위한 프로세서, 및 명령들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들이다. 일반적으로, 컴퓨터는 또한, 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스들, 예컨대, 자기적, 마그네토 광학 디스크들 또는 광학 디스크들을 포함할 것이거나, 또는 이들로부터 데이터를 수신하거나 또는 이들에 데이터를 전달하거나 또는 둘 다를 수행하도록 동작적으로 커플링될 것이다. 그러나 컴퓨터는 그러한 디바이스들을 가질 필요가 없다. 컴퓨터 프로그램 명령들 및 데이터를 저장하기에 적합한 컴퓨터 판독가능한 매체들은 예로서 반도체 메모리 디바이스들, 예컨대, EPROM, EEPROM, 및 플래시 메모리 디바이스들; 자기 디스크들, 예컨대, 내부 하드 디스크들 또는 탈착식(removable) 디스크들; 마그네토-광 디스크들; 및 CD-ROM 및 DVD-ROM 디스크들을 포함하는 모든 형태들의 비-휘발성 메모리, 매체들 및 메모리 디바이스들을 포함한다. 프로세서 및 메모리는 특수 목적 로직 회로망에 의해 보충되거나 또는 이에 포함될 수 있다.
[0068] 사용자와의 상호 작용을 제공하기 위해, 본 개시내용의 하나 이상의 양상들은 정보를 사용자에게 디스플레이하기 위한 디스플레이 디바이스, 예컨대, CRT(cathode ray tube) 또는 LCD(liquid crystal display) 모니터 또는 터치스크린, 및 선택적으로, 사용자가 입력을 컴퓨터에 제공할 수 있게 하는 키보드 및 포인팅 디바이스, 예컨대, 마우스 또는 트랙볼을 갖는 컴퓨터 상에서 구현될 수 있다. 다른 종류들의 디바이스들이 사용자와의 상호 작용을 제공하기 위해 또한 사용될 수 있고; 예컨대, 사용자에게 제공되는 피드백은 임의의 형태의 감각 피드백, 예컨대, 시각적 피드백, 청각적 피드백 또는 촉각적 피드백일 수 있고; 사용자로부터의 입력은 어쿠스틱(acoustic), 음성 또는 촉각적 입력을 포함하는 임의의 형태로 수신될 수 있다. 또한, 컴퓨터는 문서들을 사용자에 의해 사용되는 디바이스에 전송하고 사용자에 의해 사용되는 디바이스로부터 문서들을 수신함으로써, 예컨대, 웹 브라우저로부터 수신된 요청들에 대한 응답으로 웹 페이지들을 사용자의 클라이언트 디바이스 상의 웹 브라우저에 전송함으로써, 사용자와 상호 작용할 수 있다.
[0069] 다수의 구현들이 설명되었다. 그럼에도 불구하고, 본 개시내용의 범위로부터 벗어나지 않으면서 다양한 수정들이 이루어질 수 있다는 것이 이해될 것이다. 따라서, 다른 구현들은 다음의 청구항들의 범위 내에 있다.
예시적 방법들
[0070] 위에서 설명되고 도면들에 예시된 동작들과 더불어, 다양한 동작들이 이제 설명될 것이다. 다음의 동작들은 아래에서 설명된 정확한 순서로 수행될 필요가 없다는 것이 이해되어야 한다. 오히려, 다양한 단계들은 상이한 순서로 또는 동시에 처리될 수 있고, 단계들은 또한 추가되거나 또는 생략될 수 있다.
[0071] 도 6은 보조 자원들 상에서 보조 작업들을 실행하는 예시적 방법(600)을 예시하며, 여기서 그러한 자원들은 주 인스턴스를 실행하기 위해 필요할 때 해제된다.
[0072] 블록(610)에서, 하나 이상의 주 작업들을 실행하기 위해 컴퓨팅 자원들의 주 풀(pool)이 지정된다. 컴퓨팅 자원들은, 예컨대, 가상 머신, 컨테이너들, 서버들 등을 포함할 수 있다. 주 작업들은 예컨대, MST 서비스와 같은 고객들을 위해 수행되는 서비스와 관련될 수 있다.
[0073] 블록(620)에서, 하나 이상의 보조 작업들을 실행하기 위해 컴퓨팅 자원들의 보조 풀이 지정된다. 보조 작업들은 주 작업들과 상이하고, 주 작업들보다 우선순위가 낮다. 예컨대, 보조 작업들에는 더 낮은 우선순위 값이 할당될 수 있고, 인터럽션이 주 작업들에 대한 인터럽션보다 덜 해로울 것인 선점형 태스크들과 관련될 수 있다. 컴퓨팅 자원들의 보조 풀은 주 풀과 동일한 유형의 자원들일 수 있거나 또는 그것은 상이할 수 있다. 예컨대, 보조 자원들은 상이한 컴퓨팅 용량들, 네트워크 용량들 등을 가질 수 있다. 일부 예들에서 보조 자원들의 동일한 수가 주 자원들의 수로서 지정될 수 있지만, 다른 예들에서 보조 자원들의 수는 상이할 수 있다.
[0074] 블록(630)에서, 하나 이상의 주 작업들 중 주어진 하나와 연관된 장애 조건이 검출된다. 예컨대, 장애 조건은 계획된 중단(outage), 이를테면, 시스템 업데이트 또는 예상치 못한 장애일 수 있다.
[0075] 블록(640)에서, 하나 이상의 보조 작업들 중 주어진 하나가 장애 조건의 검출 시 선점된다. 예컨대, 보조 작업이 일시 중지될 수 있고, 보조 자원들로부터 축출될 수 있다. 이 시점에서의 그러한 보조 자원들은 하나 이상의 주 작업들을 처리하기 위한 용량을 해제했다.
[0076] 블록(650)에서, 장애 조건과 연관된 주 작업들이 보조 자원들에 배정된다. 이와 관련하여, 주 작업들의 서비스는 최소한의 인터럽션으로 계속될 수 있다. 그러나 동시에 백업 자원들은 유휴 상태가 아니다.
[0077] 일부 예들에 따르면, 축출된 보조 작업은 주 자원이 복원되고 주 작업들이 주 자원 상에서 복원될 때 보조 자원으로 복원될 수 있다. 다른 예들에 따르면, 보조 작업은 일정 시간 기간 이후에 종료될 수 있다.
[0078] 이러한 기술은 VM들과 같은 컴퓨팅 자원들의 효율적 배정을 가능하게 하며, 이는 동작 효율성들을 생성하고, 동작 비용들을 절감한다. 예컨대, 컴퓨팅 자원들의 풀을 유휴 상태로 유지하기보다는, 이러한 기술은, 이러한 자원들이, 그렇지 않으면 컴퓨팅 및 네트워크 자원들에 대한 수요를 생성할 보조 작업들을 위해 사용될 수 있게 한다. 이와 관련하여, 그 외의 유휴 자원들의 사용은 네트워크 및 컴퓨팅 환경의 동작 효율성을 증가시킨다. 전술된 기법들은, 다수의 사용자들(테넌트들)이 그들 자체의 데이터베이스를 각각 갖고 각각의 데이터베이스가 그 특정 사용자를 위해 실행되는 다수의 애플리케이션들을 갖는 MST 서비스들에서 특히 유리할 수 있다. 그러나 위에서 설명된 특징들은 다른 유형의 서비스 아키텍처들에 역시 적용될 수 있다는 것이 이해되어야 한다.
[0079] 달리 언급되지 않는 한, 전술된 대안적 예들은 상호 배타적이지 않지만, 고유한 이점들을 달성하기 위해 다양한 조합들로 구현될 수 있다. 위에서 논의된 특징들의 이러한 그리고 다른 변형들 및 조합들이 청구항들에 의해 정의된 청구대상으로부터 벗어나지 않으면서 이용될 수 있으므로, 실시예들의 전술된 설명은 청구항들에 의해 정의된 청구대상의 제한이 아닌 예시로서 취해져야 한다. 또한, 본원에서 설명된 예들의 제공뿐만 아니라 "이를테면", "포함하는" 등과 같이 표현되는 조항들은 특정 예들로 청구항들의 청구대상을 제한하는 것으로 해석되지 않아야 하고; 오히려, 예들은 많은 가능한 실시예들 중 오직 하나만을 예시하는 것으로 의도된다. 추가로, 상이한 도면들에서의 동일한 참조 번호들은 동일한 또는 유사한 엘리먼트들을 식별할 수 있다.

Claims (20)

  1. 분산 시스템에서 서비스들을 제공하기 위해 사용되는 풀링(pool)된 컴퓨팅 자원들을 관리하기 위한 방법으로서,
    상기 방법은 하나 또는 그 초과의 프로세서들에 의해 수행되며, 상기 방법은:
    컴퓨팅 자원들의 주 풀(primary pool) 내의 격리된 환경에서 개별 서비스 인스턴스(service instance)를 실행하는 단계;
    컴퓨팅 자원들의 보조 풀(secondary pool) 상에서 상기 개별 서비스 인스턴스와 상이한 하나 이상의 보조 작업들을 실행하는 단계;
    상기 격리된 환경과 연관된 장애 조건을 검출하는 단계;
    상기 하나 이상의 보조 작업들 중 선점할 하나 이상의 보조 작업들을 선택하는 단계 ― 상기 하나 이상의 보조 작업들은 각각 상기 개별 서비스 인스턴스보다 낮은 우선순위를 갖는 선점형(preemptible) 작업들을 포함함 ― ; 및
    상기 선택된 하나 이상의 보조 작업들에 배정되는 컴퓨팅 자원들을 감소시킴으로써 상기 보조 풀의 컴퓨팅 자원들을 해제(free)하고, 상기 장애 조건이 있는 상기 격리된 환경의 상기 개별 서비스 인스턴스에 상기 해제된 컴퓨팅 자원들을 배정하는 단계를 포함하고,
    상기 보조 풀의 컴퓨팅 자원들은 상기 배정된 해제된 컴퓨팅 자원들에 비례하여 해제되는,
    분산 시스템에서 서비스들을 제공하기 위해 사용되는 풀링된 컴퓨팅 자원들을 관리하기 위한 방법.
  2. 제1 항에 있어서,
    상기 하나 이상의 보조 작업들 중 선점할 하나 이상의 보조 작업들을 선택하는 단계 전에, 상기 하나 이상의 보조 작업들의 실행 시간 및 인스턴스화(instantiate)된 서비스 인스턴스들의 수에 기초하여 지원될 보조 작업들의 수에 대한 임계치를 결정하는 단계를 더 포함하는, 분산 시스템에서 서비스들을 제공하기 위해 사용되는 풀링된 컴퓨팅 자원들을 관리하기 위한 방법.
  3. 제2 항에 있어서,
    추가 보조 작업들에 대한 요청들을 수신하는 단계; 및
    이용된 자원들의 최대 임계치가 소비될 때까지 상기 컴퓨팅 자원들의 보조 풀에서 상기 추가 보조 작업들을 론칭(launch)하는 단계를 더 포함하는, 분산 시스템에서 서비스들을 제공하기 위해 사용되는 풀링된 컴퓨팅 자원들을 관리하기 위한 방법.
  4. 제1 항 내지 제3 항 중 어느 한 항에 있어서,
    상기 컴퓨팅 자원들을 해제하는 것은, CPU(central processing unit) 자원들, 메모리 또는 네트워크 자원들을 감소시키는 것을 포함하는, 분산 시스템에서 서비스들을 제공하기 위해 사용되는 풀링된 컴퓨팅 자원들을 관리하기 위한 방법.
  5. 제4 항에 있어서,
    CPU 자원들을 감소시키는 것은, CPU들의 수를 감소시키는 것, CPU 코어들의 수를 감소시키는 것, 또는 하나 이상의 CPU들의 성능 메트릭을 감소시키는 것을 포함하는, 분산 시스템에서 서비스들을 제공하기 위해 사용되는 풀링된 컴퓨팅 자원들을 관리하기 위한 방법.
  6. 제1 항 내지 제3 항 중 어느 한 항에 있어서,
    상기 격리된 환경은 가상 머신을 포함하는, 분산 시스템에서 서비스들을 제공하기 위해 사용되는 풀링된 컴퓨팅 자원들을 관리하기 위한 방법.
  7. 제1 항 내지 제3 항 중 어느 한 항에 있어서,
    사전 결정된 시간 기간 이후에 상기 선택된 하나 이상의 보조 작업들을 종료하는 단계를 더 포함하는, 분산 시스템에서 서비스들을 제공하기 위해 사용되는 풀링된 컴퓨팅 자원들을 관리하기 위한 방법.
  8. 제7 항에 있어서,
    상기 선택된 하나 이상의 보조 작업들에 의해 사용되는 상기 보조 풀의 모든 컴퓨팅 자원들을 상기 개별 서비스 인스턴스에 배정하는 단계를 더 포함하는, 분산 시스템에서 서비스들을 제공하기 위해 사용되는 풀링된 컴퓨팅 자원들을 관리하기 위한 방법.
  9. 삭제
  10. 제1 항 내지 제3 항 중 어느 한 항에 있어서,
    상기 보조 작업들 중 선점할 하나 이상의 보조 작업들을 선택하는 것은 상기 보조 작업들의 우선순위에 기초하는, 분산 시스템에서 서비스들을 제공하기 위해 사용되는 풀링된 컴퓨팅 자원들을 관리하기 위한 방법.
  11. 제1 항 내지 제3 항 중 어느 한 항에 있어서,
    상기 하나 이상의 보조 작업들 중 선점할 하나 이상의 보조 작업들을 선택하는 것은 상기 보조 작업을 셧다운(shut down)하는 데 필요한 예상된 양의 시간에 기초하는, 분산 시스템에서 서비스들을 제공하기 위해 사용되는 풀링된 컴퓨팅 자원들을 관리하기 위한 방법.
  12. 분산 시스템에서 서비스들을 제공하기 위해 사용되는 풀링된 컴퓨팅 자원들을 관리하기 위한 시스템으로서,
    격리된 환경에서 개별 서비스 인스턴스를 실행하기 위해 지정된 컴퓨팅 자원들의 주 풀;
    상기 개별 서비스 인스턴스와 상이한 하나 이상의 보조 작업들을 실행하기 위해 지정된 컴퓨팅 자원들의 보조 풀; 및
    하나 이상의 프로세서들을 포함하고,
    상기 하나 이상의 프로세서들은:
    상기 격리된 환경과 연관된 장애 조건을 검출하고;
    상기 하나 이상의 보조 작업들 중 선점할 적어도 하나의 보조 작업을 선택하고 ― 상기 하나 이상의 보조 작업들은 각각 상기 개별 서비스 인스턴스보다 낮은 우선순위를 갖는 선점형 작업들을 포함함 ― ;
    상기 선택된 적어도 하나의 보조 작업에 배정되는 컴퓨팅 자원들을 감소시킴으로써 상기 보조 풀의 컴퓨팅 자원들을 해제하고; 그리고
    상기 장애 조건이 있는 상기 격리된 환경의 상기 개별 서비스 인스턴스들에 상기 해제된 자원들을 동적으로 배정하도록
    구성되고,
    상기 보조 풀의 컴퓨팅 자원들은 상기 동적으로 배정된 해제된 컴퓨팅 자원들에 비례하여 해제되는, 분산 시스템에서 서비스들을 제공하기 위해 사용되는 풀링된 컴퓨팅 자원들을 관리하기 위한 시스템.
  13. 제12 항에 있어서,
    상기 하나 이상의 프로세서들은:
    추가 보조 작업들에 대한 요청들을 수신하고; 그리고
    이용된 자원들의 최대 임계치가 소비될 때까지 상기 컴퓨팅 자원들의 보조 풀에서 상기 추가 보조 작업들을 론칭하도록
    추가로 구성되는, 분산 시스템에서 서비스들을 제공하기 위해 사용되는 풀링된 컴퓨팅 자원들을 관리하기 위한 시스템.
  14. 제12 항 또는 제13 항에 있어서,
    상기 컴퓨팅 자원들을 해제하는 것은, CPU(central processing unit) 자원들, 메모리 또는 네트워크 자원들을 감소시키는 것을 포함하는, 분산 시스템에서 서비스들을 제공하기 위해 사용되는 풀링된 컴퓨팅 자원들을 관리하기 위한 시스템.
  15. 제14 항에 있어서,
    CPU 자원들을 감소시키는 것은, CPU들의 수를 감소시키는 것, CPU 코어들의 수를 감소시키는 것, 또는 하나 이상의 CPU들의 성능 메트릭을 감소시키는 것을 포함하는, 분산 시스템에서 서비스들을 제공하기 위해 사용되는 풀링된 컴퓨팅 자원들을 관리하기 위한 시스템.
  16. 제12 항 또는 제13 항에 있어서,
    상기 격리된 환경은 가상 머신을 포함하는, 분산 시스템에서 서비스들을 제공하기 위해 사용되는 풀링된 컴퓨팅 자원들을 관리하기 위한 시스템.
  17. 삭제
  18. 제12 항 또는 제13 항에 있어서,
    상기 장애 조건은 계획된 시스템 업데이트를 포함하는, 분산 시스템에서 서비스들을 제공하기 위해 사용되는 풀링된 컴퓨팅 자원들을 관리하기 위한 시스템.
  19. 제12 항 또는 제13 항에 있어서,
    상기 프로세서는 상기 보조 작업들의 우선순위 또는 상기 보조 작업을 셧다운하는 데 필요한 예상된 양의 시간 중 적어도 하나에 기초하여 상기 보조 작업들 중 선점할 하나 이상의 보조 작업들을 선택하도록 구성되는, 분산 시스템에서 서비스들을 제공하기 위해 사용되는 풀링된 컴퓨팅 자원들을 관리하기 위한 시스템.
  20. 분산 시스템에서 서비스들을 제공하기 위해 사용되는 풀링된 컴퓨팅 자원들을 관리하는 방법을 수행하기 위해 하나 이상의 프로세서들에 의해 실행가능한 명령들을 저장하는 비-일시적 컴퓨터 판독가능한 매체로서,
    상기 방법은:
    격리된 환경 내에서 개별 서비스 인스턴스를 실행하기 위해 지정된 컴퓨팅 자원들의 주 풀을 결정하는 단계;
    상기 개별 서비스 인스턴스와 상이한 하나 이상의 보조 작업들을 실행하기 위해 지정된 컴퓨팅 자원들의 보조 풀을 결정하는 단계 ― 상기 하나 이상의 보조 작업들은 각각 상기 개별 서비스 인스턴스보다 낮은 우선순위를 갖는 선점형 작업들을 포함함 ― ;
    상기 격리된 환경과 연관된 장애 조건을 검출하는 단계;
    상기 하나 이상의 보조 작업들 중 선점할 적어도 하나의 보조 작업을 선택하는 단계; 및
    상기 선택된 적어도 하나의 보조 작업에 배정되는 컴퓨팅 자원들을 감소시킴으로써 상기 보조 풀의 컴퓨팅 자원들을 해제하고, 상기 장애 조건이 있는 상기 격리된 환경의 상기 개별 서비스 인스턴스에 상기 해제된 컴퓨팅 자원들을 동적으로 배정하는 단계를 포함하고,
    상기 보조 풀의 컴퓨팅 자원들은 상기 동적으로 배정된 해제된 컴퓨팅 자원들에 비례하여 해제되는,
    비-일시적 컴퓨터 판독가능한 매체.
KR1020217013101A 2019-03-08 2019-11-22 비용-효율적 고-가용성 다중-단일-테넌트 서비스들 KR102406564B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020227018764A KR20220080029A (ko) 2019-03-08 2019-11-22 비용-효율적 고-가용성 다중-단일-테넌트 서비스들

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/297,054 2019-03-08
US16/297,054 US10949241B2 (en) 2019-03-08 2019-03-08 Cost-efficient high-availability multi-single-tenant services
PCT/US2019/062789 WO2020185266A1 (en) 2019-03-08 2019-11-22 Cost-efficient high-availability multi-single-tenant services

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020227018764A Division KR20220080029A (ko) 2019-03-08 2019-11-22 비용-효율적 고-가용성 다중-단일-테넌트 서비스들

Publications (2)

Publication Number Publication Date
KR20210060615A KR20210060615A (ko) 2021-05-26
KR102406564B1 true KR102406564B1 (ko) 2022-06-07

Family

ID=68965987

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020217013101A KR102406564B1 (ko) 2019-03-08 2019-11-22 비용-효율적 고-가용성 다중-단일-테넌트 서비스들
KR1020227018764A KR20220080029A (ko) 2019-03-08 2019-11-22 비용-효율적 고-가용성 다중-단일-테넌트 서비스들

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020227018764A KR20220080029A (ko) 2019-03-08 2019-11-22 비용-효율적 고-가용성 다중-단일-테넌트 서비스들

Country Status (5)

Country Link
US (3) US10949241B2 (ko)
EP (1) EP3857370A1 (ko)
KR (2) KR102406564B1 (ko)
CN (1) CN112805682A (ko)
WO (1) WO2020185266A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3759599B1 (en) * 2018-03-01 2023-12-20 Google LLC High availability multi-single-tenant services
US11093288B2 (en) * 2019-06-13 2021-08-17 Vmware, Inc. Systems and methods for cluster resource balancing in a hyper-converged infrastructure
US11934875B2 (en) 2020-12-09 2024-03-19 Dell Products L.P. Method and system for maintaining composed systems
US11928515B2 (en) 2020-12-09 2024-03-12 Dell Products L.P. System and method for managing resource allocations in composed systems
US11809911B2 (en) * 2020-12-09 2023-11-07 Dell Products L.P. Resuming workload execution in composed information handling system
US12013768B2 (en) 2021-07-22 2024-06-18 Dell Products L.P. Method and system for automated healing of hardware resources in a composed information handling system
US12026557B2 (en) 2021-07-22 2024-07-02 Dell Products L.P. Method and system for a utilizing a proxy service to generate a composed information handling system
US11947697B2 (en) 2021-07-22 2024-04-02 Dell Products L.P. Method and system to place resources in a known state to be used in a composed information handling system
US11928506B2 (en) 2021-07-28 2024-03-12 Dell Products L.P. Managing composition service entities with complex networks
US12008412B2 (en) 2021-07-28 2024-06-11 Dell Products Resource selection for complex solutions
US12032458B2 (en) * 2021-12-09 2024-07-09 Microsoft Technology Licensing, Llc Resilient and adaptive cloud processing of parallel computing workloads
CN114780211B (zh) * 2022-06-16 2022-11-08 阿里巴巴(中国)有限公司 管理安全容器的方法及基于安全容器的系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080189468A1 (en) 2007-02-02 2008-08-07 Vmware, Inc. High Availability Virtual Machine Cluster
US20170139749A1 (en) 2013-05-20 2017-05-18 International Business Machines Corporation Scheduling homogeneous and heterogeneous workloads with runtime elasticity in a parallel processing environment
KR101836743B1 (ko) 2016-12-08 2018-03-09 한국과학기술원 복수의 모바일 단말을 이용한 태스크 분산 처리 시스템의 실패 태스크 재할당을 위한 단말 선택 기법
US20180165166A1 (en) 2016-12-14 2018-06-14 Nutanix, Inc. Maintaining high availability during n-node failover

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI91456C (fi) * 1992-07-29 1994-06-27 Nokia Telecommunications Oy Menetelmä tietokoneessa varattujen resurssien hallitsemiseksi
US8179809B1 (en) * 1999-08-23 2012-05-15 Oracle America, Inc. Approach for allocating resources to an apparatus based on suspendable resource requirements
US7213246B1 (en) 2002-03-28 2007-05-01 Veritas Operating Corporation Failing over a virtual machine
US7586946B2 (en) * 2005-10-31 2009-09-08 Hewlett-Packard Development Company, L.P. Method and apparatus for automatically evaluating and allocating resources in a cell based system
US7386851B1 (en) * 2008-01-04 2008-06-10 International Business Machines Corporation System and method for implementing dynamic lifetime reliability extension for microprocessor architectures
US8510590B2 (en) 2010-03-17 2013-08-13 Vmware, Inc. Method and system for cluster resource management in a virtualized computing environment
US8862738B2 (en) 2010-10-18 2014-10-14 International Business Machines Corporation Reallocating resource capacity among resource pools in a cloud computing environment
WO2013005245A1 (en) * 2011-07-01 2013-01-10 Hitachi, Ltd. Storage system and controlling method of the same
US20130179289A1 (en) * 2012-01-09 2013-07-11 Microsoft Corportaion Pricing of resources in virtual machine pools
US10193963B2 (en) 2013-10-24 2019-01-29 Vmware, Inc. Container virtual machines for hadoop
US9413626B2 (en) 2014-12-05 2016-08-09 Amazon Technologies, Inc. Automatic management of resource sizing
US10715460B2 (en) * 2015-03-09 2020-07-14 Amazon Technologies, Inc. Opportunistic resource migration to optimize resource placement
US9811376B2 (en) * 2015-06-29 2017-11-07 Amazon Technologies, Inc. Virtual machine instance migration using a triangle approach
US9952932B2 (en) * 2015-11-02 2018-04-24 Chicago Mercantile Exchange Inc. Clustered fault tolerance systems and methods using load-based failover
CN105589751B (zh) * 2015-11-27 2019-03-15 新华三技术有限公司 一种物理资源调度方法及装置
CN107491351B (zh) * 2016-06-13 2021-07-27 阿里巴巴集团控股有限公司 一种基于优先级的资源分配方法、装置和设备
US11237866B2 (en) * 2017-05-04 2022-02-01 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing a scheduler and workload manager with scheduling redundancy and site fault isolation
CN109428912B (zh) * 2017-08-24 2020-07-10 阿里巴巴集团控股有限公司 一种分布式系统资源分配方法、装置及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080189468A1 (en) 2007-02-02 2008-08-07 Vmware, Inc. High Availability Virtual Machine Cluster
US20170139749A1 (en) 2013-05-20 2017-05-18 International Business Machines Corporation Scheduling homogeneous and heterogeneous workloads with runtime elasticity in a parallel processing environment
KR101836743B1 (ko) 2016-12-08 2018-03-09 한국과학기술원 복수의 모바일 단말을 이용한 태스크 분산 처리 시스템의 실패 태스크 재할당을 위한 단말 선택 기법
US20180165166A1 (en) 2016-12-14 2018-06-14 Nutanix, Inc. Maintaining high availability during n-node failover

Also Published As

Publication number Publication date
US20200285502A1 (en) 2020-09-10
EP3857370A1 (en) 2021-08-04
KR20220080029A (ko) 2022-06-14
US20210173694A1 (en) 2021-06-10
US20230289208A1 (en) 2023-09-14
US11614958B2 (en) 2023-03-28
US10949241B2 (en) 2021-03-16
KR20210060615A (ko) 2021-05-26
WO2020185266A1 (en) 2020-09-17
CN112805682A (zh) 2021-05-14

Similar Documents

Publication Publication Date Title
KR102406564B1 (ko) 비용-효율적 고-가용성 다중-단일-테넌트 서비스들
EP3759599B1 (en) High availability multi-single-tenant services
US11106456B2 (en) Live updates for virtual machine monitor
US11768695B2 (en) Methods and apparatus to deploy a hybrid workload domain
US10831555B2 (en) Methods and apparatus to improve workload domain management in virtualized server systems
US11068355B2 (en) Systems and methods for maintaining virtual component checkpoints on an offload device
US9104461B2 (en) Hypervisor-based management and migration of services executing within virtual environments based on service dependencies and hardware requirements
US11714668B2 (en) Supporting quality-of-service for virtual machines based on operational events
US20190230025A1 (en) Methods and apparatus to configure and manage network resources for use in network-based computing
US10846079B2 (en) System and method for the dynamic expansion of a cluster with co nodes before upgrade
US20130055277A1 (en) Logical Partition Load Manager and Balancer
US20210247903A1 (en) Dynamically adjusting storage capacity
Matsumoto et al. Dynamic resource management in cloud environment
US10691495B2 (en) Virtual processor allocation with execution guarantee
US20150128134A1 (en) Adjusting pause-loop exiting window values
US11609831B2 (en) Virtual machine configuration update technique in a disaster recovery environment
Anala et al. Application performance analysis during live migration of virtual machines
US11169885B2 (en) System and method for reconfiguring configuration parameters of virtual objects during recovery
US20240232018A1 (en) Intended state based management of risk aware patching for distributed compute systems at scale
Kumar et al. Fault tolerant cloud systems
bei Munchen Virtualized IT infrastructures and their management

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant