IP Library Granted Patent US 9,594,601
Granted Patent B2
US 9,594,601 · App. 14/657,786 · Granted Mar 14, 2017

Planner for cluster management system

Inventors: Albert Yen Shau (Sunnyvale, CA); Christopher Gianelloni (Santa Clara, CA); Derek Lewis Wood (Sunnyvale, CA); Jonathan Michael Gray (Hermosa Beach, CA); Nitin Motgi (Santa Clara, CA); Poorna Chandra Gowda Bannikkuppe Ramachandra (San Mateo, CA); Rohit Sarma Nistala (Torrance, CA)
Assignee: Cask Data, Inc.
G06F9/5088G06F9/4881H04L67/10H04L67/1002H04L67/42H04L69/40
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,594,601
App. No.
14/657,786
Granted
Mar 14, 2017
Kind
B2
Abstract

A processing device receives a starting cluster layout for a first cluster, a target cluster layout for the first cluster, and a cluster management operation for creating or modifying the first cluster. The processing device determines a plurality of node level tasks to transition the first cluster from the starting cluster layout to the target cluster layout, determines dependencies between the plurality of node level tasks, and determines an order for the plurality of node level tasks based on the cluster management operation and the dependencies. The processing device then creates an execution plan that divides the cluster management operation into the plurality of node level tasks in the determined order.

Claims (104)

1. A method comprising:

receiving a starting cluster layout for a first cluster, wherein the starting cluster layout is a current layout of the first cluster and comprises a first plurality of nodes;

receiving a target cluster layout for the first cluster, wherein the first cluster is to be modified to transition from the starting cluster layout to the target cluster layout, and wherein the target cluster layout comprises a second plurality of nodes that is different from the first plurality of nodes, a node of the second plurality of nodes comprising hardware associated with a specified hardware type, an image for a computer or virtual machine associated with a specified image type, and a specified service comprising a service constraint comprising the specified hardware type and the specified image type;

receiving a cluster management operation;

determining, by a processing device, a plurality of node level tasks to transition the first cluster from the starting cluster layout to the target cluster layout in view of the cluster management operation;

determining dependencies between the plurality of node level tasks;

determining an order for the plurality of node level tasks based on the cluster management operation and the dependencies, wherein node level tasks that are not dependent on any other node level tasks are ordered before node level tasks that depend on other node level tasks;

creating, by the processing device, an execution plan that divides the cluster management operation into the plurality of node level tasks in the determined order, wherein two or more of the plurality of node level tasks are executable in parallel;

receiving a second cluster management operation to create or modify a second cluster for a second tenant, wherein the first cluster, a first task queue and a first provisioner are associated with a first tenant and are not viewable by the second tenant, and the second cluster is associated with a second task queue and a second provisioner that are not viewable by the first tenant; and

determining an additional plurality of node level tasks to perform the second cluster management operation on the second cluster and creating a second execution plan that divides the second cluster management operation into the additional plurality of node level tasks.

2. The method of claim 1 , further comprising:

dividing the plurality of node level tasks into a plurality of stages, wherein all node level tasks in a particular stage of the plurality of stages are executable in parallel.

3. The method of claim 2 , further comprising:

populating the task queue with all of the node level tasks for a current stage of the plurality of stages;

receiving a request from a first provisioner for a node level task; and

assigning a selected node level task from the task queue to the first provisioner.

4. The method of claim 3 , further comprising:

responsive to completion of all of the node level tasks from the current stage, proceeding to a next stage of the plurality of stages and populating the task queue with all of the node level tasks for the next stage.

5. The method of claim 3 , further comprising:

determining that the first provisioner failed to complete the selected node level task within a threshold amount of time; and

reassigning the node level task to a new provisioner.

6. The method of claim 3 , further comprising:

determining at least one of an average queue length over time for the task queue or an average task completion time for the plurality of node level tasks;

responsive to determining that at least one of the average queue length over time exceeds a first threshold or the average completion time exceeds a second threshold, increasing a number of provisioners; and

responsive to determining that at least one of the average queue length over time is below a third threshold or the average completion time is below a fourth threshold, decreasing the number of provisioners.

7. The method of claim 1 , further comprising:

populating the second task queue with one or more of the additional plurality of node level tasks;

receiving a request from the second provisioner for a node level task; and

assigning a node level task from the second task queue to the second provisioner, wherein the first provisioner and the second provisioner execute node level tasks concurrently.

8. The method of claim 1 , wherein the execution plan comprises a directed acyclic graph that includes the plurality of node level tasks and indicates the determined order.

9. The method of claim 1 , further comprising:

determining that the cluster management operation has failed based on one or more failed node level tasks;

determining a new cluster management operation to roll back the cluster management operation;

determining a new plurality of node level tasks to transition the first cluster from an intermediate cluster layout to the starting cluster layout;

determining dependencies between the new plurality of node level tasks;

determining an order for the new plurality of node level tasks based on the new cluster management operation and the dependencies between the new plurality of node level tasks; and

creating a new execution plan to execute the new cluster management operation to roll back the cluster management operation.

10. A non-transitory computer readable storage medium comprising instructions that, when executed by a processing device, cause the processing device to:

receive a starting cluster layout for a first cluster, wherein the starting cluster layout is a current layout of the first cluster and comprises a first plurality of nodes;

receive a target cluster layout for the first cluster, wherein the first cluster is to be transitioned from the starting cluster layout to the target cluster layout, and wherein the target cluster layout comprises a second plurality of nodes that is different from the first plurality of nodes, a node of the second plurality of nodes comprising hardware associated with a specified hardware type, an image for a computer or virtual machine associated with a specified image type, and a specified service comprising a service constraint comprising the specified hardware type and the specified image type;

receive a cluster management operation;

determine, by a processing device, a plurality of node level tasks to transition the first cluster from the starting cluster layout to the target cluster layout in view of the cluster management operation;

determine dependencies between the plurality of node level tasks;

determine an order for the plurality of node level tasks based on the cluster management operation and the dependencies, wherein node level tasks that are not dependent on any other node level tasks are ordered before node level tasks that depend on other node level tasks;

create, by the processing device, an execution plan that divides the cluster management operation into the plurality of node level tasks in the determined order, wherein two or more of the plurality of node level tasks are executable in parallel;

receive a second cluster management operation to create or modify a second cluster for a second tenant, wherein the first cluster, a first task queue and a first provisioner are associated with a first tenant and are not viewable by the second tenant, and the second cluster is associated with a second task queue and a second provisioner that are not viewable by the first tenant; and

determine an additional plurality of node level tasks to perform the second cluster management operation on the second cluster and create a second execution plan that divides the second cluster management operation into the additional plurality of node level tasks.

11. The non-transitory computer readable storage medium of claim 10 , the processing device further to:

divide the plurality of node level tasks into a plurality of stages, wherein all node level tasks in a particular stage of the plurality of stages are executable in parallel.

12. The non-transitory computer readable storage medium of claim 11 , the processing device further to:

populate the task queue with all of the node level tasks for a current stage of the plurality of stages;

receive a request from a first provisioner for a node level task; and

assign a selected node level task from the task queue to the first provisioner.

13. The non-transitory computer readable storage medium of claim 12 , the processing device further to:

responsive to completion of all of the node level tasks from the current stage, proceed to a next stage of the plurality of stages and populating the task queue with all of the node level tasks for the next stage.

14. The non-transitory computer readable storage medium of claim 12 , the processing device further to:

determine that the first provisioner failed to complete the selected node level task within a threshold amount of time; and

reassign the node level task to a new provisioner.

15. The non-transitory computer readable storage medium of claim 12 , the processing device further to:

determine at least one of an average queue length over time for the task queue or an average task completion time for the plurality of node level tasks;

responsive to the determining that at least one of the average queue length over time exceeds a first threshold or the average completion time exceeds a second threshold, increase a number of provisioners; and

responsive to the determining that at least one of the average queue length over time is below a third threshold or the average completion time is below a fourth threshold, decrease the number of provisioners.

16. The non-transitory computer readable storage medium of claim 10 , the processing device further to:

populate the second task queue with one or more of the additional plurality of node level tasks;

receive a request from the second provisioner for a node level task; and

assign a node level task from the second task queue to the second provisioner, wherein the first provisioner and the second provisioner execute node level tasks concurrently.

17. The non-transitory computer readable storage medium of claim 10 , wherein the execution plan comprises a directed acyclic graph that includes the plurality of node level tasks and indicates the determined order.

18. The non-transitory computer readable storage medium of claim 10 , the processing device further to:

determine that the cluster management operation has failed based on one or more failed node level tasks;

determine a new cluster management operation to roll back the cluster management operation;

determine a new plurality of node level tasks to transition the first cluster from an intermediate cluster layout to the starting cluster layout;

determine dependencies between the new plurality of node level tasks;

determine an order for the new plurality of node level tasks based on the new cluster management operation and the dependencies between the new plurality of node level tasks; and

create a new execution plan to execute the new cluster management operation to roll back the cluster management operation.

19. A computing device comprising:

a memory; and

a processing device coupled to the memory, the processing device to:

receive a starting cluster layout for a first cluster, wherein the starting cluster layout is a current layout of the first cluster and comprises a first plurality of nodes;

receive a target cluster layout for the first cluster, wherein the first cluster is to be transitioned from the starting cluster layout to the target cluster layout, and wherein the target cluster layout comprises a second plurality of nodes that is different from the first plurality of nodes, a node of the second plurality of nodes comprising hardware associated with a specified hardware type, an image for a computer or virtual machine associated with a specified image type, and a specified service comprising a service constraint comprising the specified hardware type and the specified image type;

receive a cluster management operation;

determine a plurality of node level tasks to transition the first cluster from the starting cluster layout to the target cluster layout in view of the cluster management operation;

determine dependencies between the plurality of node level tasks;

determine an order for the plurality of node level tasks based on the cluster management operation and the dependencies, wherein node level tasks that are not dependent on any other node level tasks are ordered before node level tasks that depend on other node level tasks;

create an execution plan that divides the cluster management operation into the plurality of node level tasks in the determined order, wherein two or more of the plurality of node level tasks are executable in parallel;

receive a second cluster management operation to create or modify a second cluster for a second tenant, wherein the first cluster, a first task queue and a first provisioner are associated with a first tenant and are not viewable by the second tenant, and the second cluster is associated with a second task queue and a second provisioner that are not viewable by the first tenant; and

determine an additional plurality of node level tasks to perform the second cluster management operation on the second cluster and create a second execution plan that divides the second cluster management operation into the additional plurality of node level tasks.

20. The computing device of claim 19 , wherein the processing device is further to:

divide the plurality of node level tasks into a plurality of stages, wherein all node level tasks in a particular stage of the plurality of stages are executable in parallel.

21. The computing device of claim 20 , wherein the processing device is further to:

populate the task queue with all of the node level tasks for a current stage of the plurality of stages;

receive a request from a provisioner for a node level task;

assign a selected node level task from the task queue to the provisioner; and

responsive to completion of all of the node level tasks from the current stage, proceeding to a next stage of the plurality of stages and populating the task queue with all of the node level tasks for the next stage.

22. The computing device of claim 21 , wherein the processing device is further to:

determine at least one of an average queue length over time for the task queue or an average task completion time for the plurality of node level tasks;

responsive to determining that at least one of the average queue length over time exceeds a first threshold or the average completion time exceeds a second threshold, increase a number of provisioners; and

responsive to determining that at least one of the average queue length over time is below a third threshold or the average completion time is below a fourth threshold, decrease the number of provisioners.

23. The computing device of claim 19 , wherein the processing device is further to:

determine that the cluster management operation has failed based on one or more failed node level tasks;

determine a new cluster management operation to roll back the cluster management operation;

determine a new plurality of node level tasks to transition the first cluster from an intermediate cluster layout to the starting cluster layout;

determine dependencies between the new plurality of node level tasks;

determine an order for the new plurality of node level tasks based on the new cluster management operation and the dependencies between the new plurality of node level tasks; and

create a new execution plan to execute the new cluster management operation to roll back the cluster management operation.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 28, 2018
From: CASK DATA, INC.
To: GOOGLE LLC
Reel/Frame 046729/0252 →
SECURITY INTEREST Recorded Jun 27, 2017
From: CASK DATA, INC.
To: SILICON VALLEY BANK
Reel/Frame 042830/0846 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 17, 2015
From: SHAU, ALBERT YEN; GIANELLONI, CHRISTOPHER; WOOD, DEREK LEWIS; GRAY, JONATHAN MICHAEL; MOTGI, NITIN; RAMACHANDRA, POORNA CHANDRA GOWDA BANNIKKUPPE; NISTALA, ROHIT SARMA
To: CASK DATA, INC.
Reel/Frame 035185/0990 →
Continuity (2)
Provisional Application 61953106 · Mar 14, 2014
Related Publication 20150261580A1 · Sep 17, 2015