IP Library › Granted Patent US 12,450,081
Granted Patent B2
US 12,450,081 · App. 17/647,689 · Granted Oct 21, 2025

System and method for managing size of clusters in a computing environment

Inventors: Manoj Krishnan (Palo Alto, CA); Anant Agarwal (San Jose, CA); Rahul Chandrasekaran (Mountain View, CA); Prafulla Mahindrakar (San Jose, CA); Ravi Cherukupalli (San Ramon, CA)
Assignee: VMware LLC
G06F9/45558G06F9/5061G06F9/5077G06F9/5088G06F2009/4557G06F2209/505
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 12,450,081
App. No.
17/647,689
Granted
Oct 21, 2025
Kind
B2
Abstract

A number of hosts in a logical cluster is adjusted up or down in an elastic manner by tracking membership of hosts in the cluster using a first data structure and tracking membership of hosts in a spare pool using a second data structure, and upon determining that a triggering condition for adding another host is met and that all hosts in the cluster are being used, selecting a host from the spare pool, and programmatically adding an identifier of the selected host to the first data structure and programmatically deleting the identifier of the selected host from the second data structure.

Claims (77)

1. A method executed by a management server comprising:

storing membership of hosts in a cluster in a first data structure;

storing membership of hosts in a spare host pool in a second data structure;

storing membership of hosts in a failed host pool in a third data structure;

when a first host in the cluster is experiencing a partial or total failure and the cluster does not include a sufficient number of hosts based on available resources for a plurality of virtual computing instances (VCIs) in the cluster falling below a minimum threshold value, the available resources comprising at least one of CPU resources, memory resources, or storage resources:

migrating a second host from the spare host pool to the cluster;

migrating at least one VCI from the first host to the second host in the cluster; and

migrating the first host from the cluster to the failed host pool;

while the available resources remain below the minimum threshold value:

migrating one or more hosts from the spare host pool to the cluster;

updating the membership of hosts in the cluster to include the second host and the one or more hosts from the spare host pool by programmatically adding identifiers of the second host and the one or more hosts to the first data structure;

updating the membership of hosts in the cluster to remove the first host by programmatically deleting an identifier of the first host from the first data structure;

updating the membership of hosts in the spare host pool to remove the second host and the one or more hosts from the spare host pool by programmatically deleting the identifiers of the second host and the one or more hosts from the second data structure; and

updating the membership of hosts in the failed host pool to include the first host from the cluster by programmatically adding the identifier of the first host to the third data structure, wherein the management server is separate from the cluster, the spare host pool, and the failed host pool.

2. The method of claim 1 , wherein the cluster the management server includes a high availability module, a distributed resource scheduler module, and a host provisioning module.

3. The method of claim 1 , wherein each host in the cluster comprises a hypervisor and a virtual storage area network module.

4. The method of claim 1 , wherein the cluster does not include a sufficient number of hosts based on utilization data associated with hosts in the cluster.

5. The method of claim 4 , wherein the utilization data comprises a CPU utilization of hosts in the cluster, memory utilization of hosts in the cluster, or storage utilization of hosts in the cluster.

6. The method of claim 5 , wherein the cluster does not include a sufficient number of hosts when at least one of the CPU utilization, memory utilization, or storage utilization exceeds a respective threshold.

7. The method of claim 1 , further comprising:

when utilization data indicates that the cluster is underutilized based on available resources for the plurality of VCIs in the cluster:

migrating at least one VCI from a third host of the cluster to the second host of the cluster;

migrating the third host to the spare host pool;

updating the membership of hosts in the cluster to remove the third host from the cluster by programmatically deleting an identifier of the third host from the first data structure; and

updating the membership of hosts in the spare host pool to include the third host by programmatically adding the identifier of the third host to the second data structure.

8. A non-transitory computer-readable medium comprising instructions that are executable in a computing device to cause the computing device to at least:

store membership of hosts in a cluster in a first data structure;

store membership of hosts in a spare host pool in a second data structure;

store membership of hosts in a failed host pool in a third data structure;

when a first host in the cluster is experiencing a partial or total failure and the cluster does not include a sufficient number of hosts based on available resources for a plurality of virtual computing instances (VCIs) in the cluster falling below a minimum threshold value, the available resources comprising at least one of CPU resources, memory resources, or storage resources:

migrate a second host from the spare host pool to the cluster;

migrate at least one VCI from the first host to the second host in the cluster; and

migrate the first host from the cluster to the failed host pool;

while the available resources remain below the minimum threshold value:

migrate one or more hosts from the spare host pool to the cluster;

update the membership of hosts in the cluster to include the second host and the one or more hosts from the spare host pool by programmatically adding identifiers of the second host and the one or more hosts to the first data structure;

update the membership of hosts in the cluster to remove the first host by programmatically deleting an identifier of the first host from the first data structure;

update the membership of hosts in the spare host pool to remove the second host and the one or more hosts from the spare host pool by programmatically deleting the identifiers of the second host and the one or more hosts from the second data structure; and

update the membership of hosts in the failed host pool to include the first host from the cluster by programmatically adding the identifier of the first host to the third data structure, wherein the management server is separate from the cluster, the spare host pool, and the failed host pool.

9. The non-transitory computer-readable medium of claim 8 , wherein the computing device comprises a management server that includes a high availability module, a distributed resource scheduler module, and a host provisioning module.

10. The non-transitory computer-readable medium of claim 8 , wherein each host in the cluster comprises a hypervisor and a virtual storage area network module.

11. The non-transitory computer-readable medium of claim 8 , wherein the cluster does not include a sufficient number of hosts based on utilization data associated with hosts in the cluster.

12. The non-transitory computer-readable medium of claim 11 , wherein the utilization data comprises a CPU utilization of hosts in the cluster, memory utilization of hosts in the cluster, or storage utilization of hosts in the cluster.

13. The non-transitory computer-readable medium of claim 12 , wherein the cluster does not include a sufficient number of hosts when at least one of the CPU utilization, memory utilization, or storage utilization exceeds a respective threshold.

14. The non-transitory computer-readable medium of claim 8 , wherein the instructions further cause the computing device to at least:

when utilization data indicates that the cluster is underutilized based on available resources for the plurality of VCIs in the cluster:

migrate at least one VCI from a third host of the cluster to the second host of the cluster;

migrate the third host to the spare host pool;

update the membership of hosts in the cluster to remove the third host from the cluster by programmatically deleting an identifier of the third host from the first data structure; and

update the membership of hosts in the spare host pool to include the third host by programmatically adding the identifier of the third host to the second data structure.

15. A system comprising:

a cluster of hosts; and

a management server configured to at least:

store membership of hosts in a cluster in a first data structure;

store membership of hosts in a spare host pool in a second data structure;

store membership of hosts in a failed host pool in a third data structure;

when a first host in the cluster is experiencing a partial or total failure and the cluster does not include a sufficient number of hosts based on available resources for a plurality of virtual computing instances (VCIs) in the cluster falling below a minimum threshold value, the available resources comprising at least one of CPU resources, memory resources, or storage resources:

migrate a second host from the spare host pool to the cluster;

migrate at least one VCI from the first host to the second host in the cluster; and

migrate the first host from the cluster to the failed host pool;

while the available resources remain below the minimum threshold value:

migrate one or more hosts from the spare host pool to the cluster;

update the membership of hosts in the cluster to include the second host and the one or more hosts from the spare host pool by programmatically adding identifiers of the second host and the one or more hosts to the first data structure;

update the membership of hosts in the cluster to remove the first host by programmatically deleting an identifier of the first host from the first data structure;

update the membership of hosts in the spare host pool to remove the second host and the one or more hosts from the spare host pool by programmatically deleting the identifiers of the second host and the one or more hosts from the second data structure; and

update the membership of hosts in the failed host pool to include the first host from the cluster by programmatically adding the identifier of the first host to the third data structure, wherein the management server is separate from the cluster, the spare host pool, and the failed host pool.

16. The system of claim 15 , wherein the management server includes a high availability module, a distributed resource scheduler module, and a host provisioning module.

17. The system of claim 15 , wherein each host in the cluster comprises a hypervisor and a virtual storage area network module.

18. The system of claim 15 , wherein the cluster does not include a sufficient number of hosts based on utilization data associated with hosts in the cluster.

19. The system of claim 18 , wherein the utilization data comprises a CPU utilization of hosts in the cluster, memory utilization of hosts in the cluster, or storage utilization of hosts in the cluster.

20. The system of claim 19 , wherein the management server the cluster does not include a sufficient number when at least one of the CPU utilization, memory utilization, or storage utilization exceeds a respective threshold.

21. The system of claim 15 , wherein the management server is further configured to at least:

when utilization data indicates that the cluster is underutilized based on available resources for the plurality of VCIs in the cluster:

migrate at least one VCI from a third host of the cluster to the second host of the cluster;

migrate the third host to the spare host pool;

update the membership of hosts in the cluster to remove the third host from the cluster by programmatically deleting an identifier of the third host from the first data structure; and

update the membership of hosts in the spare host pool to include the third host by programmatically adding the identifier of the third host to the second data structure.

Assignments (1)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0242 →
Continuity (3)
Continuation 16504416 · Jul 8, 2019
Continuation 15368381 · Dec 2, 2016
Related Publication 20220129299A1 · Apr 28, 2022
References Cited (198)
US 6016505A · Badovinatz et al. · 2000 [cited by applicant]
US 6026426A · Badovinatz et al. · 2000 [cited by applicant]
US 6338079B1 · Kanamori et al. · 2002 [cited by applicant]
US 6446218B1 · D Souza · 2002 [cited by applicant]
US 6633962B1 · Burton · 2003 [cited by examiner]
US 6968359B1 · Miller et al. · 2005 [cited by applicant]
US 6973500B1 · Yamamoto et al. · 2005 [cited by applicant]
US 6985937B1 · Keshav · 2006 [cited by examiner]
US 7039694B2 · Kampe et al. · 2006 [cited by applicant]
US 7197632B2 · Rao et al. · 2007 [cited by applicant]
US 7296268B2 · Darling et al. · 2007 [cited by applicant]
US 7320085B2 · Bain · 2008 [cited by examiner]
US 7516221B2 · Souder et al. · 2009 [cited by applicant]
US 7571206B2 · Koning et al. · 2009 [cited by applicant]
US 7584256B2 · Osborne · 2009 [cited by examiner]
US 7644144B1 · Horvitz et al. · 2010 [cited by applicant]
US 7739541B1 · Rao et al. · 2010 [cited by applicant]
US 7739677B1 · Kekre et al. · 2010 [cited by applicant]
US 7739687B2 · Newport · 2010 [cited by applicant]
US 7774010B2 · Kokkonen et al. · 2010 [cited by applicant]
US 8175863B1 · Ostermeyer et al. · 2012 [cited by applicant]
US 8316110B1 · Deshmukh et al. · 2012 [cited by applicant]
US 8352608B1 · Keagy · 2013 [cited by examiner]
US 8738972B1 · Bakman et al. · 2014 [cited by applicant]
US 8874749B1 · Vittal · 2014 [cited by examiner]
US 8881142B1 · Reid · 2014 [cited by examiner]
US 8966318B1 · Shah · 2015 [cited by applicant]
US 9430480B1 · Bono · 2016 [cited by examiner]
US 9454326B1 · Bono · 2016 [cited by examiner]
US 9454444B1 · Agarwal · 2016 [cited by examiner]
US 9524389B1 · Roth · 2016 [cited by applicant]
US 9569277B1 · Cropper · 2017 [cited by examiner]
US 9696985B1 · Gupta et al. · 2017 [cited by applicant]
US 9697028B1 · Allen · 2017 [cited by applicant]
US 9874924B1 · Li · 2018 [cited by applicant]
US 9928092B1 · Pagl et al. · 2018 [cited by applicant]
US 10567288B1 · Mutnuru · 2020 [cited by applicant]
US 20020042830A1 · Bose et al. · 2002 [cited by applicant]
US 20020078263A1 · Darling et al. · 2002 [cited by applicant]
US 20030056013A1 · Laschkewitsch et al. · 2003 [cited by applicant]
US 20040015581A1 · Forbes · 2004 [cited by applicant]
US 20040039815A1 · Evans et al. · 2004 [cited by applicant]
US 20040148333A1 · Manion et al. · 2004 [cited by applicant]
US 20040153558A1 · Gunduc et al. · 2004 [cited by applicant]
US 20040162870A1 · Matsuzaki et al. · 2004 [cited by applicant]
US 20050019311A1 · Holaday et al. · 2005 [cited by applicant]
US 20050102676A1 · Forrester · 2005 [cited by applicant]
US 20050125557A1 · Vasudevan · 2005 [cited by examiner]
US 20050160133A1 · Greenlee et al. · 2005 [cited by applicant]
US 20050160143A1 · Bae et al. · 2005 [cited by applicant]
US 20050193099A1 · Reus et al. · 2005 [cited by applicant]
US 20050251802A1 · Bozek · 2005 [cited by examiner]
US 20050262382A1 · Bain · 2005 [cited by examiner]
US 20060005062A1 · Sagi · 2006 [cited by applicant]
US 20060005189A1 · Vega · 2006 [cited by examiner]
US 20060037016A1 · Saha et al. · 2006 [cited by applicant]
US 20060085530A1 · Garrett · 2006 [cited by applicant]
US 20060143495A1 · Bozak et al. · 2006 [cited by applicant]
US 20060149611A1 · Diep · 2006 [cited by examiner]
US 20060229927A1 · Humphries et al. · 2006 [cited by applicant]
US 20060248159A1 · Polan · 2006 [cited by applicant]
US 20060291459A1 · Bain · 2006 [cited by examiner]
US 20070027452A1 · Varner et al. · 2007 [cited by applicant]
US 20070028239A1 · Dyck · 2007 [cited by examiner]
US 20070226333A1 · Morich · 2007 [cited by examiner]
US 20070233698A1 · Sundar et al. · 2007 [cited by applicant]
US 20070271560A1 · Wahlert · 2007 [cited by examiner]
US 20080000532A1 · Ma et al. · 2008 [cited by applicant]
US 20080005291A1 · Bae et al. · 2008 [cited by applicant]
US 20080189700A1 · Schmidt et al. · 2008 [cited by applicant]
US 20080244595A1 · Eilam et al. · 2008 [cited by applicant]
US 20080256557A1 · Goft et al. · 2008 [cited by applicant]
US 20080320117A1 · Johnsen · 2008 [cited by examiner]
US 20090077558A1 · Arakawa et al. · 2009 [cited by applicant]
US 20090113034A1 · Krishnappa et al. · 2009 [cited by applicant]
US 20090138752A1 · Graham · 2009 [cited by examiner]
US 20090144800A1 · Black-Ziegelbein · 2009 [cited by examiner]
US 20090150529A1 · Tripathi · 2009 [cited by examiner]
US 20090217072A1 · Gebhart · 2009 [cited by examiner]
US 20090222560A1 · Gopisetty · 2009 [cited by examiner]
US 20090307597A1 · Bakman · 2009 [cited by examiner]
US 20090327781A1 · Tripathi · 2009 [cited by examiner]
US 20100010699A1 · Taguchi et al. · 2010 [cited by applicant]
US 20100017801A1 · Kundapur · 2010 [cited by examiner]
US 20100067390A1 · Pereira Valente · 2010 [cited by examiner]
US 20100070784A1 · Gupta · 2010 [cited by examiner]
US 20100115621A1 · Staniford et al. · 2010 [cited by applicant]
US 20100161922A1 · Sharp · 2010 [cited by examiner]
US 20100211829A1 · Ziskind · 2010 [cited by examiner]
US 20100325197A1 · Heim · 2010 [cited by applicant]
US 20100325278A1 · Heim et al. · 2010 [cited by applicant]
US 20100325279A1 · Heim · 2010 [cited by applicant]
US 20100325284A1 · Heim et al. · 2010 [cited by applicant]
US 20100325381A1 · Heim · 2010 [cited by examiner]
US 20100332657A1 · Elyashev · 2010 [cited by examiner]
US 20100333089A1 · Talwar · 2010 [cited by examiner]
US 20110022861A1 · Agneeswaran · 2011 [cited by examiner]
US 20110060832A1 · Govil · 2011 [cited by examiner]
US 20110072208A1 · Gulati et al. · 2011 [cited by applicant]
US 20110131569A1 · Heim · 2011 [cited by applicant]
US 20110161957A1 · Bernardi et al. · 2011 [cited by applicant]
US 20110214005A1 · Biran · 2011 [cited by examiner]
US 20110231680A1 · Padmanabhan · 2011 [cited by examiner]
US 20110231696A1 · Ji · 2011 [cited by examiner]
US 20110247072A1 · Staniford et al. · 2011 [cited by applicant]
US 20110320556A1 · Reuther · 2011 [cited by examiner]
US 20120084774A1 · Post et al. · 2012 [cited by applicant]
US 20120102190A1 · Durham et al. · 2012 [cited by applicant]
US 20120198447A1 · Osogami et al. · 2012 [cited by applicant]
US 20120297236A1 · Ziskind · 2012 [cited by examiner]
US 20120303923A1 · Behera · 2012 [cited by examiner]
US 20130005474A1 · Bethke et al. · 2013 [cited by applicant]
US 20130014499A1 · Gray, Jr. · 2013 [cited by applicant]
US 20130017378A1 · Doytcheva et al. · 2013 [cited by applicant]
US 20130020501A1 · McKinney · 2013 [cited by applicant]
US 20130031165A1 · Pantos et al. · 2013 [cited by applicant]
US 20130054807A1 · Sherwood · 2013 [cited by examiner]
US 20130054966A1 · Clay · 2013 [cited by examiner]
US 20130080559A1 · Rao et al. · 2013 [cited by applicant]
US 20130086298A1 · Alanis · 2013 [cited by examiner]
US 20130086582A1 · Cardona · 2013 [cited by examiner]
US 20130111033A1 · Mao et al. · 2013 [cited by applicant]
US 20130262664A1 · Yamada et al. · 2013 [cited by applicant]
US 20130297964A1 · Hegdal · 2013 [cited by examiner]
US 20130311659A1 · Curran · 2013 [cited by examiner]
US 20130311988A1 · Boss et al. · 2013 [cited by applicant]
US 20140058871A1 · Marr · 2014 [cited by examiner]
US 20140074987A1 · Martz et al. · 2014 [cited by applicant]
US 20140082614A1 · Klein · 2014 [cited by examiner]
US 20140196037A1 · Kartik · 2014 [cited by applicant]
US 20140258533A1 · Antony · 2014 [cited by examiner]
US 20140279884A1 · Dantkale et al. · 2014 [cited by applicant]
US 20140282504A1 · O'Donnell et al. · 2014 [cited by applicant]
US 20140282520A1 · Sabharwal · 2014 [cited by examiner]
US 20140304414A1 · Yengalasetti et al. · 2014 [cited by applicant]
US 20150040127A1 · Dippenaar · 2015 [cited by examiner]
US 20150058861A1 · Zheng et al. · 2015 [cited by applicant]
US 20150074262A1 · Antony · 2015 [cited by examiner]
US 20150161056A1 · Deguillard · 2015 [cited by examiner]
US 20150199205A1 · Chakravarthy · 2015 [cited by examiner]
US 20150212840A1 · Biran · 2015 [cited by examiner]
US 20150212860A1 · Ali et al. · 2015 [cited by applicant]
US 20150215234A1 · Shanmuganathan et al. · 2015 [cited by applicant]
US 20150277951A1 · Sundararaman · 2015 [cited by examiner]
US 20150278041A1 · Ganesan · 2015 [cited by examiner]
US 20150278042A1 · Antony · 2015 [cited by examiner]
US 20150286492A1 · Breitgand · 2015 [cited by examiner]
US 20150324236A1 · Gopalan et al. · 2015 [cited by applicant]
US 20150331704A1 · Abali et al. · 2015 [cited by applicant]
US 20150331706A1 · Hintermeister · 2015 [cited by examiner]
US 20150334040A1 · Crowell · 2015 [cited by examiner]
US 20150339147A1 · Ponsford · 2015 [cited by examiner]
US 20150370657A1 · Marakala · 2015 [cited by examiner]
US 20150378760A1 · Su · 2015 [cited by examiner]
US 20160004863A1 · Lazri · 2016 [cited by examiner]
US 20160041857A1 · Banerjee · 2016 [cited by examiner]
US 20160041889A1 · Banerjee · 2016 [cited by examiner]
US 20160057014A1 · Thakkar · 2016 [cited by examiner]
US 20160070587A1 · Saladi · 2016 [cited by examiner]
US 20160094643A1 · Jain et al. · 2016 [cited by applicant]
US 20160103699A1 · Thakkar · 2016 [cited by examiner]
US 20160103700A1 · Bragstad · 2016 [cited by examiner]
US 20160124774A1 · Antony · 2016 [cited by examiner]
US 20160179184A1 · Shah · 2016 [cited by examiner]
US 20160203015A1 · Joshi et al. · 2016 [cited by applicant]
US 20160205519A1 · Patel et al. · 2016 [cited by applicant]
US 20160216991A1 · Ansari · 2016 [cited by examiner]
US 20160248640A1 · Simoncelli · 2016 [cited by examiner]
US 20160254964A1 · Benc · 2016 [cited by examiner]
US 20160269318A1 · Su · 2016 [cited by examiner]
US 20160283261A1 · Nakatsu · 2016 [cited by examiner]
US 20160283270A1 · Amaral et al. · 2016 [cited by applicant]
US 20160306675A1 · Wiggers · 2016 [cited by examiner]
US 20160314012A1 · Rong · 2016 [cited by examiner]
US 20160321096A1 · Harper · 2016 [cited by examiner]
US 20160371127A1 · Antony · 2016 [cited by examiner]
US 20160378563A1 · Gaurav · 2016 [cited by examiner]
US 20160378622A1 · Ren · 2016 [cited by examiner]
US 20160380832A1 · Purushotham · 2016 [cited by examiner]
US 20170048163A1 · Pan et al. · 2017 [cited by applicant]
US 20170063722A1 · Cropper · 2017 [cited by examiner]
US 20170249374A1 · Parees · 2017 [cited by examiner]
US 20170286799A1 · Gujar · 2017 [cited by examiner]
US 20170295082A1 · Wu · 2017 [cited by examiner]
US 20170310738A1 · Bansal · 2017 [cited by examiner]
US 20170318092A1 · Maredia et al. · 2017 [cited by applicant]
US 20170344394A1 · Ansari · 2017 [cited by examiner]
US 20170373940A1 · Shahab · 2017 [cited by examiner]
US 20180006935A1 · Mutnuru et al. · 2018 [cited by applicant]
US 20180007005A1 · Chanda et al. · 2018 [cited by applicant]
US 20180095776A1 · Tsai et al. · 2018 [cited by applicant]
US 20190190824A1 · Mutnuru et al. · 2019 [cited by applicant]
US 20190230043A1 · Kommula et al. · 2019 [cited by applicant]
US 20190288914A1 · Celozzi et al. · 2019 [cited by applicant]
US 20210226871A1 · Cheng · 2021 [cited by applicant]
US 20210377117A1 · Kanevsky et al. · 2021 [cited by applicant]
US 20220217097A1 · Weissblat et al. · 2022 [cited by applicant]
Auto Scaling, User Guide. Amazon web services. 2016. [cited by applicant]