IP Library Granted Patent US 10,579,364
Granted Patent B2
US 10,579,364 · App. 15/870,321 · Granted Mar 3, 2020

Upgrading bundled applications in a distributed computing system

Inventors: Tushar Doshi (Santa Clara, CA); Ravi Kumar Alluboyina (Santa Clara, CA); Giridharan Kesavan (Pleasanton, CA)
Assignee: ROBIN SYSTEMS, INC.
G06F8/65G06F9/455G06F11/1469G06F16/128G06F2201/84
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,579,364
App. No.
15/870,321
Granted
Mar 3, 2020
Kind
B2
Abstract

A new snapshot of a storage volume is created by instructing computing nodes to suppress write requests. Once pending write requests from the computing nodes are completed, storage nodes create a new snapshot for the storage volume by allocating a new segment to the new snapshot and finalizes and performs garbage collection with respect to segments allocated to the previous snapshot. Subsequent write requests to the storage volume are then performed on the segments allocated to the new snapshot. An orchestration layer implements a multi-role application that is provisioned with virtualized storage and computation resources. A snapshot of the application may be created and used to rollback or clone the application. Clones snapshots of storage volumes may be gradually populated with data from prior snapshots to reduce loading on a primary snapshot. Upgrades for bundled applications may be defined and executed for containers and roles of the bundled application.

Claims (72)

1. A method comprising:

providing a first container executing on a first host computing device in a distributed computing system, the first container controlling execution of a first application instance;

providing a remote storage volume on a second host computing device in the distributed storage system, the remote storage volume being mounted to the first container;

(a) receiving, by the first host computing device, a second application instance that is an upgrade of the first application instance; and

in response to (a), performing, by the first computing device, (b), (c), (d), (e), and (f), wherein (b), (c), (d), (e), and (f) include:

(b) creating, by the first host computing device, a second container on the first host computing device;

(c) loading, by the first host computing device, the second application instance into the second container;

(d) stopping, by the first host computing device, execution of the first container;

(e) mounting, by the first host computing device, the remote storage volume to the second container; and

(f) starting, by the first host computing device, execution of the second application instance in the second container;

wherein the first container is one of a plurality of current containers executing on a plurality of computing devices of the distributed computing system and the remote storage volume is one of a plurality of remote storage volumes mounted to the plurality of current containers, the method further comprising: receiving an application upgrade;

(g) for each container of the plurality of current containers:

evaluating a current version number of an application instance executing in the each container with respect to the application upgrade; and

when the application upgrade includes a later version number than the current version number and the current version number meets a version constraint of the application upgrade for the application instance executing in the each container:

replacing the each container with an upgraded container including an upgraded application instance corresponding to the application instance executing in the each container; and

wherein the first container has a first container identifier and is addressable by other computing devices in the distributed computing system by the first container identifier, the method further comprising assigning the first container identifier to the second container.

2. The method of claim 1 , wherein the first container is one of a plurality of current containers executing on a plurality of computing devices of the distributed computing system and the remote storage volume is one of a plurality of remote storage volumes mounted to the plurality of current containers, the method further comprising:

(g) receiving a dependency map and a plurality of upgraded application instances, the plurality of upgraded application instances including the second application instance; and

(h) replacing the plurality of current containers with a plurality of upgraded containers executing the plurality of upgraded application instances in an order defined in the dependency map; and

(i) mounting the plurality of remote storage volumes to the plurality of upgraded containers.

3. The method of claim 1 , further comprising, processing the plurality of current containers according to (g) in an order defined by a dependency map of the application upgrade.

4. The method of claim 2 , wherein the plurality of upgraded containers implements a HADOOP cluster; and

wherein the plurality of upgraded application instances includes upgraded executable images implementing one or more of a name node, a data node, a zookeeper, and AMBARI for the HADOOP cluster.

5. The method of claim 4 , further comprising:

prior to starting execution of the plurality of upgraded containers, migrating data within the plurality of remote storage volumes to an upgraded format corresponding to the plurality of upgraded application instances.

6. The method of claim 2 , further comprising:

creating a snapshot of the plurality of current containers and the plurality of remote storage volumes prior to performing (g), (h), and (i);

after performing (g), (h), and (i), rolling back the plurality of upgraded containers to the plurality of current containers in the snapshot; and

rolling back the plurality of remote storage volumes to a state stored in the snapshot.

7. The method of claim 2 , further comprising:

creating a snapshot of the plurality of current containers and the plurality of remote storage volumes; and

restarting the snapshot as a clone application including clone containers corresponding to the plurality of current containers and clone volumes corresponding to the plurality of remote storage volumes.

8. The method of claim 7 , wherein each current container of the plurality of current containers has a current identifier and is addressable by other computing devices in the distributed computing system using the current identifier, the method further comprising:

assigning, to each clone container of the clone containers, a clone identifier that is different from the current identifier of a container of the plurality of current containers corresponding to the each clone container; and

for each current container, replacing any references to the current identifier of the each current container in the plurality of remote storage volumes with the clone identifier of the each clone container corresponding to the each current container.

9. A system comprising:

a first computing device including one or more processing devices and one or more memory devices operably coupled to the one or more processing devices, the one or more memory devices storing executable code effective to cause the one or more processing devices to:

execute a first container executing, the first container controlling execution of a first application instance;

mount a remote storage volume to the first container, the remote storage volume being on a second host computing device in a distributed storage system;

(a) receive a second application instance that is an upgrade of the first application instance;

in response to (a), perform (b), (c), (e), (e), and (f), wherein (b), (c), (d), (e), and (f) include:

(b) create a second container;

(c) load the second application instance into the second container;

(d) stop execution of the first container;

(e) following performing (b), (c), and (d) mount the remote storage volume to the second container;

(f) following performing (f), start execution of the second application instance in the second container

wherein the first container is one of a plurality of current containers executing on a plurality of computing devices of a distributed computing system and the remote storage volume is one of a plurality of remote storage volumes mounted to the plurality of current containers, the system including a second computing device programmed to: receive an application upgrade;

(g) for each container of the plurality of current containers executing on the first device: evaluate a current version number of an application instance executing in the each container with respect to the application upgrade; and

when the application upgrade includes a later version number than the current version number and the current version number meets a version constraint of the application upgrade for the application instance executing in the each container, invoke replacing of the each container with an upgraded container including an upgraded application instance corresponding to the application instance executing in the each container; and

wherein the first container has a first container identifier and is addressable by other computing devices in the distributed computing system by the first container identifier, the executable code being further effective to cause the one or more processing devices to assign the first container identifier to the second container.

10. The system of claim 9 , further comprising a distributed computing system including a plurality of computing devices, the first computing device being one of the plurality of computing devices;

wherein the first container is one of a plurality of current containers executing on a plurality of computing devices of the distributed computing system and the remote storage volume is one of a plurality of remote storage volumes mounted to the plurality of current containers;

wherein a second computing device of the plurality of computing devices is programmed to:

(g) receive a dependency map and a plurality of upgraded application instances, the plurality of upgraded application instances including the second application instance; and

(h) invoke replacing of the plurality of current containers with a plurality of upgraded containers executing the plurality of upgraded application instances in an order defined in the dependency map; and

(i) invoke mounting of the plurality of remote storage volumes to the plurality of upgraded containers.

11. The system of claim 9 , the second computing device being further programmed to process the plurality of current containers according to (g) in an order defined by a dependency map of the application upgrade.

12. The system of claim 10 , wherein the plurality of upgraded containers implements a HADOOP cluster; and

wherein the plurality of upgraded instances includes upgraded executable images implementing one or more of a name node, a data node, a zookeeper, and AMBARI for the HADOOP cluster.

13. The system of claim 12 , wherein the second computing device is further programmed to:

prior to starting execution of the plurality of upgraded containers, invoke migrating of data within the plurality of remote storage volumes to an upgraded format corresponding to the plurality of upgraded application instances.

14. The system of claim 10 , wherein the second computing device is further programmed to:

invoke creating of a snapshot of the plurality of current containers and the plurality of remote storage volumes prior to performing (h), (h), and (i);

after performing (g), (h), and (i), invoke rolling back of the plurality of upgraded containers to the plurality of current containers in the snapshot; and

invoke rolling back the plurality of remote storage volumes to a state stored in the snapshot.

15. The system of claim 10 , wherein the second computing device is further programmed to:

invoke creating of a snapshot of the plurality of current containers and the plurality of remote storage volumes; and

invoke restarting of the snapshot as a clone application including clone containers corresponding to the plurality of current containers and clone volumes corresponding to the plurality of remote storage volumes.

16. The system of claim 15 , wherein each current container of the plurality of current containers has a current identifier and is addressable by other computing devices in the distributed computing system using the current identifier; and

wherein the second computing device is further programmed to: further comprising:

assign, to each clone container of the clone containers, a clone identifier that is different from the current identifier of a container of the plurality of current containers corresponding to the each clone container; and

for each current container, invoke replacing of any references to the current identifier of the each current container in the plurality of remote storage volumes with the clone identifier of the each clone container corresponding to the each current container.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 30, 2024
From: ROBIN SYSTEMS, INC.
To: RAKUTEN SYMPHONY, INC.
Reel/Frame 068193/0367 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 11, 2018
From: DOSHI, TUSHAR; ALLUBOYINA, RAVI KUMAR; KESAVAN, GIRIDHARAN
To: ROBIN SYSTEMS, INC.
Reel/Frame 045511/0357 →
Continuity (1)
Related Publication 20190220266A1 · Jul 18, 2019
Cited By (12)
US 12,265,816 US 12,306,819 US 12,481,638 US 12,517,865 US 12,572,559 US 12,613,857 US 12,650,827 US 12,657,097 US 12,693,939 US 12,693,999 US 12,699,575 US 12,699,685