IP Library Granted Patent US 9,405,781
Granted Patent B2
US 9,405,781 · App. 14/249,301 · Granted Aug 2, 2016

Virtual multi-cluster clouds

Inventors: Gregory Lee Holt (Hollywood Park, TX); Clay Gerrard (San Antonio, TX); David Patrick Goetz (San Antonio, TX); Michael Barton (San Antonio, TX)
Assignee: Rackspace US, Inc.
G06F17/30318G06F11/1004G06F11/2097G06F17/30153G06F17/30174G06F17/30371G06F17/30864H04L65/403H04L67/06H04L67/1095H04L69/04G06F3/0644
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,405,781
App. No.
14/249,301
Granted
Aug 2, 2016
Kind
B2
Abstract

An improved scalable object storage system includes methods and systems allowing multiple clusters to work together. Users working with a first cluster, or with a multi-cluster gateway, can ask for services and have the request or data transparently proxied to a second cluster. This gives transparent cross-cluster replication, as well as multi-cluster compute or storage farms based upon spot availability or various provisioning policies. Vendors providing a cloud storage “frontend” can provide multiple backends simultaneously. In one embodiment, a multi-cluster gateway can have a two, three, or higher-level ring that transparently matches an incoming request with the correct cluster. In the ring, a request is first mapped to an abstract “partition” based on a consistent hash function, and then one or more constrained mappings map the partition number to an actual resource. In another embodiment, the multi-cluster gateway is a dumb gateway, and the rings are located only at the cluster level.

Claims (33)

1. A system for coordinating a plurality of clusters, the system comprising:

a first cluster including a first plurality of information processing devices;

a second cluster including a second plurality of information processing devices; and

a multi-cluster gateway coupled to the first and second clusters, wherein the multi-cluster gateway includes a ring that performs a first hashing function and a second hashing function responsive to a request to interact with the system, wherein the request includes an object,

wherein the ring performs the first hashing function on an attribute of the object, and an output of the first hashing function is a partition identifier of a partition corresponding to computing resources available at one of the first cluster and the second cluster, and wherein the partition identifier includes a plurality of portions,

wherein the ring performs the second hashing function on each portion of the plurality of portions, and an output of the second hashing function identifies a storage pool location for a portion of the plurality of portions on which the second hashing function is applied, and wherein the storage pool location is located in a responsive cluster from one of the first cluster and the second cluster, and

wherein the multi-cluster gateway sends a message to the responsive cluster.

2. The system of claim 1 , wherein the first hashing function comprises a consistent hashing function.

3. The system of claim 1 , wherein the second hashing function comprises a constrained mapping function.

4. The system of claim 1 , wherein the output of the second hashing function further identifies a specific resource within the responsive cluster.

5. The system of claim 4 , wherein the message to the responsive cluster is addressed to the specific resource within the responsive cluster.

6. The system of claim 1 , further comprising a return message from the responsive cluster responsive to the request to interact with the system.

7. The system of claim 1 , wherein the multi-cluster gateway further includes a proxy module.

8. The system of claim 7 , wherein the proxy module sends a return message from the responsive cluster in response to the request to interact with the system.

9. The system of claim 1 , wherein one of the first cluster and the second cluster further comprises a cluster-level ring, wherein the cluster-level ring performs a third hashing function responsive to a message identifying the cluster as a responsive cluster, wherein the output of the third hashing function is a cluster-level partition associated with the resources available within the cluster.

10. The system of claim 9 , wherein the cluster-level ring performs a fourth hashing function, wherein the output of the fourth hashing function identifies a specific responsive resource associated with the cluster-level partition.

11. The system of claim 1 , wherein the first cluster is controlled by a first party and the second cluster is controlled by a second party.

12. The system of claim 1 , wherein the second hashing function uses geographic distance to choose which cluster is the responsive cluster.

13. The system of claim 1 , wherein the second hashing function uses network latency to choose which cluster is the responsive cluster.

14. A method of coordinating a plurality of clusters, the method comprising:

receiving a request including an object;

performing a first hashing function on an attribute of the object;

obtaining an output of the first hashing function, the output being a partition identifier of a partition corresponding to computing resources available at one of a first cluster and a second cluster, the partition identifier including a plurality of portions;

performing a second hashing function on a portion of the plurality of portions;

obtaining an output of the second hashing function, the output identifying a storage pool location, the storage pool location being located in a responsive cluster from one of the first cluster and the second cluster; and

sending a message to the responsive cluster.

15. The method of claim 14 , further comprising:

receiving a responsive message from a cluster.

16. The method of claim 14 , wherein only one of the first cluster and the second cluster is the responsive cluster, and wherein a response to the request is sent by the responsive cluster.

17. The method of claim 14 , wherein either of the first cluster and the second cluster can be a responsive cluster, and wherein the first cluster to formulate a response sends the response.

18. The method of claim 14 , wherein the sending the message includes sending the message to the cluster that is closer geographically to the source of the request.

19. The method of claim 14 , wherein the sending the message includes sending the message to the cluster that has lower latency between the cluster and the source of the request.

20. The method of claim 14 , wherein the first cluster is controlled by a first party and the second cluster is controlled by a second party.

Assignments (5)
RELEASE OF PATENT SECURITIES Recorded Mar 13, 2024
From: CITIBANK, N.A.
To: RACKSPACE US, INC.
Reel/Frame 066795/0177 →
SECURITY AGREEMENT (FIRST LIEN) Recorded Mar 13, 2024
From: RACKSPACE US, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 066795/0282 →
CORRECTIVE ASSIGNMENT TO CORRECT THE DELETE PROPERTY NUMBER PREVIOUSLY RECORDED AT REEL: 40564 FRAME: 914. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 21, 2019
From: RACKSPACE US, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 048658/0637 →
SECURITY AGREEMENT Recorded Nov 4, 2016
From: RACKSPACE US, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 040564/0914 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 16, 2015
From: HOLT, GREGORY LEE; GERRARD, CLAY; GOETZ, DAVID PATRICK; BARTON, MICHAEL
To: RACKSPACE US, INC.
Reel/Frame 037051/0123 →
Continuity (5)
Continuation 13278876 · Oct 21, 2011
Continuation 13089442 · Apr 19, 2011
Provisional Application 61450166 · Mar 8, 2011
Provisional Application 61479299 · Apr 26, 2011
Related Publication 20140304334A1 · Oct 9, 2014