IP Library Granted Patent US 9,842,002
Granted Patent B2
US 9,842,002 · App. 13/461,699 · Granted Dec 12, 2017

Node selection for a new application in a multi-tenant cloud hosting environment

Inventors: Michael P. McGrath (Schaumburg, IL); Matthew Hicks (Westford, MA); Daniel Charles McPherson (Raleigh, NC)
Assignee: Red Hat, Inc.
G06F9/505G06F9/5061G06F9/5072
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,842,002
App. No.
13/461,699
Granted
Dec 12, 2017
Kind
B2
Abstract

A mechanism for node selection for a new application in a multi-tenant cloud hosting environment is disclosed. A method of the invention includes receiving a request to host a software application on one of a plurality of nodes of a cloud computing infrastructure, each node configured to host multiple software applications. A set of available nodes from the plurality of nodes can be identified on which the software application can be hosted and the capacity of each identified node to host additional software applications can be determined. Then, a node is selected to host the software application using the determined capacities.

Claims (70)

1. A method, comprising:

receiving, by a processing device, a first request from a first application owner to host a first Web application on a virtual machine of a plurality of virtual machines of a multi-tenant cloud computing infrastructure of the cloud provider;

creating the first Web application for the first request on the virtual machine;

receiving a second request from a second application owner to host a second Web application on one of the plurality of virtual machines in the multi-tenant cloud computing infrastructure, wherein the second application owner is different than the first application owner;

determining that a first attribute of the first Web application being hosted for the first request on the virtual machine matches a second attribute of the second Web application in the second request, wherein the first attribute and the second attribute comprise an implementation related property of the first Web application and the second Web application, respectively;

determining, responsive to the first attribute matching the second attribute, that the virtual machine hosting the first Web application for the first request has capacity to host the second Web application for the second request;

creating the second Web application for the second request on the virtual machine hosting the first Web application; and

preventing the second Web application from accessing the first Web application and preventing the first Web application from accessing the second Web application.

2. The method of claim 1 , wherein determining that the virtual machine hosting the first Web application for the first request has capacity comprises:

comparing the capacity of the virtual machine that is hosting the first Web application to other virtual machines of the plurality of virtual machines; and

determining the virtual machine that is hosting the first Web has the most capacity in view of the comparing.

3. The method of claim 1 , wherein creating the second Web application for the second request comprises:

sending an instruction to the virtual machine hosting the first Web application to create a new software repository for the second Web application for the second request.

4. The method of claim 1 , wherein determining that the virtual machine hosting the first Web application for the first request has capacity comprises:

determining a number of software repositories on the virtual machine; and

determining a current virtual machine utilization using the number of software repositories.

5. The method of claim 4 , wherein determining the current virtual machine utilization comprises:

weighing each software repository on the virtual machine in view of a source code language of a respective Web application hosted in each software repository.

6. The method of claim 1 , wherein determining that the virtual machine hosting the first Web application for the first request has capacity comprises:

determining a number of active applications on the virtual machine that are currently executing; and

determining a current virtual machine utilization using the number of active applications.

7. The method of claim 6 , wherein determining the current virtual machine utilization comprises:

weighing each active application on the virtual machine in view of an expected memory footprint of each active application.

8. The method of claim 6 , wherein determining the current virtual machine utilization comprises:

weighing each active application on the virtual machine in view of an indicated size of each active application.

9. The method of claim 6 , further comprising:

determining a maximum virtual machine utilization for the virtual machine hosting the first Web application for the first request; and

comparing the maximum virtual machine utilization to the current virtual machine utilization of the virtual machine.

10. A system, comprising:

a memory;

a communications interface to communicate with a plurality of virtual machines of a multi-tenant cloud computing infrastructure of cloud provider; and

a processing device operably coupled to the memory and the communications interface to:

receive a first request from a first application owner to host a first Web application on a virtual machine of the plurality of virtual machines of the multi-tenant cloud computing infrastructure;

create the first Web application for the first request on the virtual machine;

receive a second request from a second application owner to host a second Web application on one of the plurality of virtual machines in the multi-tenant cloud computing infrastructure, wherein the second application owner is different than the first application owner;

determine that a first attribute of the first Web application being hosted for the first request on the virtual machine matches a second attribute of the second Web application in the second request, wherein the first attribute and the second attribute comprise an implementation related property of the first Web application and the second Web application, respectively;

determine, responsive to a match of the first attribute to the second attribute, that the virtual machine hosting the first Web application for the first request has capacity to host the second Web application for the second request;

create the second Web application for the second request on the virtual machine hosting the first Web application; and

prevent the second Web application from accessing the first Web application and prevent the first Web application from accessing the second Web application.

11. The system of claim 10 , wherein to determine that the virtual machine hosting the first Web application for the first request has capacity comprises the processing device to:

compare the capacity of the virtual machine that is hosting the first Web application to other virtual machines of the plurality of virtual machines; and

determine the virtual machine that is hosting the first Web application has the most capacity in view of the comparing.

12. The system of claim 10 , wherein to create the second Web application for the second request comprises the processing device to:

send an instruction to the virtual machine hosting the first Web application to create a new software repository for the second Web application for the second request.

13. The system of claim 10 , wherein to determine that the virtual machine hosting the first Web application for the first request has comprises the processing device to:

determine a number of software repositories on the virtual machine; and

determine a current virtual machine utilization using the number of software repositories.

14. The system of claim 13 , wherein to determine the current virtual machine utilization comprises the processing device to:

weigh each software repository on the virtual machine in view of a source code language of a respective Web application hosted in each software repository.

15. The system of claim 10 , wherein to determine that the virtual machine hosting the first Web application for the first request has comprises the processing device to:

determine a number of active applications on the virtual machine that are currently executing; and

determine a current virtual machine utilization using the number of active applications.

16. The system of claim 15 , wherein to determine the current virtual machine utilization comprises the processing device to:

weigh each active application on the virtual machine in view of an expected memory footprint of each active application.

17. A non-transitory machine-readable storage medium including instructions that, when executed by a processing device, cause the processing device to:

receive, by the processing device, a first request from a first application owner to host a first Web application on a virtual machine of a plurality of virtual machines of the multi-tenant cloud computing infrastructure;

create the first Web application for the first request on the virtual machine;

receive a second request from a second application owner to host a second Web application on one of the plurality of virtual machines, wherein the second application owner is different than the first application owner;

determine that a first attribute of the first Web application being hosted for the first request on the virtual machine matches a second attribute of the second Web application in the second request, wherein the first attribute and the second attribute comprise an implementation related property of the first Web application and the second Web application, respectively;

determine, responsive to a match of the first attribute to the second attribute, that the virtual machine hosting the first Web application for the first request has capacity to host the second Web application for the second request;

create the second Web application for the second request on the virtual machine hosting the first Web application and

prevent the second Web application from accessing the first Web application and prevent the first Web application from accessing the second Web application.

18. The non-transitory machine-readable storage medium of claim 17 , wherein to determine that the virtual machine hosting the first Web application for the first request has capacity comprises the processing device to:

determine a number of software repositories on the virtual machine; and

determine a current virtual machine utilization using the number of software repositories.

19. The non-transitory machine-readable storage medium of claim 17 , wherein to determine that the virtual machine hosting the first Web application for the first request has capacity comprises the processing device to:

determine a number of active applications on the virtual machine that are currently executing; and

determine a current virtual machine utilization using the number of active applications.

20. The non-transitory machine-readable storage medium of claim 19 , wherein to determine the current virtual machine utilization comprises the processing device to:

weigh each active application on the virtual machine in view of an expected memory footprint of each active application.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 12, 2017
From: MCGRATH, MICHAEL P.; HICKS, MATTHEW; MCPHERSON, DANIEL CHARLES
To: RED HAT, INC.
Reel/Frame 044375/0658 →
Continuity (1)
Related Publication 20130297673A1 · Nov 7, 2013