IP Library › Granted Patent US 12,124,344
Granted Patent B2
US 12,124,344 · App. 18/321,397 · Granted Oct 22, 2024

Systems and methods for enabling a highly available managed failover service

Inventors: Nathan Dye (Seattle, WA); Harvo Reyzell Jones (Lake Forest Park, WA)
Assignee: Amazon Technologies, Inc.
G06F11/2023G06F9/44505G06F11/3006H04L47/125H04L47/2475H04L67/10
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 12,124,344
App. No.
18/321,397
Granted
Oct 22, 2024
Kind
B2
Abstract

A computing system that receives and stores configuration information for the application in a data store. The configuration information comprises (1) identifiers for a plurality of cells of the application that include at least a primary cell and a secondary cell, (2) a defined state for each of the plurality of cells, (3) one or more dependencies for the application, and (4) a failover workflow defining actions to take in a failover event. The computing system receives an indication, from a customer, of a change in state of the primary cell or a request to initiate the failover event. The computing system updates, in the data store, the states for corresponding cells of the plurality of cells based on the failover workflow and updates, in the data store, the one or more dependencies for the application based on the failover workflow.

Claims (47)

1. A computing system comprising:

a computer-readable memory storing executable instructions; and

one or more computer processors in communication with the computer-readable memory, wherein the one or more computer processors are configured to execute the executable instructions to receive configuration information comprising:

identifiers for individual cells of a plurality of cells of an application distributed across a plurality of zones, the plurality of cells including at least a primary cell and a secondary cell,

a defined state for individual cells of the plurality of cells,

one or more dependencies for the application, and

a failover workflow defining actions to take in a failover event based on the defined state for individual cells and the one or more dependencies;

wherein the one or more computer processors are further configured to execute the executable instructions to at least:

receive a request to initiate the failover event, and

update the states for corresponding cells of the plurality of cells based on the failover workflow.

2. The computing system of claim 1 , wherein the one or more computer processors are further configured to execute the executable instructions to:

identify that the primary cell changes state to a fenced state; and

route at least a portion of read traffic to the primary cell for at least a duration of time after the primary cell changes state to the fenced state.

3. The computing system of claim 2 , wherein to identify that the primary cell changes state to the fenced state, the one or more computer processors are further configured to execute the executable instructions to identify that at least a quorum of data store partitions across the plurality of zones indicates that a current state value of the primary cell is not an active state.

4. The computing system of claim 2 , wherein to route the at least a portion of read traffic to the primary cell for at least a duration of time after the primary cell changes state to the fenced state, the one or more computer processors are further configured to execute the executable instructions to provide routing instructions to at least one of a traffic management service or a Domain Name System (DNS) service provider.

5. The computing system of claim 1 , wherein the configuration information defines the primary cell to have an active state and the secondary cell to have a standby state.

6. The computing system of claim 5 , wherein to update the states for corresponding cells of the plurality of cells based on the failover workflow, the one or more computer processors are further configured to execute the executable instructions to update the primary cell to have a fenced state and update the secondary cell to have the active state.

7. The computing system of claim 1 , wherein the one or more computer processors are further configured to execute the executable instructions to propagate the configuration information to a plurality of data stores distributed across the plurality of zones.

8. The computing system of claim 1 , wherein the one or more computer processors are further configured to execute the executable instructions to propagate updates to the states for the corresponding cells of the plurality of cells to data stores of other computing systems hosted in at least one different zone from the computing system, and wherein the propagation of the updates to the states for the corresponding cells enables the computing system and the other computing systems to provide a highly available service for managing the states of the corresponding cells.

9. The computing system of claim 8 , wherein the one or more computer processors are further configured to execute the executable instructions to identify a current state value for one of the primary cell or the secondary cell based on at least a quorum of the data stores, wherein the quorum of the data stores provides highly consistent data.

10. A method comprising:

receiving configuration information for an application, the configuration information comprising:

identifiers for individual cells of a plurality of cells of the application distributed across a plurality of zones, the plurality of cells including at least a primary cell and a secondary cell,

a defined state for individual cells of the plurality of cells,

one or more dependencies for the application, and

a failover workflow defining actions to take in a failover event based on the defined state for individual cells and based on the one or more dependencies;

receiving a request to initiate the failover event; and

updating the one or more dependencies for the application based on the failover workflow.

11. The method of claim 10 , wherein the configuration information defines the primary cell to have an active state and the secondary cell to have a standby state and wherein the failover workflow updates the primary cell to have a fenced state and updates the secondary cell to have the active state.

12. The method of claim 10 further comprising propagating the configuration information to a plurality of data stores distributed across the plurality of zones.

13. The method of claim 10 , wherein updating the one or more dependencies comprises updating traffic routing for the application between the primary cell and the secondary cell.

14. The method of claim 10 further comprising:

identifying that the primary cell changes state to a fenced state; and

routing at least a portion of read traffic to the primary cell for at least a duration of time after the primary cell changes state to the fenced state.

15. The method of claim 14 , wherein identifying that the primary cell changes state to the fenced state comprises identifying that at least a quorum of data store partitions across the plurality of zones indicates that a current state value of the primary cell is not an active state.

16. The method of claim 14 , wherein routing the at least a portion of read traffic to the primary cell for at least a duration of time after the primary cell changes state to the fenced state comprises routing instructions to at least one of a traffic management service or a Domain Name System (DNS) service provider.

17. A computing system comprising:

a computer-readable memory storing executable instructions; and

one or more computer processors in communication with the computer-readable memory, wherein the one or more computer processors are configured to execute the executable instructions to receive configuration information comprising:

identifiers for individual nodes of a plurality of nodes of a distributed application, the plurality of nodes including a primary node and at least one secondary node in individual zones of the distributed application, and

a defined state for individual nodes of the plurality of nodes, wherein individual nodes of the plurality of nodes are set to one of a number of states comprising an active state, in which the node processes read and write requests, a passive state, in which the node does not process read or write requests, and a fenced state, in which the node processes read requests but does not process write requests;

wherein the one or more computer processors are further configured to execute the executable instructions to:

identify that a primary node changes state from the active state, wherein the primary node changing state from the active state triggers a failover, and

perform one or more actions of a failover workflow when the failover is triggered, the one or more actions comprising transitioning a first of the at least one secondary node from the passive state to the active state based on the failover workflow.

18. The computing system of claim 17 , wherein the one or more actions further comprise storing a current state value of the first of the at least one secondary node as the active state in storages of a subset of the plurality of zones.

19. The computing system of claim 18 , wherein the one or more actions further comprise routing read traffic and write traffic to the first of the at least one secondary node transitioned to the active state.

20. The computing system of claim 17 , wherein the failover workflow defines one or more rules, including a rule that defines that only one node can operate in the active state at any one moment of time.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 9, 2024
From: DYE, NATHAN; JONES, HARVO REYZELL
To: AMAZON TECHNOLOGIES, INC.
Reel/Frame 067942/0341 →
Continuity (3)
Continuation 17862046 · Jul 11, 2022
Continuation 16698840 · Nov 27, 2019
Related Publication 20230305935A1 · Sep 28, 2023
Cited By (1)
US 12,271,276