IP Library Granted Patent US 11,789,660
Granted Patent B1
US 11,789,660 · App. 17/718,403 · Granted Oct 17, 2023

Distributed control plane tracking object ownership changes within a distributed storage architecture

Inventors: Praveen Kumar Hasti (Acton, MA); Christopher Alan Busick (Littleton, MA)
Assignee: NetApp, Inc.
G06F3/0659G06F3/061G06F3/067
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 11,789,660
App. No.
17/718,403
Granted
Oct 17, 2023
Kind
B1
Abstract

Techniques are provided for implementing a distributed control plane to facilitate communication between a container orchestration platform and a distributed storage architecture. The distributed storage architecture hosts worker nodes that manage distributed storage that can be made accessible to applications within the container orchestration platform through the distributed control plane. The distributed control plane includes control plane controllers that are each paired with a single worker node of the distributed storage architecture. The distributed control plane is configured to selectively route commands to control plane controllers that are paired with worker nodes that are current owners of objects targeted by the commands. If ownership of an object has changed from one worker node to another worker node, then subsequent commands will be re-routed to a control plane controller paired with the other worker node now owning the object.

Claims (63)

1. A system, comprising:

a distributed storage architecture including a plurality of worker nodes managing distributed storage comprised of storage devices hosted by the plurality of worker nodes, wherein data of a volume owned by a first worker node is distributed across the storage devices forming the distributed storage, wherein the distributed storage architecture generates volume ownership information to identify worker nodes as current owners of resources within the distributed storage;

a container orchestration platform hosting applications running through containers;

a distributed control plane hosted within the container orchestration platform, wherein the distributed control plane comprises a plurality of pods hosting control plane controllers paired with the worker nodes, wherein the distributed control plane is configured to:

receive a command originating from an application running as a container within the container orchestration platform, wherein the command is formatted according to a first model supported by the container orchestration platform;

evaluate the volume ownership information to determine that the first worker node is a current owner of a volume targeted by the command;

in response to the first worker node being the current owner, route the command to a first control plane controller paired with the first worker node; and

the first control plane controller configured to:

translate the command from being formatted according to the first model into a reformatted command formatted according to a second model supported by the distributed storage architecture; and

transmit the reformatted command to the first worker node for execution through the distributed storage architecture.

2. The system of claim 1 , the distributed control plane is further configured to:

track ownership information of objects stored within the distributed storage across the storage devices; and

in response to determining that ownership of an object changed from the first worker node to a second worker node, updating the ownership information to indicate that the second worker node is a current owner of the object.

3. The system of claim 1 , the distributed control plane is further configured to:

in response to ownership of the volume changing from the first worker node to a second worker node based upon at least one of load balancing, addition of the second worker node, deletion of the first worker node, object creation, or object deletion within the distributed storage architecture, route a subsequent command to a second control plane controller paired with the second worker node.

4. The system of claim 1 , wherein the reformatted command is executed by the first worker node for the volume whose data is sliced across storage devices of multiple worker nodes of the distributed storage architecture.

5. The system of claim 1 , the distributed control plane is further configured to:

provide the application with mountable access to the volume, owned by the first worker node, as a network file system volume, wherein commands targeting the network file system volume are routed to the first control plane controller based upon the first control plane controller being paired with the first worker node.

6. The system of claim 1 , the distributed control plane is further configured to:

execute a polling thread at a cluster level to detect object ownership changes of objects amongst the worker nodes forming a cluster within the distributed storage architecture.

7. The system of claim 1 , the distributed control plane is further configured to:

execute a polling thread to detect a change in ownership of the volume from the first worker node to a second worker node; and

route a subsequent command to a second control plane controller paired with the second worker node based upon the subsequent command targeting the volume owned by the second worker node.

8. The system of claim 1 , the distributed control plane is further configured to:

determine that the command is a snapshot create command to create a snapshot of the volume; and

in response to identifying the first worker node as the current owner of the volume, route the command to the first control plane controller paired with the first worker node for creating the snapshot, wherein the first worker node creates the snapshot based upon the command, and wherein the distributed storage architecture updates ownership information to specify the first worker node as an owner of the snapshot.

9. The system of claim 1 , the distributed control plane is further configured to:

receive a file operation command targeting a file stored within the distributed storage; and

in response to identifying a second worker node as a current owner of the file, route the file operation command to a second control plane controller paired with the second worker node.

10. The system of claim 1 , wherein the first worker node is an owner of an object, and wherein data of the object is stored within a first storage device attached to the first worker node and a second storage device attached to a second worker node, the distributed control plane is further configured to:

route commands targeting the object to the first control plane controller paired with the first worker node and not to a second control plane controller paired with the second worker node based upon the first worked node, and not the second worker node, being the owner of the object.

11. The system of claim 1 , the distributed control plane is further configured to:

in response to detecting a failure of the first worker node, identify a second worker node as a new owner of the volume; and

update the volume ownership information to identify the second worker node as the new owner of the volume.

12. The system of claim 1 , the distributed control plane is further configured to:

in response to detecting a failure of the first worker node, identify a second worker node as a new owner of the volume; and

route a subsequent command to a second control plane controller paired with the second worker node based upon the subsequent command targeting the volume and the second worker node being the new owner of the volume.

13. The system of claim 1 , the distributed control plane is further configured to:

implement load balancing for the distributed storage architecture, wherein the load balancing changes ownership of the volume from the first worker node to a second worker node; and

update the volume ownership information to identify the second worker node as a new owner of the volume, wherein commands targeting the volume are routed to a second control plane controller paired with the second worker node.

14. The system of claim 1 , the first worker node is further configured to:

generate a snapshot of the volume owned by the first worker node, wherein data of the volume is sliced across storage devices of multiple worker nodes of the distributed storage architecture, wherein the distributed storage architecture updates ownership information to specify the first worker node as an owner of the snapshot.

15. A method, comprising:

receiving, by a distributed control plane hosted within a container orchestration platform hosting applications running through containers, a command originating from an application running as a container within the container orchestration platform, wherein the command is formatted according to a first model supported by the container orchestration platform;

evaluating object ownership information to determine that a first worker node, of a plurality of worker nodes managing distributed storage comprised of storage devices hosted by the plurality of worker nodes of a distributed storage architecture, is a current owner of an object targeted by the command;

in response to the first worker node being the current owner, routing the command to a first control plane controller paired with the first worker node;

translating, by the first control plane controller, the command from being formatted according to the first model into a reformatted command formatted according to a second model supported by the distributed storage architecture; and

transmitting the reformatted command to the first worker node for execution through the distributed storage architecture.

16. The method of claim 15 , the method further comprising:

tracking, utilizing the object ownership information, ownership of objects stored within the distributed storage across the storage devices; and

in response to determining that ownership of the object changed from the first worker node to a second worker node, updating the object ownership information to indicate that the second worker node is a current owner of the object.

17. The method of claim 15 , the method further comprising:

in response to ownership of the object changing from the first worker node to a second worker node, routing a subsequent command to a second control plane controller paired with the second worker node.

18. The method of claim 15 , the method further comprising:

changing ownership of the object from the first worker node to a second worker node while retaining current storage locations of data of the object within the distributed storage.

19. The method of claim 15 , the method further comprising:

executing a polling thread to detect a change in ownership of the object from the first worker node to a second worker node; and

route a subsequent command to a second control plane controller paired with the second worker node based upon the subsequent command targeting the object owned by the second worker node.

20. A non-transitory machine readable medium comprising instructions, which when executed by a machine, causes the machine to:

receive, by a distributed control plane hosted within a container orchestration platform, a command originating from an application running as a container within the container orchestration platform, wherein the command is formatted according to a first model supported by the container orchestration platform;

evaluate object ownership information to determine that a first worker node, of a plurality of worker nodes managing distributed storage comprised of storage devices hosted by the plurality of worker nodes of a distributed storage architecture, is a current owner of an object targeted by the command;

in response to the first worker node being the current owner, route the command to a first control plane controller for reformatting the command according to second model supported by the distributed storage architecture and for transmission of the command to the first worker node paired with the first control plane controller; and

in response to ownership of the object changing from the first worker node to a second worker node based upon load balancing, addition of the second worker node, deletion of the first worker node, object creation, or object deletion within the distributed storage architecture, route a subsequent command to a second control plane controller paired with the second worker node.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 12, 2022
From: HASTI, PRAVEEN KUMAR; BUSICK, CHRISTOPHER ALAN
To: NETAPP INC.
Reel/Frame 060019/0818 →
Cited By (3)
US 12,321,790 US 12,423,021 US 12,717,521