IP Library Granted Patent US 10,693,948
Granted Patent B2
US 10,693,948 · App. 15/450,936 · Granted Jun 23, 2020

Provisioning of containers for virtualized applications

Inventors: Atanu Neogi (Brookline, MA); Ajoy Kumar (Santa Clara, CA); Soumee Phatak (Pune, IN)
Assignee: BladeLogic Inc.
H04L67/10G06F9/5044H04L43/16H04L45/122H04L47/781
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 10,693,948
App. No.
15/450,936
Granted
Jun 23, 2020
Kind
B2
Abstract

In a general aspect, a computer-implemented method can include receiving a request to provision a plurality of containers of an application across a plurality of data center hosts and iteratively placing the plurality of containers on the plurality of data center hosts. The containers can be selected for placement based on one of a locality constraint and an association with previously-placed containers. Placement of a selected container can be based on, at least, compute requirements of the selected container, network requirements of the selected container, configuration of the plurality of data center hosts, and performance metrics for the plurality of data center hosts.

Claims (62)

1. A computer-implemented method including executing, by at least one processor of a computing device, instructions to implement the method, the instructions being recorded on a non-transitory computer-readable storage medium, the method comprising:

receiving a request to provision a plurality of containers of an application across a plurality of data center hosts;

identifying, from the plurality of containers, a first container to provision based on a computing resource to be used to implement the first container and network requirements between the first container and the computing resource, the network requirements between the first container and the computing resource defined in a manifest file for the first container;

selecting a first host from the plurality of data center hosts to implement the first container based on compute requirements of the first container, the network requirements between the first container and the computing resource, configuration of the plurality of data center hosts, and dynamically measured performance metrics of the plurality of data center hosts;

identifying, from the plurality of containers, a second container to provision based on the second container meeting network requirements between the second container and the first container from among remaining unplaced containers;

automatically generating affinity requirements between the first container and the second container based on one or more affinity rules automatically derived from the manifest file, wherein the one or more affinity rules include affinity rules related to shared container resources; and

selecting a second host from the plurality of data center hosts to implement the second container based on compute requirements of the second container, the network requirements between the second container and the first container, the configuration of the plurality of data center hosts, the automatically generated affinity requirements, and the dynamically measured performance metrics of the plurality of data center hosts.

2. The computer-implemented method of claim 1 , wherein:

the compute requirements of the first container include a processor requirement of the first container and a storage requirement of the first container; and

the network requirements between the first container and the computing resource include at least one of a bandwidth requirement, a maximum number of hops requirement, and a latency requirement.

3. The computer-implemented method of claim 1 , wherein:

the compute requirements of the second container include a processor requirement and a storage requirement; and

the network requirements between the second container and the first container include at least one of a bandwidth requirement, a maximum number of hops requirement, and a latency requirement.

4. The computer-implemented method of claim 1 , wherein selecting the first host from the plurality of data center hosts to implement the first container is further based on, at least one of, security requirements of the first container, scaling requirements of the second container, and availability requirements of the first container.

5. The computer-implemented method of claim 1 , wherein selecting the second host from the plurality of data center hosts to implement the second container is further based on, at least one, of security requirements of the second container, scaling requirements of the second container, and availability requirements of the second container.

6. The computer-implemented method of claim 1 , wherein the one or more affinity rules further include one or more of affinity rules related to defined data center fault regions, a shared data file, a shared filesystem, a shared IP address, placement on a same host, and a proximity to a shared resource.

7. The computer-implemented method of claim 1 , further comprising:

identifying, from the plurality of containers, a third container to provision based on network requirements between the third container and the second container; and

selecting a third host from the plurality of data center hosts to implement the third container based on compute requirements of the third container, network requirements between the third container and the second container, the configuration of the plurality of data center hosts, and the performance metrics of the plurality of data center hosts.

8. The computer-implemented method of claim 7 , wherein selecting the third host from the plurality of data center hosts to implement the third container is further based on, at least one of, security requirements of the third container, scaling requirements of the third container, affinity requirements between the first container, the second container and the third container, and availability requirements of the third container.

9. A computer-implemented method including executing, by at least one processor of a computing device, instructions to implement the method, the instructions being recorded on a non-transitory computer-readable storage medium, the method comprising:

receiving a request to provision a plurality of containers of an application across a plurality of data center hosts;

identifying, from the plurality of containers, a first container to provision based on a computing resource to be used to implement the first container and network requirements between the first container and the computing resource, the network requirements between the first container and the computing resource defined in a manifest file for the first container;

selecting a first host from the plurality of data center hosts to implement the first container based on compute requirements of the first container, network requirements of the first container, configuration of the plurality of data center hosts, and performance metrics of the plurality of data center hosts;

identifying, from the plurality of containers, a second container to provision based on the second container meeting network requirements between the second container and the first container from among remaining unplaced containers;

automatically generating affinity requirements between the first container and the second container based on one or more affinity rules automatically derived from the manifest file, wherein the one or more affinity rules include affinity rules related to shared container resources; and

selecting a second host from the plurality of data center hosts to implement the second container based on compute requirements of the second container, network requirements between the first container and the second container, security requirements of the second container, scaling requirements of the second container, the automatically generated affinity requirements between the first container and the second container, availability requirements of the second container, the configuration of the plurality of data center hosts, and the performance metrics of the plurality of data center hosts.

10. The computer-implemented method of claim 9 , wherein the computing resource to be used to implement the first container is one of data storage and Internet access.

11. The computer-implemented method of claim 9 , wherein the first container is a first container type, and the second container is a second container type, the second container type being different than the first container type.

12. The computer-implemented method of claim 9 , wherein the first container and the second container are a same container type.

13. The computer-implemented method of claim 9 , wherein the performance metrics of the plurality of data center hosts are determined dynamically.

14. The computer-implemented method of claim 9 , wherein:

the network requirements between the second container and the first container is included in a manifest file for the second container.

15. The computer-implemented method of claim 9 , wherein:

selecting the first host from the plurality of data center hosts to implement the first container is further based on, at least one of, a security requirement of the first container and an availability requirement of the first container.

16. The computer-implemented method of claim 9 , wherein:

selecting the first host from the plurality of data center hosts to implement the first container is further based on relative weights for the compute requirements of the first container, the network requirements between the first container and the computing resource, and an availability requirement for the first container.

17. The computer-implemented method of claim 9 , wherein the one or more affinity rules further include one or more of affinity rules related to defined data center fault regions, a shared data file, a shared filesystem, a shared IP address, placement on a same host, and a proximity to a shared resource.

18. The computer-implemented method of claim 9 , further comprising:

identifying, from the plurality of containers, a third container to provision based on network requirements between the third container and the second container; and

selecting a third host from the plurality of data center hosts to implement the third container based on compute requirements of the third container, network requirements of the third container, security requirements of the third container, scaling requirements of the third container, affinity requirements between the first container, the second container, and the third container, availability requirements of the third container, the configuration of the plurality of data center hosts, and the performance metrics of the plurality of data center hosts.

19. The computer-implemented method of claim 18 , wherein the third container is of a type that is different than a type of the first container and different than a type of the second container.

20. A computer-implemented method including executing, by at least one processor of a computing device, instructions to implement the method, the instructions being recorded on a non-transitory computer-readable storage medium, the method comprising:

receiving a request to provision an application having an N number of containers across a plurality of data center hosts; and

determining respective placements for the N number of containers of the application in the plurality of data center hosts, until the respective placements for the N number of containers are determined, iteratively by:

selecting, for placement, a container from unplaced containers of the N number of containers, the selecting being based on one of a locality constraint and an association with previously-placed containers of the N number of containers;

automatically generating affinity requirements between the selected container and the previously-placed containers based on one or more affinity rules automatically derived from a manifest file, wherein the one or more affinity rules include affinity rules related to shared container resources;

identifying a set of data center hosts from the plurality of data center hosts based on compute requirements of the selected container, network requirements of the selected container, and the automatically generated affinity requirements;

assigning a respective score to each of the data center hosts of the set of data center hosts based on one or more scoring weights for the selected container, configuration of the plurality of data center hosts, and performance metrics for the data center hosts of the identified set of data center hosts;

selecting, based on the respective scores, a host from the set of data center hosts for placement of the selected container; and

updating a container configuration table with provisioning information for the selected container, the provisioning information including the selected host and one or more logical network paths for the selected container; and

provisioning the N number of containers on the plurality of data center hosts based on the container configuration table.

21. The computer-implemented method of claim 20 , further comprising:

receiving an indication of at least one of a change in the plurality of data center hosts and a change in the application;

identifying one or more containers to reprovision based on the indication; and

reprovisioning each of the identified one or more containers by, for each of the identified one or more containers being reprovisioned the method includes:

identifying a modified set of data center hosts from the plurality of data center hosts based on the indication, compute requirements of the container being reprovisioned, and network requirements of the container being reprovisioned;

assigning a respective score to each of the data center hosts of the modified set of data center hosts based on one or more scoring weights for the container being reprovisioned, configuration of the plurality of data center hosts, and performance metrics for the data center hosts of the modified set of data center hosts;

selecting, based on the respective scores, a host from the modified set of data center hosts for placement of the container being reprovisioned; and

updating the container configuration table with provisioning information for the container being reprovisioned, the provisioning information for the container being reprovisioned including the selected host from the modified set of data center hosts and one or more logical network paths for the container being reprovisioned.

22. The computer-implemented method of claim 20 , wherein placing the selected container includes placing multiple instances of the selected container in the plurality of data center hosts based on at least one of a scaling requirement for the selected container and an availability requirement of the selected container.

23. The computer-implemented method of claim 20 , wherein the one or more affinity rules further include one or more of affinity rules related to defined data center fault regions, a shared data file, a shared filesystem, a shared IP address, placement on a same host, and a proximity to a shared resource.

Assignments (14)
CHANGE OF NAME Recorded Jan 10, 2025
From: BLADELOGIC, INC.
To: BMC HELIX, INC.
Reel/Frame 069870/0796 →
GRANT OF FIRST LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 13, 2024
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 069352/0628 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 13, 2024
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 069352/0568 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052854/0139) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0617 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052844/0646) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0408 →
OMNIBUS ASSIGNMENT OF SECURITY INTERESTS IN PATENT COLLATERAL Recorded Mar 4, 2024
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS RESIGNING COLLATERAL AGENT
To: GOLDMAN SACHS BANK USA, AS SUCCESSOR COLLATERAL AGENT
Reel/Frame 066729/0889 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 1, 2024
From: ALTER DOMUS (US) LLC
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 066567/0283 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Sep 30, 2021
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 057683/0582 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052844/0646 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052854/0139 →
RELEASE OF PATENTS Recorded Oct 5, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.; BMC ACQUISITION L.L.C.
Reel/Frame 047198/0468 →
SECURITY INTEREST Recorded Oct 2, 2018
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE, AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 047185/0744 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 15, 2017
From: NEOGI, ATANU; KUMAR, AJOY; PHATAK, SOUMEE
To: BLADELOGIC, INC.
Reel/Frame 044137/0732 →
SECURITY INTEREST Recorded Aug 10, 2017
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 043514/0845 →